如何在 r 中创建虚拟变量(逐步)


虚拟变量是我们在回归分析中创建的一种变量,以便我们可以将分类变量表示为采用两个值之一的数值变量:零或一。

例如,假设我们有以下数据集,并希望使用年龄婚姻状况来预测收入

要将婚姻状况用作回归模型中的预测变量,我们需要将其转换为虚拟变量。

由于目前这是一个可以采用三个不同值(“单身”、“已婚”或“离婚”)的分类变量,因此我们需要创建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

以下是如何解释表中的回归系数:

  • 截距:截距代表零岁单身人士的平均收入。显然,年份不能为零,因此在这个特定的回归模型中单独解释截距本身是没有意义的。
  • 年龄:年龄每增加一年,收入平均增加 1,471.70 美元。由于 p 值 (0.004) 小于 0.05,因此年龄是统计上显着的收入预测因子。
  • 已婚:已婚人士的平均收入比单身人士多 2,479.70 美元。由于 p 值 (0.800) 不小于 0.05,因此这种差异在统计上不显着。
  • 离婚:离婚者的平均收入比单身者少 8,397.40 美元。由于 p 值 (0.532) 不小于 0.05,因此这种差异在统计上不显着。

由于这两个虚拟变量在统计上都不显着,因此我们可以从模型中删除婚姻状况作为预测因子,因为它似乎不会增加收入的预测价值。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注