R语言学习DAY04:回归分析

All models are wrong, but some are useful —George Box

R本身是一门统计语言,主要用于统计分析,前面的语法部分算是基础,接下来开始进入统计模型应用。首先从最常用的回归分析说起。
有关线性回归分析模型的基本假定需要注意:1)关于随机干扰项的高斯-马尔科夫定理;2)关于自变量的:不存在共线性;3)关于模型的:模型设定正确。

  • 模型拟合
    lm函数:用最小二乘法估计模型参数
x <- seq(0,1,length.out = 100)
noise <- rnorm(n = 100, mean = 0, sd = 1)
beta0 <- 1
beta1 <- 2
y <- beta0 + beta1 * x + noise

model <- lm(y~x)
summary(model) #返回有关线性回归模型的内容
names(model) #查看模型中包含的内容

plot(y~x)
abline(model) #在图中增加拟合线
  • 模型预测
    predict函数
yConf <- predict(model, interval = "confidence")
yPred <- predict(model, interval = 'prediction')

plot(y~x, col = 'gray', pch = 16)
lines(yConf[,"lwr"]~x, col = 'black', lty = 3)
lines(yConf[,"upr"]~x, col = 'black', lty = 3)
lines(yPred[,"lwr"]~x, col = 'black', lty = 2)
lines(yPred[,"upr"]~x, col = 'black', lty = 2)
lines(yPred[,"fit"]~x, col = 'black', lty = 1)
  • 离散型自变量
    实际上就是方差分析,模型中会为离散型自变量的每一个水平估计一个回归系数,若要检验自变量是否对因变量有显著影响,不能单看每个系数的t检验,而应该通过方差分析方法。

模型检验

  • 正态性检验
    根据理论分析,可以将随机干扰项的正态性检验转化为对残差的正态性检验。利用stats包中的shapiro.test函数可以进行SW检验
  • 线性检验
    一般用绘制残差图的方式考察线性模型是否合适。如果线性不适合,需要引入二次项和交互项,在R中一般用I(x^2)表示引入x ^ 2以及x和x^2的交互项
  • 异方差检验
    如果模型中存在异方差,一般用加权最小二乘法,通过在lm()函数中添加参数weights =。如果不确定异方差的形式,可以通过nlm包中的gls函数,指定参数weights = varFixed(~x),通过迭代反复尝试合适的形式。
  • 异常值
    离群点:远离回归线的点,通常表现为因变量的异常值。用学生化删除残差判断离群点。个别的离群点对回归模型的影响不是很大,但需要注意成群的离群点。用rstudent函数计算
    杠杆点:远离自变量均值的点。用杠杆值判断杠杆点。用hatvalues函数计算
    高影响点:对回归线有重要影响的点。如果一个样本点的残差较大,且杠杆值也较大,则为高影响点,当改变该点坐标时会对回归参数产生较大影响。用COOK距离判断高影响点。
    car包中的influencePlot函数可以将三个指标用气泡图的形式绘制出来。
    需要注意的是,异常值只是相当于此模型而言的,若该点实际上是正常点,则需要考虑模型是否合适。
  • 多重共线性
    可以用car包中的vif()函数计算方差膨胀因子
    逐步回归法:用step()函数,它以AIC为准则自动筛选变量。

非参数回归

  • 局部多项式回归拟合:loess函数:指定参数span表示数据子集的获取范围,用于确定平滑效果,degree表示局部回归中的阶数,1表示线性回归,2表示二次回归

Logistic回归

glm函数建立广义线性模型,用参数family指定分布类型,logistic模型指定为binomial
predict函数进行预测,predict(model, data, type = 'response'
此外,还可以用mlogit包中的mlogit函数做多分类变量logistic回归,rms包中的lrm函数做顺序变量logistic回归,glmnet包中的glmnet函数做基于正则化的logistic回归

你可能感兴趣的:(R语言学习DAY04:回归分析)