多重線形モデルからの関係を視覚的に提示する最良の方法


14

約6つの予測変数を含む線形モデルがあり、推定値、F値、p値などを表示します。しかし、単一の予測変数の個々の効果を表すのに最適な視覚的プロットは何かと思いまして応答変数?散布図?条件付きプロット?効果プロット?等?そのプロットをどのように解釈しますか?

Rでこれを行うので、可能であれば例を自由に提供してください。

編集:私は主に、特定の予測変数と応答変数との関係を提示することに関心があります。


インタラクション用語はありますか?あなたがそれらを持っている場合、プロットははるかに困難になります。
穂高

いいえ、たった6つの連続変数
AMathew

予測子ごとに1つ、計6つの回帰係数が既にあります。これらは表形式で表示される可能性がありますが、グラフで同じポイントを再度繰り返す理由は何ですか?
Penguin_Knight

3
技術に詳しくない視聴者の場合、推定や係数の計算方法について話すよりも、むしろプロットを見せたいです。
AMathew

2
@tony、なるほど。おそらく、これら2つのWebサイトは、R visregパッケージエラーバープロットを使用して回帰モデルを視覚化するインスピレーションを与えてくれるでしょう。
Penguin_Knight

回答:


11

私の意見では、あなたが説明したモデルは実際にはプロットに向いていません。プロットは、他の方法では理解しにくい複雑な情報(複雑な相互作用など)を表示するときに最適に機能するからです。ただし、モデル内の関係のプロットを表示する場合は、2つの主なオプションがあります。

  1. 生のデータポイントの散布図を使用して、対象の各予測変数と結果の間の二変量関係の一連のプロットを表示します。ラインの周りにエラーエンベロープをプロットします。
  2. オプション1のプロットを表示しますが、未加工のデータポイントを表示する代わりに、他の予測子のマージナル化されたデータポイントを表示します(つまり、他の予測子の寄与を差し引いた後)

オプション1の利点は、生データのばらつきを視聴者が評価できることです。オプション2の利点は、表示している焦点係数の標準誤差を実際にもたらした観測レベルの誤差を表示することです。

R Prestigecarパッケージ内のデータセットのデータを使用して、以下のRコードと各オプションのグラフを含めました。

## Raw data ##

mod <- lm(income ~ education + women, data = Prestige)
summary(mod)

# Create a scatterplot of education against income
plot(Prestige$education, Prestige$income, xlab = "Years of education", 
     ylab = "Occupational income", bty = "n", pch = 16, col = "grey")
# Create a dataframe representing the values on the predictors for which we 
# want predictions
pX <- expand.grid(education = seq(min(Prestige$education), max(Prestige$education), by = .1), 
                  women = mean(Prestige$women))
# Get predicted values
pY <- predict(mod, pX, se.fit = T)

lines(pX$education, pY$fit, lwd = 2) # Prediction line
lines(pX$education, pY$fit - pY$se.fit) # -1 SE
lines(pX$education, pY$fit + pY$se.fit) # +1 SE

生データポイントを使用したグラフ

## Adjusted (marginalized) data ##

mod <- lm(income ~ education + women, data = Prestige)
summary(mod)

# Calculate the values of income, marginalizing out the effect of percentage women
margin_income <- coef(mod)["(Intercept)"] + coef(mod)["education"] * Prestige$education + 
    coef(mod)["women"] * mean(Prestige$women) + residuals(mod)

# Create a scatterplot of education against income
plot(Prestige$education, margin_income, xlab = "Years of education", 
     ylab = "Adjusted income", bty = "n", pch = 16, col = "grey")
# Create a dataframe representing the values on the predictors for which we 
# want predictions
pX <- expand.grid(education = seq(min(Prestige$education), max(Prestige$education), by = .1), 
              women = mean(Prestige$women))
# Get predicted values
pY <- predict(mod, pX, se.fit = T)

lines(pX$education, pY$fit, lwd = 2) # Prediction line
lines(pX$education, pY$fit - pY$se.fit) # -1 SE
lines(pX$education, pY$fit + pY$se.fit) # +1 SE

調整済みデータ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.