Rのlm()関数から残差を抽出する方法


次の構文を使用して、R のlm()関数から残差を抽出できます。

 fit$residuals

この例では、 lm()関数を使用して線形回帰モデルを近似し、結果にfitという名前を付けたと仮定します。

次の例は、この構文を実際に使用する方法を示しています。

関連: R の lm() 関数から R2 乗を抽出する方法

例: R の lm() から残差を抽出する方法

R に、10 人のバスケットボール選手のプレー時間、ファウルの合計、得点の合計に関する情報を含む次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
                 fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
                 points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

   minutes fouls points
1 5 5 6
2 10 5 8
3 13 3 8
4 14 4 7
5 20 2 14
6 22 1 10
7 26 3 22
8 34 2 24
9 38 1 28
10 40 1 30

次の重線形回帰モデルを近似したいとします。

ポイント = β 0 + β 1 (分) + β 2 (ファウル)

lm()関数を使用して、この回帰モデルを当てはめることができます。

 #fit multiple linear regression model
fit <- lm(points ~ minutes + fouls, data=df)

次に、 「fit$residuals」と入力してモデルから残差を抽出します。

 #extract residuals from model
fit$residuals

         1 2 3 4 5 6 7 
 2.0888729 -0.7982137 0.6371041 -3.5240982 1.9789676 -1.7920822 1.9306786 
         8 9 10 
-1.7048752 0.5692404 0.6144057

データベースには合計 10 個の観測値があったため、各観測値に 1 つずつ、合計 10 個の残差が存在します。

例えば:

  • 最初の観測値の残差は2,089です。
  • 2 番目の観測値の残差は-0.798です。
  • 3 番目の観測値の残差は0.637です。

等々。

必要に応じて、近似値に対する残差のプロットを作成できます。

 #store residuals in variable
res <- fit$residuals

#produce residual vs. fitted plot
plot(fitted(fit), res)

#add a horizontal line at 0 
abline(0,0)

X 軸は近似値を表示し、Y 軸は残差を表示します。

理想的には、等分散性の仮定が確実に満たされるように、残差は明確なパターンを持たずにゼロの周囲にランダムに分散する必要があります。

上の残差プロットでは、残差が明確なパターンがなくゼロの周囲にランダムに散在しているように見えることがわかります。これは、等分散性の仮定が満たされている可能性が高いことを意味します。

追加リソース

次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。

R で単純な線形回帰を実行する方法
R で重回帰を実行する方法
R で残差プロットを作成する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です