R のカテゴリ変数を使用して線形回帰を実行する方法


線形回帰は、1 つ以上の予測変数と応答変数の間の関係を定量化するために使用できる方法です。

多くの場合、1 つ以上のカテゴリ変数を予測子変数として使用して回帰モデルを近似したい場合があります。

このチュートリアルでは、R のカテゴリ変数を使用して線形回帰を実行する方法を段階的に説明します。

例: R のカテゴリ変数を使用した線形回帰

R に、12 人の異なるバスケットボール選手の 3 つの変数に関する情報を含む次のデータ フレームがあるとします。

  • 得点
  • 練習に費やした時間
  • 使用したトレーニングプログラム
 #create data frame
df <- data. frame (points=c(7, 7, 9, 10, 13, 14, 12, 10, 16, 19, 22, 18),
                 hours=c(1, 2, 2, 3, 2, 6, 4, 3, 4, 5, 8, 6),
                 program=c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3))

#view data frame
df

   points hours program
1 7 1 1
2 7 2 1
3 9 2 1
4 10 3 1
5 13 2 2
6 14 6 2
7 12 4 2
8 10 3 2
9 16 4 3
10 19 5 3
11 22 8 3
12 18 6 3

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

ポイント = β 0 + β 1時間 + β 2プログラム

この例では、時間は連続変数ですが、プログラムは 3 つのカテゴリ (プログラム 1、プログラム 2、またはプログラム 3) を取ることができるカテゴリ変数です。

この回帰モデルを当てはめて、「プログラム」変数がカテゴリカル変数であることを R に伝えるには、 as.factor()を使用してそれを因子に変換してから、モデルを当てはめる必要があります。

 #convert 'program' to factor
df$program <- as. factor (df$program)

#fit linear regression model
fit <- lm(points ~ hours + program, data = df)

#view model summary
summary(fit)

Call:
lm(formula = points ~ hours + program, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-1.5192 -1.0064 -0.3590 0.8269 2.4551 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 6.3013 0.9462 6.660 0.000159 ***
hours 0.9744 0.3176 3.068 0.015401 *  
program2 2.2949 1.1369 2.019 0.078234 .  
program3 6.8462 1.5499 4.417 0.002235 ** 
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.403 on 8 degrees of freedom
Multiple R-squared: 0.9392, Adjusted R-squared: 0.9164 
F-statistic: 41.21 on 3 and 8 DF, p-value: 3.276e-05

「推定」列の値から、適合回帰モデルを書くことができます。

ポイント = 6.3013 + 0.9744 (時間) + 2.2949 (プログラム 2) + 6.8462 (プログラム 3)

結果の係数値を解釈する方法は次のとおりです。

  • 時間数: プログラムが一定のままであると仮定すると、練習に費やす時間がさらに 1 時間増えるごとに、得点は平均 0.9744増加します。
    • p 値は 0.015 で、α = 0.05 レベルでの得点の統計的に有意な予測因子は練習に費やした時間であることを示しています。
  • スケジュール 2 : 時間が一定であると仮定すると、スケジュール 2 を使用したプレーヤーは、スケジュール 1 を使用したプレーヤーよりも平均2.2949ポイント多く得点しました。
    • p 値は 0.078 で、レベル α = 0.05 では、プログラム 1 を使用したプレーヤーと比較して、プログラム 2 を使用したプレーヤーが獲得したポイントに統計的に有意な差がないことを示します。
  • スケジュール 3 : 時間が一定であると仮定すると、スケジュール 3 を使用したプレーヤーは、スケジュール 1 を使用したプレーヤーよりも平均2.2949ポイント多く得点しました。
    • p 値は 0.002 で、α = 0.05 レベルで、スケジュール 1 を使用したプレーヤーと比較して、スケジュール 3 を使用したプレーヤーが獲得したポイントに統計的に有意な差があることを示します。

適合回帰モデルを使用すると、トレーニングに費やした合計時間と使用したプログラムに基づいて、プレーヤーが獲得したポイント数を予測できます。

たとえば、次のコードを使用して、5 時間トレーニングし、トレーニング スケジュール 3 を使用したプレーヤーが獲得したポイントを予測できます。

 #define new player
new <- data. frame (hours=c(5), program=as. factor (c(3)))

#use the fitted model to predict the points for the new player
predict(fit, newdata=new)

       1 
18.01923 

モデルは、この新しいプレーヤーが18.01923ポイントを獲得すると予測します。

新しいプレイヤーの値を当てはめた回帰式に挿入することで、これが正しいことを確認できます。

  • ポイント = 6.3013 + 0.9744 (時間) + 2.2949 (プログラム 2) + 6.8462 (プログラム 3)
  • ポイント = 6.3013 + 0.9744(5) + 2.2949(0) + 6.8462(1)
  • ポイント = 18,019

これは、R のdetect()関数を使用して計算した値と一致します。

追加リソース

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

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

コメントを追加する

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