R语言-方差分析与回归分析
2021-03-22 本文已影响0人
ks_c
本文为 刘强,裴艳波,张贝贝. R语言与现代统计方法. 一书的阅读记录,仅有粗略的操作步骤。没有数理统计基础及相关数学知识的人慎用此书以及本文。
一、回归
fit <- lm(formula, data=data)
formula部分可以为y~x1+x2+x3
+ 添加一个自变量,两个自变量之间为并列。
:冒号表示两个自变量的交互项
* 星号表示两者相加且相乘(x1*x2:x1+x2+x1:x2)
lm(X1X4*X5,data=xxx)等同于lm(X1X4+X5+X4:X5,data=xxx)
fit #输出回归系数Coefficients:
summary(fit)#输出残差Residuals、回归系数Coefficients:、拟合程度R2和F
aov(fit)#自变量的平方和
回归诊断
- gauss-markov假设的诊断:参见:样本独立、正态、等方差
通过观察误差项是否满足以下假设来检验:
- 残差与拟合值独立
- 残差正态
par(mfrow=c(2,2))#
plot(fit)#四幅回归模型检验图
par()函数参见
plot(fit)- 左上:残差与拟合值的散点图,拟合值(y值)取横轴的值时,它的残差为纵轴的值。
- 右上:根号下学生化残差和拟合值的散点图
- 左下:残差的qq图
- 右下:cook distance红线为 等值线(of cook distance)
1.1. 异方差性
H0:误差的方差恒定
car包
library(car)
ncvTest(fit)
## Non-constant Variance Score Test
## Variance formula: ~ fitted.values
## Chisquare = 0.1310691, Df = 1, p = 0.71733
结果大于0.05则表示H0成立,不存在异方差性
car::spreadLevelPlot(fit)
## Suggested power transformation: -0.646129
图为学生化后的残差与拟合值的散点图,出现水平线表示等方差,斜线则为异方差(方差不齐)。
Suggested power transformation: -0.646129表示将数据进行 -0.646129次方的转换之后异方差性会减到最小。
spreadLevelPlot(fit)1.2. 自相关(自变量自己会影响自己,19年的物价会影响20年的物价)
- 当残差与自变量互为独立时,D=2 或 DW 越接近2,判断无自相关性把握越大。
- 当相邻两点的残差为正相关时,D<2,DW 越接近于0,正自相关性越强。
- 当相邻两点的残差为负相关时,D>2,DW 越接近于4,负自相关性越强。
durbin-waston:
car::durbinWatsonTest(fit)
## lag Autocorrelation D-W Statistic p-value
## 1 0.1345412 0.8877734 0.002
## Alternative hypothesis: rho != 0
- 多重共线性
矩阵x是列满秩矩阵-->各列变量之间线性无关
2.1. VIF
car::vif(fit)
vif2.2. 特征值法
接近0则有多多重共线性
x <- as.matrix(cbind(rep(1,nrow(data)),data[,-y]))
xx <- t(x)%*%x
xx
## rep(1, nrow(xxx)) X2 X3
## rep(1, nrow(xxx)) 11.0 3.479343e+05 1508505
## X2 347934.3 1.168701e+10 47854633475
## X3 1508504.8 4.785463e+10 206909714762
2.3. 条件数法
条件数ki
\lambdai趋近于0,则ki趋近于正无穷
- 强影响点
3.1. 异常值
3.2. 高杠杆值
3.3. 强影响点