R で単純線形回帰を実行する方法 (ステップバイステップ)
単純線形回帰は、単一の説明変数と単一の応答変数の間の関係を理解するために使用できる手法です。
簡単に言うと、この手法はデータに最もよく「適合」する線を見つけ、次の形式になります。
ŷ = b 0 + b 1 x
金:
- ŷ : 推定応答値
- b 0 : 回帰直線の原点
- b 1 : 回帰直線の傾き
この方程式は、説明変数と応答変数の関係を理解するのに役立ち、(統計的に有意であると仮定して) 説明変数の値に基づいて応答変数の値を予測するために使用できます。
このチュートリアルでは、R で単純な線形回帰を実行する方法を段階的に説明します。
ステップ 1: データをロードする
この例では、15 人の生徒に対して次の 2 つの変数を含む偽のデータセットを作成します。
- 特定の試験の合計学習時間数
- 試験の結果
説明変数として時間、応答変数として検査結果を使用して、単純な線形回帰モデルの当てはめを試みます。
次のコードは、R でこの偽のデータセットを作成する方法を示しています。
#create dataset df <- data.frame(hours=c(1, 2, 4, 5, 5, 6, 6, 7, 8, 10, 11, 11, 12, 12, 14), score=c(64, 66, 76, 73, 74, 81, 83, 82, 80, 88, 84, 82, 91, 93, 89)) #view first six rows of dataset head(df) hours score 1 1 64 2 2 66 3 4 76 4 5 73 5 5 74 6 6 81 #attach dataset to make it more convenient to work with attach(df)
ステップ 2: データを視覚化する
単純な線形回帰モデルを当てはめる前に、まずデータを視覚化して理解する必要があります。
まず、時間とスコアの関係がほぼ線形であることを確認します。これは、単純な線形回帰の大規模な基礎となる仮定だからです。単純な散布図を作成して、2 つの変数間の関係を視覚化できます。
scatter.smooth(hours, score, main=' Hours studied vs. Exam Score ')
グラフから、関係が線形であることがわかります。時間数が増加するにつれて、スコアも直線的に増加する傾向があります。
次に、箱ひげ図を作成して検査結果の分布を視覚化し、 外れ値をチェックします。デフォルトでは、R は、観測値が第 3 四分位 (Q3) より上の四分位範囲の 1.5 倍、または第 1 四分位 (Q1) より下の四分位範囲の 1.5 倍である場合、その観測値を外れ値として定義します。
観測値が外れ値である場合、箱ひげ図に小さな円が表示されます。
boxplot(score)
箱ひげ図には小さな円はありません。これは、データセットに外れ値がないことを意味します。
ステップ 3: 単純な線形回帰を実行する
変数間の関係が線形であり、外れ値がないことを確認したら、時間を説明変数として、スコアを応答変数として使用して、単純な線形回帰モデルの近似に進むことができます。
#fit simple linear regression model model <- lm(score~hours) #view model summary summary(model) Call: lm(formula = score ~ hours) Residuals: Min 1Q Median 3Q Max -5,140 -3,219 -1,193 2,816 5,772 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 65,334 2,106 31,023 1.41e-13 *** hours 1.982 0.248 7.995 2.25e-06 *** --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 3.641 on 13 degrees of freedom Multiple R-squared: 0.831, Adjusted R-squared: 0.818 F-statistic: 63.91 on 1 and 13 DF, p-value: 2.253e-06
モデルの概要から、近似された回帰式は次のとおりであることがわかります。
スコア = 65.334 + 1.982*(時間)
これは、学習時間が追加されるごとに、試験の平均スコアが1,982点増加することを意味します。元の値65,334は、0 時間勉強した生徒の予想される試験の平均スコアを示しています。
この方程式を使用して、学生の勉強時間に基づいて予想される試験の得点を求めることもできます。たとえば、10 時間勉強した生徒は、試験スコア85.15を達成する必要があります。
スコア = 65.334 + 1.982*(10) = 85.15
モデルの概要の残りの部分を解釈する方法は次のとおりです。
- Pr(>|t|):これはモデル係数に関連付けられた p 値です。時間の p 値 (2.25e-06) は 0.05 よりも大幅に小さいため、時間とスコアの間に統計的に有意な関連があると言えます。
- 多重 R 二乗:この数値は、試験の得点の変動のパーセンテージが勉強時間数によって説明できることを示しています。一般に、回帰モデルの R 二乗値が大きいほど、説明変数は応答変数の値をより適切に予測できます。この場合、スコアの変動の83.1%は勉強時間によって説明できます。
- 残差標準誤差:これは、観測値と回帰直線の間の平均距離です。この値が低いほど、回帰直線は観察されたデータとより一致することができます。この場合、試験で観察された平均スコアは、回帰直線によって予測されたスコアから3,641ポイント外れています。
- F 統計量と p 値: F 統計量 ( 63.91 ) と対応する p 値 ( 2.253e-06 ) は、回帰モデルの全体的な有意性、つまりモデル内の説明変数が変動を説明するのに役立つかどうかを示します。 。応答変数に。この例の p 値は 0.05 未満であるため、モデルは統計的に有意であり、時間はスコアの変動を説明するのに役立つと考えられます。
ステップ 4: 残差プロットを作成する
単純な線形回帰モデルをデータに当てはめた後の最後のステップは、残差プロットを作成することです。
線形回帰の重要な前提の 1 つは、回帰モデルの残差がほぼ正規分布し、説明変数の各レベルで等分散であるということです。これらの前提が満たされない場合、回帰モデルの結果は誤解を招くか、信頼性が低い可能性があります。
これらの仮定が満たされていることを確認するために、次の残差プロットを作成できます。
残差と近似値のプロット:このプロットは等分散性を確認するのに役立ちます。 X 軸は近似値を表示し、Y 軸は残差を表示します。残差がゼロ値の周囲でグラフ全体にランダムかつ均一に分布しているように見える限り、等分散性に違反していないと仮定できます。
#define residuals res <- resid(model) #produce residual vs. fitted plot plot(fitted(model), res) #add a horizontal line at 0 abline(0,0)
残差はゼロの周りにランダムに分散しているように見え、目立ったパターンを示さないため、この仮定は満たされます。
QQ プロット:このプロットは、残差が正規分布に従うかどうかを判断するのに役立ちます。プロット内のデータ値が 45 度の角度でほぼ直線に従っている場合、データは正規分布しています。
#create QQ plot for residuals qqnorm(res) #add a straight diagonal line to the plot qqline(res)
残差は 45 度の線からわずかに逸脱していますが、重大な懸念を引き起こすほどではありません。正規性の仮定が満たされていると仮定できます。
残差は正規分布し、等分散であるため、単純な線形回帰モデルの仮定が満たされていることを確認しました。したがって、モデルの出力は信頼できます。
このチュートリアルで使用される完全な R コードは、 ここにあります。