3

この質問は、私の以前の質問と密接に関連しています。唯一の違いは、データをプロットするのではなく、生データを当てはめたいということです。最後の回答に従って自分で解決しようとしましたが、それでも行き詰まりました。

したがって、線形回帰の適合から、独立変数、適合変数、残差および標準化残差を取得したいと考えています。

Brian Diggs によって親切に作成された例を使用します。ありがとうございます。

dat <- data.frame(x1=rnorm(100), x2=rnorm(100,4,5), x3=rnorm(100,8,27), x4=rnorm(100,- 6,0.1),t=(1:100)+runif(100,-2,2)) 
dat <- transform(dat,  y=x1+4*x2+3.6*x3+4.7*x4+rnorm(100,3,50))

fit <- lm(y~x1+x2+x3+x4, data=dat)  # fit
dat$resid <- residuals(fit)
vars <- names(coef(fit))[-1]

次のステップは、以前と同じように行き詰まっています。回帰に使用される変数のみを取得し、それらを新しいデータセットにバインドしようとしています。以下を試みましたが、うまくいきません。この手順は間違っています。残差をバインドできますが、使用される変数はバインドできません。

fit.data <- cbind(predict(fit),as.name(names(coef(fit))[2]))

どんな助けでも本当に感謝しています。はい、今でも自分で R を教えています。

4

1 に答える 1

0

次元が一致しないものを結合することはできません。そのためにはリストが必要です。また、集計オブジェクトには適合値がないため、適合オブジェクトを使用することもできます (rstandard() では機能しない可能性がありますが、それについてはわかりません)。

mod.results <- list(vars = names(coef(fit))[-1],
                    fitted.values=fit$fitted.values, 
                    residuals = residuals(fit), 
                    std.resid = rstandard(fit))

それを関数に入れるのは簡単です:

> extr.res <- function(fit) {mod.results <- list(vars = names(coef(fit)), 
fitted.values=fit$fitted.values, residuals = residuals(fit), std.resid = rstandard(fit)) }
> str(extr.res(fit))
List of 4
 $ vars         : chr [1:5] "(Intercept)" "x1" "x2" "x3" ...
 $ fitted.values: Named num [1:100] -36.19 31.4 -2.59 -130.03 -1.12 ...
  ..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ...
 $ residuals    : Named num [1:100] -71.6 -21.2 -50.7 19 -58.5 ...
  ..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ...
 $              : Named num [1:100] -1.608 -0.487 -1.175 0.435 -1.297 ...
  ..- attr(*, "names")= chr [1:100] "1" "2" "3" "4" ...
于 2011-10-14T12:02:31.980 に答える