1

RでBox-Cox変換を計算する関数を作成しようとしています。ここで、式のラムダ(ラムダ)の値を繰り返してLを最大化します。最終的に必要なのはLのベクトルで、ラムダのすべての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のベクトルとして使用し、最後の反復が計算されます。

4

1 に答える 1

1

lambdas[]およびのインデックスを生成するには、seq_along を使用します。L[]

for(i in seq_along(lambdas)) {
   if(i != 0) {
     yprime <- (((y^lambdas[i])-1)/lambdas[i])
     } else { 
     yprime <- log(y)
              }
   st2 <- var(yprime)
   L[i] <- (((-df/2)*(log(st2))) + ((lambdas[i]-1)*(df/n)*(sum(log(y)))))
 }
plot(L)
于 2012-09-06T07:03:32.400 に答える