从许多方面来看,回归分析都是统计学的核心。它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量、效标变量或结果变量)的方法。即通过已知的点来建立拟合模型,用给定的X值来预测Y值,找到一条合适的拟合曲线,算出合适的斜率和方差。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。
线性模型:
其中β0和β1是回归系数,ε表示误差。
在R中,拟合线性模型最基本的函数就是lm()。
实例:
物理学家James.D.Forbes试图通过水的沸点来估计海拔高度,他知道通过气压计测得的大气压可用于得到海拔高度,气压越低,高度越高,他测量了17个地方水的沸点(℉)及大气压数据,并且对数据作了简单的处理,得到了较为明确的数学关系,所提数据如下:
首先录入数据:
x=matrix(c(194.5,20.79,1.3179,131.79,194.3,20.79,1.3179,131.79,197.9,22.40,1.3502,
135.02,198.4,22.67,1.3555,135.55,199.4,23.15,1.3646,136.46,199.9,23.35,
1.3683,136.83,200.9,23.89,1.3782,137.82,201.1,23.99,1.3800,138.00,201.4,
24.02,1.3806,138.06,201.3,24.01,1.3805,138.05,203.6,25.14,1.4004,140.04,
204.6,26.57,1.4244,142.44,209.5,28.49,1.4547,145.47,208.6,27.76,1.4434,
144.34,210.7,29.04,1.4630,146.30,211.9,29.88,1.4754,147.54,212.2,30.06,
1.4780,147.80),ncol=4,byrow=T,dimnames=list(1:17,c('F','h','log','log100')))
数据结果为:
forbes=as.data.frame(x) #强制转换为数据框
plot(forbes$F,forbes$log100) #查看F和log100之间的关系
lm.sol=lm(log100~F,data=forbes) #拟合模型
summary(lm.sol)
abline(lm.sol,col="red")
可以得出预测模型为:
y = -42.13087 + 0.89546x
残差分析:
lm.res <- residuals(lm.sol) #残差分析
plot(lm.res)
text(12,lm.res[12],labels=12,adj=1.2)
identify(lm.res)
由图中可发现 12 那点偏离比较远,对结果影响较大,可以把奇异点剔除掉。
lm.up <- lm(log100~F,data=forbes,subset = -12)
summary(lm.up)
模型诊断:
par(mfrow=c(2,2))
plot(lm.up)