使用R语言进行回归分析

1、线性回归的基本函数

lm<-lm(formula,data=data.frame)
#其中formula为回归公式,data为数据源数据框
#例如:
lm<-lm(y~x1+x2,production)

2、与线性模型相关的函数

print()
原本为打印函数,当参数为线性模型对象时,会打印出模型中的系数以及截距值。

基于线性模型操作的对象有很多,比如:predict、summary、kappa、residuals、step、plot、print以及effects、coef、formula、labels、anova等
这里介绍常用的几个函数以及含义:
predict()
predict即预测函数,形式为predict(object、newdata=data.frame)输入线性模型对象,以及新的预测数据集,
即可以利用已经形成的线性模型进行预测

print()
原本为打印函数,当参数为线性模型对象时,会打印出模型中的系数以及截距值。

plot()
绘制回归诊断图,显示残差,拟合值以及一些诊断情况

formula()
提取公式,输入模型后输出模型起初的设定公式,例如y~x

residuals()
为计算残差值,输出对应每个自变量的残差结果

step()
做逐步回归分析,按照AIC最小值选择模型

summary()
返回模型的综合拟合结果,包括残差标准误、R方值,显著性,回归系数等

3、线性回归的基本参数估计及显著性检验

首先可以通过summary函数查看系数、截距、以及整体的P值

另外,通过source(beta.int.R) beta.int(lm)可以看到系数、截距的相关参数估计范围

4、线性模型的更新

update()
用来进行模型的修正的函数,基本用法为update(old.model,new.model)
在new.formula中,与old.formula对应的部分可以用.来表示,比如:
fm<-lm(y~x1+x2,data=products)
fm1<-update(fm,.~.+x3)
fm2<-update(fm1,sqrt(.)~.)

5、绘制自变量与因变量的拟合曲线

# 在进行回归公式建立前,通常需要绘制因变量与自变量的散点图,并绘制拟合曲线,
# 以大体估计因变量和自变量之间的关系来确定公式。

散点图比较简单,即用plot(x,y)即可完成

当绘制散点图的拟合曲线时,用到abline和lines两个函数,通常绘制一元线性模型曲线可以用abline
绘制多元非线性可以考虑用lines

基本用法例如:
toothpaste<-data.frame(
  X1=c(-0.05, 0.25,0.60,0,   0.25,0.20, 0.15,0.05,-0.15, 0.15,
       0.20, 0.10,0.40,0.45,0.35,0.30, 0.50,0.50, 0.40,-0.05,
       -0.05,-0.10,0.20,0.10,0.50,0.60,-0.05,0,    0.05, 0.55),
  X2=c( 5.50,6.75,7.25,5.50,7.00,6.50,6.75,5.25,5.25,6.00,
        6.50,6.25,7.00,6.90,6.80,6.80,7.10,7.00,6.80,6.50,
        6.25,6.00,6.50,7.00,6.80,6.80,6.50,5.75,5.80,6.80),
  Y =c( 7.38,8.51,9.52,7.50,9.33,8.28,8.75,7.87,7.10,8.00,
        7.89,8.15,9.10,8.86,8.90,8.87,9.26,9.00,8.75,7.95,
        7.65,7.27,8.00,8.50,8.75,9.21,8.27,7.67,7.93,9.26)
)

lm.sol<-lm(Y~X1+X2,data=toothpaste)
summary(lm.sol)

attach(toothpaste)
plot(Y~X1); abline(lm(Y~X1))

lm2.sol<-lm(Y~X2+I(X2^2))
x<-seq(min(X2), max(X2), len=200)
y<-predict(lm2.sol, data.frame(X2=x))
plot(Y~X2); lines(x,y)

6、逐步回归

用step函数可以实现逐步回归
用法为step(object,direction)  object 即为回归模型对象,direction 可以选择逐步回归的方向,比如是向前还是向后回归

7、logistic回归以及广义线性模型

目前对于广义线性模型笔者用到的并不多,相关资料可以参考:

https://blog.csdn.net/anshiquanshu/article/details/68941025


你可能感兴趣的:(数据分析-算法,模型,数据分析-R,R语言与数据挖掘)