文章目录
回归分析
- 通过一个或者多个变量预测响应变量的方法。
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8EokBER4-1593327054520)(https://img.yuanmabao.com/zijie/pic/2021/01/14/aiibu0jdu31.png)]
- 普通最小二乘(OLS)回归法,包括简单线性回归、多项式回归 和多元线性回归
- 回归是一个令人困惑的词,对于回归模型的拟合,R语言提供强大丰富的功能和选项。
OLS回归的使用场景
- OLS回归是通过预测变量的加权和预测量化的因变量
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pxgcwLJV-1593327054522)(https://img.yuanmabao.com/zijie/pic/2021/01/14/5a1uo2vpgh1.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8p5yyMIU-1593327054523)(https://img.yuanmabao.com/zijie/pic/2021/01/14/eodw4rvrncy.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z1inJUXW-1593327054525)(https://img.yuanmabao.com/zijie/pic/2021/01/14/hm4j3rtsqok)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2ma0QP6-1593327054527)(https://img.yuanmabao.com/zijie/pic/2021/01/14/z5fou54canr)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t5QQtRqD-1593327054528)(https://img.yuanmabao.com/zijie/pic/2021/01/14/s1gd5kjyeq0)]
- 线性实例
代码语言:javascript
复制fit <- lm(weight ~ height,data=women)
print(summary(fit))
print(women$heigh)
print(fitted(fit))
print(residuals(fit))
plot(women$height,women$weight,xlab = 'Height (in inches)',ylab = 'Weight(in Pounds)')
print(abline(fit))
代码语言:javascript
复制fit2 <- lm(weight ~ height I(height^2),data = women)
print(summary(fit2))
plot(women$height,women$weight,xlab = 'Height (in inches)',ylab='Weight(in lbs)')
lines(women$height,fitted(fit2))
代码语言:javascript
复制- 多项式等式可认为是线性模型,因为等式仍是预测变量的加权和形式。
- ![c2EbJGWOfgBDnqR](https://img.yuanmabao.com/zijie/pic/2021/01/14/xfgtoprtrsx)
- 多元线性归回
- 预测变量不止一个的时候简单线性归回就变成了多元线性回归,分析也稍微复杂一些。
- 多项式回归可以算是多元线性回归的特例:二次回归有两个预测变量(X和X2),三次回归有三个预测变量(X、X2和X3)。
- 简单线性回归示例
代码语言:javascript
复制fit <- lm(mpg ~ hp wt hp:wt,data=mtcars)
print(summary(fit))
# 标准方法
fit <- lm(weight ~height,data=women)
par(mfrow=c(2,2))
plot(fit)
- OLS回归的统计假设
- 正太性:预测变量固定时,因变量成正太分布,则残差值也应该是一个均值为0的正态分布。正态Q-Q图是在正态分布对应的值下,标准残差的概率图。若满足正态假设,那么图上的点应该落在45度角的直线上;若不是如此,那么就违反了正态性的假设。
- 独立性:变量是否相互独立。
- 线性:因变量和自变量线性相关,那么残差值与预测值没有任何系统关联。
- 同方差性:
- car包提供了大量的拟合和评价回归模型的能力
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-22mc5UCx-1593327054529)(https://img.yuanmabao.com/zijie/pic/2021/01/14/bt2y0gm30au)]
- 线性:通过成分残差分析图也称为片残差图,可以看看因变量和自变量之间是否呈现非线性关系。也可以看看是否有不同于已设定线性模型的系统偏差图形可用car包的crPlots()函数绘制。
- car包提供两个函数判断误差是否恒定。ncvTest()函数生成一个计分检验,零假设为误差方差不变备选假设为误差方差随着拟合值水平的变化而变化。若检验显著,则说明存在异方差性(误差方差不恒定)
代码语言:javascript
复制library(car)
result = ncvTest(fit)
print(result)
spreadLevelPlot(fit)
异常值分析
利群点
- 利群点是指那些模型预测效果不佳的观测点。他们通过有很大的或正或负的残差值(Yi-Yi‘)
代码语言:javascript
复制library(car)
outlierTest(fit)
高杠杆值点
- 高杠杆值观测点,即使与其他预测变量有关的利群点。简单化的话说就是有很多异常的因变量组合起来的,与因变量值观测点,即使与其他预测变量有关的利群点。简单化的话说就是有很多异常的因变量组合起来的,与因变量值杠杆值没有关系。
- 高杠杆值的观测点通过帽子统计量判断(hat statistics)。
代码语言:javascript
复制hat.plot <- function(fit){
p <- length(coefficients(fit))
n <- length(fitted(fit))
plot( hatvalues(fit), main='Index Plot of Hat Values')
abline(h=c(2,3)*p/n, col='red', lty=2)
identify(1:n, hatvalues(fit), names(hatvalues(fit)))
}
hat.plot(fit)
- 高杠杆值点可能是强影响点,也可能不是,这主要看是否是利群点。
强影响点
- 强影响点是即对模型参数估计值影响有些比例失衡的点。
- Cook距离(D统计量)以及变量添加图。
代码语言:javascript
复制autoff <- 4/(nrow(states)-length(fit$coefficients)-2)
plot(fit,which=4,cook.levels=cutoff)
abline(h=cutoff,lty=2,col='red')