1.一元线性回归
lm():
lm(formula, data, subset, weights, na.action, method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, contrasts = NULL, offset,...)
formula为要拟合的模型;data为数据框或列表;subset样本观察值的子集;weights权重向量,应是数字向量或NULL;na.action为对缺失值的处理方法,默认为na.fail即返回错误,na.omit表示忽略缺失值,na.pass表示返回对象不变;method表明拟合的方法,包括“qr”,“model.frame”;model表示返回合适的模型框架;x表示返回模型矩阵;y表示返回响应;qr表示返回qr分解
2.多元线性回归
同样使用lm(),公式改变
包括:y~x,y~x+z,y~x*z,y~(x+z+m)^2等
逐步回归:对多元回归的结果进行逐步回归
step()
step(object, scope, scale = 0, direction = c("both","backward","forward"),trace = 1,keep = NULL, steps = 1000, k = 2,...)
object是线性模型;scope确定逐步搜索的范围,是一个公式或包含upper、lower的列表;direction确定逐步回归的方法,默认值"both";trace若为正值,则逐步回归分析的过程将打印出来;keep选择对象元素的子集并返回;steps表示回归的最大步数;k指AIC的自由度
3.回归诊断
残差诊断:是否存在异常值
可用$residual提取残差,通过绘制(残差~数据序号)或(残差~拟合值)散点图像,观察是否存在异常值
影响分析:强影响点
influence.measures():提供4种分析的汇总结果
infulence.measures(model)
model为模型
多重共线性诊断:
特征根分析:存在特征根接近0,说明存在多重共线性
求特征根eigen()
eigen(x, symmetric, only.values = FALSE, EISPACK = FALSE)
x是待计算的矩阵;symmetric为TRUE,则假设矩阵是对称的;only.values默认返回特征根和特征向量,若为TRUE则只返回特征根。
x必须是经过标准化和中心化后的矩阵,主对角线元素必须为1。可以使用cor()对矩阵计算相关系数,对矩阵进行标准化。
条件数:多重共线性的严重程度
kappa()
kappa(z, exact = FALSE, norm = NULL, method = c("qr", "direct"),...)
z为计算的矩阵;exact表示逻辑值,若为TRUE表示精确计算条件数,默认为近似计算;method选择使用的方法,默认为qr。
计算结果大于1000,说明多重共线性比较严重
方差扩大因子:
vif():DAAG包
vif(obj,digits=5)
obj为回归分析对象,digits为小数点位数。
方差扩大因子大于10,说明存在多重共线性。
4.岭回归:针对多重共线性
通过绘制岭迹图选择合适的K值
lm.ridge():MASS包
lm.ridge(formula, data, subset, na.action, lambda = 0, model = FALSE, x = FALSE, y = FALSE, contrasts = NULL,...)
formula是回归模型公式表达式;data是数据框;subset选择子集;na.action对缺失值进行处理;lambda是领参数的标量或矢量;model、x、y分别表示结果是否返回模型框架、设计矩阵和响应变量
通过绘制图,选择合适的lambda,然后进行回归,可以通过select()选择合适的k值即lambda
5.广义线性模型
glm()
glm(formula, family = gaussian, data, weights, subset, na.action, start = NULL, etastart, mustart, offset, control = list(...),...)
formula为拟合公式;family指定分布族,包括正态(gaussian)、二项(binomial)、泊松(poisson)、伽马(Gamma),还可以通过link指定连接函数,默认为family=gaussian(link=identity);offset指定常数部分;control用于对待估参数的范围进行设置
具体分布及对应的连接函数可参考相关帮助。