予測子が別の値で分類される線形回帰を実行していますが、新しいデータのモデル化された応答を生成するのに問題があります。
最初に、予測子と誤差項のランダム値をいくつか生成します。次に、応答を作成します。予測子の係数は、カテゴリ変数の値に依存することに注意してください。予測子とそのカテゴリに基づいて計画行列を構成します。
set.seed(1)
category = c(rep("red", 5), rep("blue",5))
x1 = rnorm(10, mean = 1, sd = 1)
err = rnorm(10, mean = 0, sd = 1)
y = ifelse(category == "red", x1 * 2, x1 * 3)
y = y + err
df = data.frame(x1 = x1, category = category)
dm = as.data.frame(model.matrix(~ category + 0, data = df))
dm = dm * df$x1
fit = lm(y ~ as.matrix(dm) + 0, data = df)
# This line will not produce a warning
predictOne = predict.lm(fit, newdata = dm)
# This line WILL produce a warning
predictTwo = predict.lm(fit, newdata = dm[1:5,])
警告は次のとおりです。
「newdata」には 5 行ありましたが、見つかった変数には 10 行ありました
私が非常に間違っていない限り、変数名に問題はないはずです。(この掲示板には、その問題を示唆する議論が 1 つまたは 2 つあります。) 最初の予測は正常に実行されますが、2 番目の予測はうまくいかないことに注意してください。唯一の変更点は、2 番目の予測が計画行列の最初の 5 行のみを使用することです。
考え?