我正在尝试创建一个函数来计算 R 中的 Box-Cox 变换,您可以在公式中迭代 lambda (lambdas) 的值以最大化 L。我最终想要的是 L 的向量,这样对于 lambda 中的所有 i ,有对应的L值。
y <- c(256,256,231,101,256,213,241,246,207,143,287,240,262,234,146,255,184,161,252,229,283,132,218,113,194,237,181,262,104)
df <- 28
n=29
lambdas <- seq(-3,3,0.001)
L <- c(rep(NA,length(lambdas)))
for(i in lambdas) {
if(i != 0) {
yprime <- (((y^i)-1)/i)
} else
{ yprime <- log(y)
}
st2 <- var(yprime)
L <- (((-df/2)*(log(st2))) + ((i-1)*(df/n)*(sum(log(y)))))
}
我通常以 L 作为 1 的向量结束,并计算最终迭代。