lmのデフォルトの診断プロットへの可能な拡張(Rおよび一般的に)?


11

plot.lm関数を少し掘り始めました。この関数はlmに6つのプロットを提供します。

  1. 近似値に対する残差のプロット
  2. フィットされた値に対するsqrt(|残差|)のスケール-ロケーションプロット
  3. 通常のQQプロット、クックの距離と行ラベルのプロット
  4. レバレッジに対する残差のプロット
  5. レバレッジ/(1-レバレッジ)に対するクックの距離のプロット

そして、私は現在のプロットの他の一般的な/有用な拡張が線形モデルにどのように存在するのか、そしてそれらをRでどのように行うことができるのでしょうか?(パッケージの記事へのリンクも歓迎します)

そのため、boxcox関数({MASS}から)は別の有用な診断プロットの例です(そのような答えはすばらしいでしょう)が、Rのlmの既存のデフォルト診断プロットのバリエーション/拡張についてもっと知りたいです(ただし、一般的なトピックに関する他の発言は常に歓迎されます)。

ここに私が意味することのいくつかの簡単な例があります:

#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)

#plot(y~x1+x2)
#summary(fit)

残差と各ポテンシャルxをプロットするには

plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one

qqplotに0-1行(この行は英語でどのように呼ばれますか?)を追加して、qqlineがどれだけ逸脱しているかを確認するには

plot(fit, which = 2); abline(0,1, col = "green")

外部スチューデント化残差を使用してqq-plotをプロットするには

# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent

私は基本的にlmerオブジェクトに対してこの質問をしました:stats.stackexchange.com/questions/17785/…そして、追加の回答が来ることを望んでいます。
マイケルビショップ

回答:


17

パッケージにcarは、線形モデルと一般化線形モデルの診断プロットに役立つ多くの機能があります。バニラRプロットと比較して、それらはしばしば追加情報で強化されます。example("<function>")以下の関数を試して、プロットがどのように見えるかを確認することをお勧めします。すべてのプロットは、Fox&Weisbergの第6章で詳しく説明されています。2011.アプライドリグレッションのRコンパニオン。第二版

  • residualPlots() 各予測子に対してピアソン残差をプロットします(Lowess近似を含む数値変数の散布図、因子の箱ひげ図)
  • marginalModelPlots() Lowess近似を含む、各数値予測子に対する応答変数の散布図を表示します
  • avPlots() 部分回帰プロットを表示します。各予測子について、これはa)他のすべての予測子に対する応答変数の回帰の残差b)他のすべての予測子に対する予測子の回帰の残差の散布図です
  • qqPlot() 信頼エンベロープを含む分位点-分位点プロットの場合
  • influenceIndexPlot() クックの距離、ハット値、外れ値テストのp値、および観測インデックスに対するスパイクプロットのスチューデント化された残差の各値を表示します
  • influencePlot()クックの距離に対応するバブルの大きさで、帽子の値に対するスチューデント化残差のバブルプロットを与え、も参照dfbetaPlots()してleveragePlots()
  • boxCox()Box-Coxパワー変換の変換パラメーターの対数尤度のプロファイルを表示しますλ
  • crPlots() コンポーネント+残差プロット用であり、そのバリエーションはCERESプロット(条件付き期待値とRESidualsを組み合わせたもの)であり、以下によって提供されます。 ceresPlots()
  • spreadLevelPlot() 非一定のエラー分散を評価するためのものであり、フィッティングされた値に対して絶対的なスチューデント化された残差を表示します
  • scatterplot() 軸に沿った箱ひげ図、2変量分布の信頼楕円、および信頼帯付きの予測線を含む、高度に改善された散布図を提供します
  • scatter3d()パッケージに基づいておりrgl、ワイヤーメッシュ信頼楕円体と予測面を含むインタラクティブな3D散布図を表示します。example("scatter3d")

さらに、3つの変数の一般的な分布を説明する別のアプローチについてはbplot()、パッケージから見てくださいrms


1
(+1)これは、私たち全員に役立つ非常に優れた概要です!
11

カラカル-これは素晴らしいリストです、ありがとう!よろしければ、私はこれを私のブログに再投稿する可能性があります(おそらく、より多くの人々がコメントを追加した後)
Tal Galili

@TalGalili確かに、私はそれで結構です。
カラカル、2011

4
これらのいくつかの例をここで見ることができます:statmethods.net/stats/rdiagnostics.html
Michael Bishop

カラカル-もう一度感謝します:)マイケル-それは良いリンクです。回答として追加したい場合(および、おそらくカラカル回答に表示されなかった関連プロットの一部をコピーして貼り付けます)-喜んで投票します...
Tal Galili

7

この回答は、外部パッケージではなく、ベースRで利用できるものに焦点を当てていますが、Foxのパッケージは採用する価値があると私は同意します。

関数influence()(またはそのラッパーinfluence.measures())は、ジャッキ化された統計を含む、モデル診断に必要なほとんどの情報を返します。Chambers and Hastie's Statistical Models in S(Wadsworth&Brooks、1992)で述べられているように、それを組み合わせてに使用できますsummary.lm()。いわゆる「ホワイトブック」(pp。130-131)で提供されている例の1つは、標準化された(分散が等しい残差)とスチューデント化された(SEの推定値が異なると同じ)残差、DFBETAS(回帰係数のSEでスケーリングされた係数)、DFFIT(観測値が削除されたときの近似値の変化)、およびDFFITS(同じ、単位分散あり)の測定は、それほど難しくありません。

例に基づいて、次のオブジェクトを定義します。

lms <- summary(fit)
lmi <- influence(fit)
e <- residuals(fit)
s <- lms$sigma
xxi <- diag(lms$cov.unscaled)
si <- lmi$sigma
h <- lmi$hat
bi <- coef(fit) - coef(lmi)

上記の量を次のように計算できます。

std. residuals    e / (s * (1-h)^.5
stud. residuals   e / (si * (1-h)^.5
dfbetas           bi / (si %o% xxi^.5 
dffit             h * e / (1-h)
dffits            h^.5 * e / (si * (1-h))

(これは、表4.1、131ページです。)

ChambersとHastieは、DFBETASを計算するための次のS / Rコードを提供します。

dfbetas <- function(fit, lms = summary(fit), lmi = lm.influence(fit)) {
  xxi <- diag(lms$cov.unscaled)
  si <- lmi$sigma
  bi <- coef(fit) - coef(lmi)
  bi / (si %o% xxi^0.5)
}

なぜ私はそのアプローチに言及するのですか?最初に、これは教育学的な観点から興味深いと思います(これは、入門統計コースを教えるときに使用しているものです)。これは、Rで近似された近似線形モデルの出力から計算できるものを説明できるためです(ただし、同じ他の統計パッケージに適用されます)。第2に、上記の量はRの単純なベクトルまたは行列として返されるため、必要なグラフィックスデバイス(格子またはggplot ---)を選択してこれらの統計を表示するか、既存のグラフィックスを使用して既存のグラフィックスを強化することもできます。プロット(たとえば、ポイントサイズを変化させることにより、散布図のDFFITS値を強調表示しますcex)。


非常に有益で有用な答え。あなたは、統計ロジックを文書化するのでR上の焦点は、その値から本当に損なわない
DWIN
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.