如何在 r 中使用分类变量执行线性回归
线性回归是一种可以用来量化一个或多个预测变量与响应变量之间关系的方法。
通常,您可能希望使用一个或多个分类变量作为预测变量来拟合回归模型。
本教程提供了如何在 R 中使用分类变量执行线性回归的分步示例。
示例:R 中分类变量的线性回归
假设我们在 R 中有以下数据框,其中包含 12 名不同篮球运动员的三个变量的信息:
- 得分
- 练习所花的时间
- 使用的培训计划
#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节目
在此示例中,小时是连续变量,但程序是分类变量,可以采用三个可能的类别:程序 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
根据Estimate列中的值,我们可以编写拟合回归模型:
点 = 6.3013 + 0.9744(小时)+ 2.2949(程序 2)+ 6.8462(程序 3)
以下是如何解释结果中的系数值:
- 小时数:假设计划保持不变,每多花一小时练习,得分平均就会增加 0.9744 。
- p 值为 0.015,表明练习所花费的时间是 α = 0.05 水平得分的统计显着预测因子。
- Schedule2 :假设小时数保持不变,使用 Schedule 2 的玩家平均比使用 Schedule 1 的玩家多得分2.2949分。
- p 值为 0.078,这表明在 α = 0.05 水平上,使用程序 2 的玩家与使用程序 1 的玩家相比,得分没有统计上的显着差异。
- Schedule3 :假设小时数保持不变,使用 Schedule 3 的玩家平均比使用 Schedule 1 的玩家多得分2.2949分。
- p 值为 0.002,表明使用方案 3 的球员与使用方案 1 的球员相比,在 α = 0.05 水平上的得分存在统计上的显着差异。
使用拟合回归模型,我们可以根据训练所花费的总小时数和他们使用的程序来预测玩家的得分。
例如,我们可以使用以下代码来预测训练了 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 中的Predict()函数计算的值相匹配。
其他资源
以下教程解释了如何在 R 中执行其他常见任务: