医療データ奮闘記

公衆衛生大学院に入った内科系専門医が医師として培った現場感と大学院で培った統計の知識を交えながら、医療や疫学や統計に関する素朴な疑問や本音をつらつら書いています。

対数変換(log変換)して有意差がなくなる事もある??

stepwise法で(AICでなく)p値を使って変数選択をする際に対数変換するとしないのとで有意差が変わってしまうのは問題ではないかとカンファレンスで指摘した事がある。

指摘しておいて不安になったので実際やってみた。

height <- c(158,162,177,173,166,168)
hei_log <- log(height)
length <- c(300,320,330,340,320,336)
data_set <- data.frame(HEIGHT=height,LOG=hei_log,GOAL=length)
summary(lm(length~height,data=data_set))

## Call:
## lm(formula = length ~ height, data = data_set)

## Residuals:
##       1       2       3       4       5       6 
##  -8.710   4.595 -10.515   6.181  -2.101  10.551 

## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  44.2219   102.0472   0.433   0.6871  
## height        1.6740     0.6094   2.747   0.0515 .
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

## Residual standard error: 9.506 on 4 degrees of freedom
## Multiple R-squared:  0.6535,    Adjusted R-squared:  0.5669 
## F-statistic: 7.545 on 1 and 4 DF,  p-value: 0.05154

summary(lm(length~hei_log,data=data_set))

## Call:
## lm(formula = length ~ hei_log, data = data_set)

## Residuals:
##       1       2       3       4       5       6 
##  -8.292   4.631 -10.436   6.034  -2.274  10.336 

## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  -1124.8      512.1  -2.196   0.0930 .
## hei_log        283.1      100.0   2.830   0.0473 *
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

## Residual standard error: 9.321 on 4 degrees of freedom
## Multiple R-squared:  0.6669,    Adjusted R-squared:  0.5836 
## F-statistic: 8.008 on 1 and 4 DF,  p-value: 0.04735

まとめると、

変数 logなし(height) logあり(hei_log)
p value 0.0515 0.0473 *

という事で、「ありうるはありうる」という結論になった。

なぜそんな衣ついた表現なのかと言うと、ありうる状況を作るまでに身長の値を何度も変える必要があったからである。なので、ぎりぎりの有意差(0.05あたり)の変数がある場合は注意する、という程度で良いだろう。

確かに「その値が信頼区間の間で常に正かどうか」などを判断する場合には意味合いもそんなに変わらないのだろうという結論に至った。