以下のコードに問題があり、理解しようとしています。
x = rnorm(50)
y = 3 * x +rnorm(50)
df_eq <- data.frame(x, y)
model1 <- lm(y ~ x - 1)
model2 <- lm(df_eq[,2] ~ df_eq[,1] - 1)
xpred <- data.frame(x = seq(from = -2, to = 2, length = 5))
ypred <- predict(object = model1, newdata = xpred)
ypred2 <- predict(object = model2, newdata = xpred)
上記のコードでは、ypred と ypred2 の両方が同じ結果を生成することを期待しています。ypred (5 つの予測された「yhat」値) で期待している答えが得られますが、ypred2 にはエラーがあり、期待どおりの結果が得られません。
次のコードで ypred2 がエラーを生成する理由を誰か説明してもらえますか (少なくとも R 2.15.2 では)。
コードの唯一の重要な違いは、"model1" と "model2" の生成方法にあると思います。
私の理解では、予測関数では、newdata は、model1 および model2 オブジェクトに格納されているモデルに基づいて、「yhat」値を予測したい新しい一連の観測値を生成します。
何が根本的に違うのか
モデル1 <- lm(y ~ x - 1)
と
model2 <- lm(df_eq[,2] ~ df_eq[,1] - 1) ?
さらに重要なことは、答えが簡単な場合、誰かが R の「フードの下」との違いをどのように理解したかを説明できますか? 将来、この種の問題をどのように理解できるかを知ることができれば幸いです。上記のコードでオブジェクトの構造を調べてみましたが、答えには近づいていません。
前もって感謝します。