通过示例快速理解二次回归

当两个变量有线性关系时,通常使用简单线性回归测定它们的关系。但变量间有二次关系时,应该使用二次回归进行拟合。本文介绍R如何实现二次回归。

示例

假设我们希望理解工作时长与幸福感之间的关系。现收集到下面数据集,包括每周工作时长以及调查反馈的幸福感(0~100):

#create data
data <- data.frame(hours=c(6, 9, 12, 14, 30, 35, 40, 47, 51, 55, 60),
                   happiness=c(14, 28, 50, 70, 89, 94, 90, 75, 59, 44, 27))

#view data 
data

#    hours happiness
# 1      6        14
# 2      9        28
# 3     12        50
# 4     14        70
# 5     30        89
# 6     35        94
# 7     40        90
# 8     47        75
# 9     51        59
# 10    55        44
# 11    60        27

首先我们利用散点图看下变量之间的关系:

plot(data$hours, data$happiness, pch=16)

在这里插入图片描述

上图明显看到变量之间不是线性关系。下面我们使用简单线性回归模型看下数据拟合情况:

# 拟合简单线性模型
linearModel <- lm(happiness ~ hours, data=data)

# 查看模型概要信息
summary(linearModel)

# Call:
# lm(formula = happiness ~ hours, data = data)
# 
# Residuals:
#    Min     1Q Median     3Q    Max 
# -39.34 -21.99  -2.03  23.50  35.11 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)  
# (Intercept)  48.4531    17.3288   2.796   0.0208 *
# hours         0.2981     0.4599   0.648   0.5331  
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 28.72 on 9 degrees of freedom
# Multiple R-squared:  0.0446,	Adjusted R-squared:  -0.06156 
# F-statistic: 0.4201 on 1 and 9 DF,  p-value: 0.5331

通过Multiple R-squared: 0.0446表明模型仅能解释4.46%幸福感 。下面我们采用二次回归模型:

# 创建新的二次变量
data$hours2 <- data$hours^2

# 拟合二次回归模型
quadraticModel <- lm(happiness ~ hours + hours2, data=data)

# 查看模型概要信息
summary(quadraticModel)

# Call:
# lm(formula = happiness ~ hours + hours2, data = data)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -6.2484 -3.7429 -0.1812  1.1464 13.6678 
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -18.25364    6.18507  -2.951   0.0184 *  
# hours         6.74436    0.48551  13.891 6.98e-07 ***
# hours2       -0.10120    0.00746 -13.565 8.38e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 6.218 on 8 degrees of freedom
# Multiple R-squared:  0.9602,	Adjusted R-squared:  0.9502 
# F-statistic: 96.49 on 2 and 8 DF,  p-value: 2.51e-06

这次我们看到模型可以解释96.2%的幸福感方差。下面利用可视化方式查看模型拟合数据情况:

# 创建时长序列
hourValues <- seq(0, 60, 0.1)

# 使用二次模型预测幸福感
happinessPredict <- predict(quadraticModel, list(hours=hourValues, hours2=hourValues^2))

# 创建原始数据的散点图
plot(data$hours, data$happiness, pch=16)
# 基于二次回归增加预测线
lines(hourValues, happinessPredict, col='blue')

在这里插入图片描述

可以看到二次回归模型拟合效果非常好。我们再看看二次模型的输出信息:

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -18.25364    6.18507  -2.951   0.0184 *  
hours         6.74436    0.48551  13.891 6.98e-07 ***
hours2       -0.10120    0.00746 -13.565 8.38e-07 ***

基于上面的输出信息,二次回归模型应该为:

** Happiness = -0.1012(hours) 2 {^2} 2 + 6.7444(hours) – 18.2536

我们可以利用这个方程基于每周工作时长来计算幸福感。

例如,一个每周工作60小时的人的幸福水平预计为22.09:
幸福= -0.1012(60) 2 {^2} 2 + 6.7444(60)- 18.2536 = 22.09

相反,每周工作30小时的人的幸福水平预计为92.99:
幸福= -0.1012(30) 2 {^2} 2 + 6.7444(30)- 18.2536 = 92.99

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值