线性模型
拟合模型
用lm()
函数拟合模型。
lm(formula = y ~ x1+x2+x3+...+xn,data)
formula:y是响应变量,x是预测变量。
指定模型的工具函数
(1)如果想在表示表达式字面上的含义而不是公式的含义,用恒等函数I()
。
获取模型信息
(1)首选用print()
查看模型信息的首选方法。
(2)利用formula(x)
函数显示拟合模型的公式。
(3)利用coef(x)
函数显示模型对象系数的列表。
(4)利用summary(x)
函数汇总线性模型的信息。
使用模型进行预测
(1)使用residuals(x)
函数获得残差向量。残差是实际值与预测值的差。
(2)使用fitted(x)
函数获取拟合模型的预测值。
(3)想用建立的拟合模型对新的数据集进行拟合,可以用predict()
函数。
predict(object,newdata,na.action = na.pass)
object:拟合模型
newdata:用来预测的新数据源
na.action:表示如何处理newdata中的NA值。
分析拟合结果
(1)计算拟合模型各个变量的置信区间:confint()
函数
conflint(object,parm,level = 0.95)
object :拟合的线性模型
parm:指定需要显示的变量。默认显示所有变量的置信区间。
level:指定置信水平。
(2)计算不同参数对响应变量的影响:influence.measures(model)
(3)获取方差分析的统计量:anova.lmlist
anova.lmlist(object,scale = 0,test = 'F')
scale:默认会从检验数据中计算一个估计值
test:默认进行F检验;指定'Chisq'进行卡方检验;指定'Cp'的Cp检验。
(4)获取线性模型对象的方差协方差矩阵:vcov(object)
(5)获取你和模型的离差(残差平方总和):deviance(object)
更新模型
使用update()
函数来更新模型。
update(object,formula = +0)
object:原拟合模型。
formula:公式中添加0作为变量表示不包含截距项。
最小二乘法的假设
1.方差齐性
定义:误差项的平方是常数值。
检验:进行ncvTest函数来检验异方差性 ncv.test(object)
2.非自相关性
定义:y的值彼此不相关。
检验:Durbin-watson检验。car
包的durbin.waston(object)
3.误差项服从正态分布
4.x的外生性
定义:对于所有x来说,误差线的期望值为0.
5.满秩
定义:任何一对预测变量之间都没有线性关系。
检验:在lm
函数中设置参数singular.ok = FALSE
稳健回归和线性回归
稳健回归
适用:存在异方差和异常值的数据。
方法:MASS
包的rlm()
函数
rlm(formula,data,method)
阻力回归
适用:包含异常值的数据。使用最小中位数平方和最小截平方的方法。
方法: MASS
包的lqs()
函数
lqs(formula,data,method)
子集选取和Shrinkage回归
变量的逐步选取
反复对模型添加和移除变量,试图逐步改善模型。当到头时会自动停止并返回一个新的模型。在这个过程中降低了RSS增加了模型的复杂度。AIC被从来度量添加的变量效果。AIC = -2 * log(L) + k * edf
优先考虑的模型应是AIC值最小的那一个
step(object,scale = 0,direction,steps = 1000,k = 2)
direction:指定'forward'意味变量仅仅被添加到模型;指定 'backward'意味变量仅仅从模型中移除;指定'both'意味着两者皆有。
steps:在函数中之前的最大迭代步。
岭回归
岭回归适用于预测变量之间存在相关性的数据(多重共线性)。
使用MASS
包中的lm.ridge()
函数
lm.ridge(formula,data)
Lasso
Lasso回归用于减少系数数目,从而减少它们对最终模型的影响。
lars
包中的lars()
函数
lars(x,y,type = "lasso")
x:预测变量矩阵
y:响应变量的向量