2

lmオブジェクトの係数を置き換えることは可能ですか?

私は以下がうまくいくと思いました

# sample data 
set.seed(2157010)
x1 <- 1998:2011
x2 <- x1 + rnorm(length(x1))
y <- 3*x1 + rnorm(length(x1))
fit <- lm( y ~ x1 + x2)

# view origional coefficeints
coef(fit)

# replace coefficent with new values
fit$coef(fit$coef[2:3]) <- c(5, 1)

# view new coefficents
coef(fit)

どんな援助も大歓迎です

4

1 に答える 1

3

コードにエラーがほとんどないため、コードを再現することはできません。これがあなたの間違いも示す修正されたバージョンです:

set.seed(2157010) #forgot set.
x1 <- 1998:2011
x2 <- x1 + rnorm(length(x1))
y <- 3*x2 + rnorm(length(x1)) #you had x, not x1 or x2
fit <- lm( y ~ x1 + x2)

# view original coefficients
coef(fit)
 (Intercept)           x1           x2 
260.55645444  -0.04276353   2.91272272 

# replace coefficients with new values, use whole name which is coefficients:
fit$coefficients[2:3] <- c(5, 1)

# view new coefficents
coef(fit)
(Intercept)          x1          x2 
260.5565      5.0000      1.0000 

したがって、問題は、出力fit$coefのコンポーネントの名前が実際にはであるにもかかわらず、を使用していたことでした。省略形は値の取得には機能しますが、設定には機能しません。これは、という名前の新しいコンポーネントを作成し、関数が。の値を抽出したためです。lmcoefficientscoefcoeffit$coefficient

于 2013-03-14T18:51:48.767 に答える