R でダミー変数を作成する方法 (ステップバイステップ)


ダミー変数は、回帰分析で作成する変数の一種で、カテゴリカル変数を 0 または 1 の 2 つの値のいずれかを取る数値変数として表すことができます。

たとえば、次のデータセットがあり、年齢婚姻状況を使用して収入を予測したいとします。

婚姻状況を回帰モデルの予測変数として使用するには、それをダミー変数に変換する必要があります。

これは現在、3 つの異なる値 (「独身」、「既婚」、または「離婚」) を取ることができるカテゴリ変数であるため、 k -1 = 3-1 = 2 個のダミー変数を作成する必要があります。

このダミー変数を作成するには、最も頻繁に表示される「Single」を基本値としてそのままにしておきます。したがって、婚姻状況をダミー変数に変換する方法は次のとおりです。

このチュートリアルでは、R でこの正確なデータセットのダミー変数を作成し、これらのダミー変数を予測子として使用して回帰分析を実行する方法のステップバイステップの例を示します。

ステップ 1: データを作成する

まず、R でデータセットを作成しましょう。

 #create data frame
df <- data. frame (income=c(45000, 48000, 54000, 57000, 65000, 69000,
                          78000, 83000, 98000, 104000, 107000),
                 age=c(23, 25, 24, 29, 38, 36, 40, 59, 56, 64, 53),
                 status=c('Single', 'Single', 'Single', 'Single',
                          'Married', 'Single', 'Married', 'Divorced',
                          'Divorced', 'Married', 'Married'))

#view data frame
df

   income age status
1 45000 23 Single
2 48000 25 Single
3 54000 24 Single
4 57000 29 Single
5 65000 38 Married
6 69000 36 Single
7 78000 40 Married
8 83000 59 Divorced
9 98000 56 Divorced
10 104000 64 Married
11 107000 53 Married

ステップ 2: ダミー変数を作成する

次に、R のifelse()関数を使用してダミー変数を定義し、回帰モデルの構築に使用する最終データ フレームを定義します。

 #create dummy variables
married <- ifelse (df$status == ' Married ', 1, 0)
divorced <- ifelse (df$status == ' Divorced ', 1, 0)

#create data frame to use for regression
df_reg <- data. frame (income = df$income,
                     age = df$age,
                     married = married,
                     divorced = divorced)

#view data frame
df_reg

   income age married divorced
1 45000 23 0 0
2 48000 25 0 0
3 54000 24 0 0
4 57000 29 0 0
5 65000 38 1 0
6 69000 36 0 0
7 78000 40 1 0
8 83000 59 0 1
9 98000 56 0 1
10 104000 64 1 0
11 107000 53 1 0

ステップ 3: 線形回帰を実行する

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

 #create regression model
model <- lm (income ~ age + married + divorced, data=df_reg)

#view regression model output
summary(model)

Call:
lm(formula = income ~ age + married + divorced, data = df_reg)

Residuals:
    Min 1Q Median 3Q Max 
-9707.5 -5033.8 45.3 3390.4 12245.4 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 14276.1 10411.5 1.371 0.21266   
age 1471.7 354.4 4.152 0.00428 **
married 2479.7 9431.3 0.263 0.80018   
divorced -8397.4 12771.4 -0.658 0.53187   
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 8391 on 7 degrees of freedom
Multiple R-squared: 0.9008, Adjusted R-squared: 0.8584 
F-statistic: 21.2 on 3 and 7 DF, p-value: 0.0006865

近似された回帰直線は次のようになります。

収入 = 14,276.1 + 1,471.7*(年齢) + 2,479.7*(既婚) – 8,397.4*(離婚)

この方程式を使用して、年齢と婚姻状況に基づいて個人の推定収入を求めることができます。たとえば、35 歳で既婚者の推定収入は68,264 ドルになります。

収入 = 14,276.2 + 1,471.7*(35) + 2,479.7*(1) – 8,397.4*(0) = 68,264 ドル

表内の回帰係数を解釈する方法は次のとおりです。

  • 切片:切片は、0 歳の独身者の平均収入を表します。明らかに、ゼロ年を持つことはできないため、この特定の回帰モデルで切片を単独で解釈することは意味がありません。
  • 年齢:年齢が上がるごとに、収入は平均 1,471.70 ドル増加します。 p 値 (0.004) は 0.05 未満であるため、年齢は統計的に有意な収入の予測因子です。
  • 既婚者:既婚者の収入は、独身者よりも平均で 2,479.70 ドル高くなります。 p 値 (0.800) は 0.05 未満ではないため、この差は統計的に有意ではありません。
  • 離婚者:離婚者の収入は、独身者より平均 8,397.40 ドル少ないです。 p 値 (0.532) は 0.05 未満ではないため、この差は統計的に有意ではありません。

どちらのダミー変数も統計的に有意ではなかったため、収入に予測値を追加するようには見えないため、婚姻状況を予測変数としてモデルから削除することができました。

コメントを追加する

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