car :: bcPower中奇怪的行为(错误?)

时间:2014-05-28 10:06:02

标签: r

考虑数据集Kort

structure(list(V1 = c(-0.03, 0.22, -0.11, -0.01, 0.25, 0.29, 
-0.74, 0.23, 0.39, -0.04, 0.18, 0.19, 0.4, 0.21, 0.21, -0.01, 
-0.05, 0.02, -0.12, 0.37, -0.07, 0.51, 0.39, 0.14, 0.02, 0.73, 
-0.25, 0.44, 0.29), V2 = c(35.39, 34.33, 32.74, 34.72, 33.07, 
30.9, 29.89, 31.17, 31.62, 33.13, 30.64, 33.31, 33.61, 34.16, 
30.06, 30.06, 31.18, 25.57, 30.52, 32.43, 31.54, 29.6, 34.66, 
31.74, 27.22, 41, 32.02, 37.96, 29.25), V3 = c(37.24, 36.77, 
37.21, 41.16, 40.3, 42.16, 40.77, 39.59, 37, 38.32, 34.6, 38.1, 
36.07, 39.2, 36.97, 38.28, 38.72, 46.81, 39.63, 36, 45.33, 38.72, 
36.2, 40.94, 37.7, 42.44, 37.92, 39.87, 37.15), V4 = c(-36L, 
-18L, -2L, 20L, 37L, 39L, -7L, 31L, -23L, 32L, 73L, 10L, 14L, 
18L, 126L, 98L, 13L, 14L, 15L, 37L, 66L, 3L, -50L, 9L, 6L, -20L, 
4L, -26L, -2L), V5 = c(12.4, 10.5, 2.8, 9.5, 9.4, 10.7, 7.5, 
14.8, 10.9, 13.5, 11.5, 11.8, 13.6, 8.6, 13.6, 13.1, 14.3, 11.3, 
16.1, 14.5, 8.4, 15.4, 13.4, 14, 18.8, 17.4, 16.4, 16, 17.7), 
    V6 = c(27424L, 25597L, 20968L, 24730L, 25423L, 25801L, 23681L, 
    29527L, 26228L, 28262L, 27363L, 27134L, 27542L, 24647L, 28260L, 
    27922L, 29054L, 25650L, 30096L, 29103L, 24112L, 30035L, 28771L, 
    27818L, 32455L, 29722L, 30508L, 29896L, 31961L), V7 = c(68.8, 
    70.4, 61.6, 73.5, 71.8, 76.5, 72.7, 75.3, 71.7, 75, 72.9, 
    73.3, 73.7, 69, 72.7, 74.2, 73.4, 71.2, 76.4, 73, 62.5, 76, 
    73.7, 74.7, 74.3, 74.8, 74.6, 74.4, 74.4), V8 = c(8.1, 6.8, 
    11, 5.3, 6.3, 4.1, 5.5, 4, 5.9, 4.3, 5.5, 5.4, 4.2, 8.1, 
    5.2, 4.8, 4.4, 8.2, 3.8, 5.9, 12.9, 4.3, 5.2, 5, 3.6, 3.8, 
    4.6, 4.3, 4.5), V9 = c(0.38, 0.15, 0.16, 0.08, 0.12, 0.05, 
    0.07, 0.04, 0.08, 0.07, 0.13, 0.08, 0.08, 0.26, 0.05, 0.14, 
    0.05, 0.26, 0.03, 0.18, 0.26, 0.04, 0.04, 0.14, 0.05, 0, 
    0.02, 0.02, 0.1), V10 = c(9.8, 9.9, 19.4, 7, 9.2, 3, 8.5, 
    1.1, 3, 2.3, 5.1, 5.6, 1, 22.3, 4.4, 6.2, 2.2, 5.3, 1.5, 
    5, 18.7, 1.5, 3, 8.9, 1.6, 0, 5.1, 2.1, 3.6), V11 = c(6.3, 
    7.5, 5.5, 10.2, 5, 9.6, 9.3, 4.8, 4.3, 4.6, 4.1, 5.7, 6.4, 
    4, 7.2, 4.7, 4.2, 4.5, 7.6, 5.3, 6.2, 4.1, 4.9, 4.1, 5.1, 
    3.3, 5.4, 5, 5.6), V12 = c(153605L, 152867L, 115972L, 140341L, 
    139245L, 167038L, 143239L, 179712L, 135273L, 167487L, 160738L, 
    160648L, 154717L, 118800L, 168954L, 148412L, 147637L, 142615L, 
    210838L, 161840L, 114310L, 182670L, 160293L, 147747L, 192889L, 
    191077L, 164107L, 202051L, 192945L)), .Names = c("V1", "V2", 
"V3", "V4", "V5", "V6", "V7", "V8", "V9", "V10", "V11", "V12"
), class = "data.frame", row.names = c(NA, -29L))

回复是:

Kort$V12
 [1] 153605 152867 115972 140341 139245 167038 143239 179712 135273 167487
[11] 160738 160648 154717 118800 168954 148412 147637 142615 210838 161840
[21] 114310 182670 160293 147747 192889 191077 164107 202051 192945

使用car :: boxcox进行box-cox变换

boxcox(V12~.,data=Kort,lambda=seq(-4,4,4/10))

产生-2的最佳参数。使用转换响应 车:: bcPower

TVP<-bcPower(Kort$V12,lambda=-2)

TVP变成常量向量:

TVP
 [1] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
[20] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5

但是盒子cox变换应该是连续的地图!

1 个答案:

答案 0 :(得分:2)

我不认为这是一个错误,只打印出小数位数的限制。帮助文件表明计算是(U ^(lambda)-1)/ lambda,它非常接近1/2,其中U很大。您可以看到正确使用

计算TVP
TVP-0.5
# [1] -2.119138e-11 -2.139650e-11 -3.717610e-11 ...

options(digits=20)
TVP
# [1] 0.49999999997880861802 0.49999999997860350431 0.49999999996282390446 ...