1. 回归分析
定义: 自变量和因变量之间的关系,可以用回归方程是表达出来。
对于回归分析常用的数据格式以及函数:
备注:
1. 响应变量:因变量,
2. 预测变量:自变量,
3. 解释变量:总共的自变量,
4. ‘:’ 变量的交互项: 指的是两个变量对应元素的乘积,得到新的数据列
1.1 简单线性回归模型 lm()
使用women
中的数据:
women
fit = lm(weight~height, data = women) # 得到weight = -87.52 + 3.45 * height
summary(fit) # 查看fit的详细属性
fitted(fit) # 查看拟合之后的因变量的预测值
residuals(fit) # 查看残差 (实际值与预测值之间的差)
plot(women$height,women$weight,
xlab="Height (in inches)",
ylab="Weight (in pounds)")
abline(fit)
结果:
- Coefficients栏下的Estimate分别表示截距和系数。Pr(>|t|) 表示方差和截距的P值(显著性)。
- Multiple R-squared:R平方项(0.991)表明模型可以解释体重99.1%的方差,它也是实际和预测值之间相关
系数的平方(R^2 = r(ŶY)^2)------(也叫做模型的方差解释率,值越高越好
) 。
> summary(fit) # 查看fit的详细属性
Call:
lm(formula = weight ~ height, data = women)
Residuals:
Min 1Q Median 3Q Max
-1.7333 -1.1333 -0.3833 0.7417 3.1167
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -87.51667 5.93694 -14.74 1.71e-09 ***
height 3.45000 0.09114 37.85 1.09e-14 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.525 on 13 degrees of freedom
Multiple R-squared: 0.991, Adjusted R-squared: 0.9903
F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14
height 和 weight的点图,以及拟合直线
1.2 多项式回归模型
二项式回归模型,就是添加了一个自变量平方的项,来提高回归的预测精度。
使用women
中的数据:
# 多项式回归 (添加了一个自变量的平方项)
fit2 = lm(weight ~ height + I(height^2), data = women)
summary(fit2)
plot(women$height, women$weight)
lines(women$height,fitted(fit2)) # 拟合曲线 (横坐标和纵坐标)
结果:
- 二次项的t值为13.891, p值小于0.01,显著。 增加了拟合的优度。
> summary(fit2)
Call:
lm(formula = weight ~ height + I(height^2), data = women)
Residuals:
Min 1Q Median 3Q Max
-0.50941 -0.29611 -0.00941 0.28615 0.59706
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 261.87818 25.19677 10.393 2.36e-07 ***
height -7.34832 0.77769 -9.449 6.58e-07 ***
I(height^2) 0.08306 0.00598 13.891 9.32e-09 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.3841 on 12 degrees of freedom
Multiple R-squared: 0.9995, Adjusted R-squared: 0.9994
F-statistic: 1.139e+04 on 2 and 12 DF, p-value: < 2.2e-16
1.3 多元线性回归
当自变量的数目不止一个的时候,也就变成了多元回归拟合,最简单的是多元线性回归。
- 在
car
包中有一个scatterplotMatrix
函数,可以直接画出多元线性相关的拟合曲线,以及各个变量分布图。
states = data.frame(state.x77[,c("Murder", "Population", "Illiteracy", "Income", "Frost")])
cor(states)
#install.packages('car')
library(car)
# car库中的scatterplotMatrix 画出分布图以及拟合曲线,。。。
scatterplotMatrix(states, spread=FALSE, smoother.args=list(lty=2),
main="Scatter Plot Matrix")
2. 多元线性回归分析
fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)
summary(fit)
结果:
> summary(fit)
Call:
lm(formula = Murder ~ Population + Illiteracy + Income + Frost,
data = states)
Residuals:
Min 1Q Median 3Q Max
-4.7960 -1.6495 -0.0811 1.4815 7.6210
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.235e+00 3.866e+00 0.319 0.7510
Population 2.237e-04 9.052e-05 2.471 0.0173 *
Illiteracy 4.143e+00 8.744e-01 4.738 2.19e-05 ***
Income 6.442e-05 6.837e-04 0.094 0.9253
Frost 5.813e-04 1.005e-02 0.058 0.9541
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.535 on 45 degrees of freedom
Multiple R-squared: 0.567, Adjusted R-squared: 0.5285
F-statistic: 14.73 on 4 and 45 DF, p-value: 9.133e-08
结果分析:
回归系数的含义为:一个预测变量增加一个单位,其他预测变量保持不变时,因变量将要增加的数量。
例如本例中,文盲率的回归系数为4.14,表示控制人口、收入和温度不变时,文盲率上升1%,谋杀率将会上升4.14%,它的系数在p<0.001的水平下显著不为0。相反,Frost的系数没有显著不为0(p=0.954) ,表明当控制其他变量不变时,Frost与Murder
不呈线性相关。总体来看,所有的预测变量解释了各州谋杀率56.7%的方差。
1.4 有交互项的回归分析
交互项:指的是两组变量的各个元素的乘积,得到的一组新的变量。
mtcars
d = mtcars$hp*mtcars$wt
mtcars$d = d
fit <- lm(mpg ~ hp + wt + d, data=mtcars)
# hp:wt 就是hp和wt的乘积
fit2 <- lm(mpg ~ hp + wt + hp:wt, data=mtcars)
summary(fit)
结果:
Call:
lm(formula = mpg ~ hp + wt + hp:wt, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-3.0632 -1.6491 -0.7362 1.4211 4.5513
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 49.80842 3.60516 13.816 5.01e-14 ***
hp -0.12010 0.02470 -4.863 4.04e-05 ***
wt -8.21662 1.26971 -6.471 5.20e-07 ***
hp:wt 0.02785 0.00742 3.753 0.000811 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.153 on 28 degrees of freedom
Multiple R-squared: 0.8848, Adjusted R-squared: 0.8724
F-statistic: 71.66 on 3 and 28 DF, p-value: 2.981e-13
# fit 和 fit2 的值是一样的。
本列中得到的回归方程就是: mpg = 49.80 -0.12*hp -8.21*wt + 0.03*hp*wt
我们可以控制wt 在不同水平下,得到mpg和hp的关系。
library(effects)
mean(mtcars$wt) # 结果是3.2
sd(mtcars$wt) # 结果约等于1
# plot(effect(term, mod,, xlevels), multiline=TRUE) term: 交互项, mod: lm()的拟合模型, xlevels:交互相中某个变量的水平
plot(effect("hp:wt", fit,, list(wt=c(2.2,3.2,4.2))), multiline=TRUE) # 注意fit后面是双逗号
# wt取值的为平均值,以及平均值上下各一个方差的值
结果:
意义:交互项可以使两个自变量与因变量的联系更加紧密,
结果分析:
可以看到在wt = 4.2时候,hp 和 mpg之间的关系就是一条直线了。也就是说两组变量关系越来越弱, 几乎没有关系了。
注意:在所有的线性回归分析假设中,所有的零假设都应该是自变量和因变量不相关,因而在p<0.05 或者 p<0.01时,可以得出两个变量在两个水平下的显著相关。而且在解释显著相关时, 应该在重复样本实验中,能够得到这样的相关性或者更大相关性的概率则更大。