私のコメントのポイントは、予測子の組み合わせに対してRで適合モデルから出力を生成する標準的な方法です。あなたが望むプロットが何を示しているのかは本当に明確ではありませんが、私にとって意味のあるものは部分的なプロットです。ここで、1 つの変数がその範囲内で変化し、他の変数は共通の値に保持されます。ここでは、変数定数を保持するときに標本平均を使用します。
最初に、共変量のみのダミー データがいくつかありますが、これは任意の数に拡張されます
set.seed(1)
dat <- data.frame(y = rnorm(100))
dat <- transform(dat,
x1 = 0.2 + (0.4 * y) + rnorm(100),
x2 = 2.4 + (2.3 * y) + rnorm(100))
回帰モデルを当てはめる
mod <- lm(y ~ x1 + x2, data = dat)
次に、モデルを使用して予測するいくつかのデータ値。1 つの予測ですべての変数を実行し、結果のオブジェクトをサブセット化して、関連する行のみをプロットすることができます。別の方法として、より明確に (より冗長ではありますが)、各変数を個別に処理することもできます。以下では、モデルの共変量ごとに 1 つずつ、2 つのデータ フレームを作成します。データフレームでは、変化する共変量の範囲で100個の値を生成し、他の共変量の平均値を繰り返します。
pdatx1 <- with(dat, data.frame(x1 = seq(min(x1), max(x1), length = 100),
x2 = rep(mean(x2), 100)))
pdatx2 <- with(dat, data.frame(x1 = rep(mean(x1), 100),
x2 = seq(min(x2), max(x2), length = 100)))
直線を使用した線形回帰では、実際には 100 個の値は必要ありません。共変量の範囲の 2 つの端点で十分です。ただし、適合関数が線形でないモデルの場合は、より多くの場所で予測する必要があります。
次に、モデルを使用してこれらのデータ ポイントを予測します
pdatx1 <- transform(pdatx1, yhat = predict(mod, pdatx1))
pdatx2 <- transform(pdatx2, yhat = predict(mod, pdatx2))
これで、部分プロットを描画する準備が整いました。最初にy
軸の範囲を計算します - ここでもほとんど冗長ですが、信頼区間を追加する場合は、以下の値を含める必要があります。
ylim <- range(pdatx1$y, pdatx2$y, dat$y)
プロットするには (ここでは同じプロット デバイスに 2 つの図を配置します)、次のコードを使用できます。
layout(matrix(1:2, ncol = 2))
plot(y ~ x1, data = dat)
lines(yhat ~ x1, data = pdatx1, col = "red", lwd = 2)
plot(y ~ x2, data = dat)
lines(yhat ~ x2, data = pdatx2, col = "red", lwd = 2)
layout(1)
生産する