我正在为线性回归模型执行 Box-Cox 转换,但在R
.
我已经获得了 Box-Cox 的最佳 lambda 值。我正在尝试执行以下操作R
:
opt.lambda.test<- lapply(temp.list, function(x) with(x, x[which.max(y)]))
从 Box-Cox 中提取最佳 lambda。temp.list
是回归结果列表。
opt.lambda.test
[[1]]
[1] 0.77
[[2]]
[1] 3.46
然后我把它变成一个向量:
vec.lambda <- unlist(opt.lambda.test)
我有一个数据框,在这个例子中,有 2 列。这是一个片段:
x_1 x_2
[1,] 99.81974 99.43289
[2,] 102.20328 103.68653
....
完整的数据框只是:
x_1 <- rnorm(100,mean=100,sd=1)
x_2 <- rnorm(100,mean=100,sd=4)
x.temp1<-cbind(x_1,x_2)
在我正在分析的实际数据中,列的行数不会相同。
任何人,我希望数据框的每一列都被提升到vec.lambda
. 在这种情况下,x_1
$^{0.77}$ 和x_2
$^{3.46}$ 等等。的长度vec.lamba
将始终等于数据帧的列数。
但是,如果vec.lambda == 0
我希望将列转换为:$log(x_{i})$。我无法让第一部分工作,所以我希望在这个数据框操作的条件方面和普通的旧数据框操作方面得到一些帮助。
x.test.1 <- apply(x.temp1,2,function(x) x^vec.lambda)
是我幼稚的尝试没有奏效吗?