简单线性回归r语言:用R语言做数据分析
简单线性回归r语言:用R语言做数据分析> Y<-c(120 141 124 126 117 125 123 125 132 123 132 155 147)> X2<-c(50 20 20 30 30 50 60 50 40 55 40 40 20)例子:根据经验,在人的身高相等的情况下,血压的收缩Y与体重X1(千克)和年龄X2(岁数)有关,现收集了13个男子的数据,试建立Y关于X1、X2的线性回归方程。第一步、录入数据,建立多元线性数据模型> X1<-c(76.0 91.5 85.5 82.5 79.0 80.5 74.5 79.0 85.0 76.5 82.0 95.0 92.5)
在许多实际问题中影响因变量Y的自变量往往不止一个,通常设为p个,由于此时无法借助图形的帮助来确定模型,所以现在讨论一种最简单但又普遍的模型——多元线性回归模型。
设变量Y与X1 X2 ... Xp间有线性关系
Y = β0 β1X1 ... βpXp ξ
其中ξ~N(0 σ^2),β0 β1 ... βp和σ^2是未知参数,p>=2,称模型为多元线性回归模型。下面结合实例简单做一道多元线性回归题。
例子:根据经验,在人的身高相等的情况下,血压的收缩Y与体重X1(千克)和年龄X2(岁数)有关,现收集了13个男子的数据,试建立Y关于X1、X2的线性回归方程。
第一步、录入数据,建立多元线性数据模型
> X1<-c(76.0 91.5 85.5 82.5 79.0 80.5 74.5 79.0 85.0 76.5 82.0 95.0 92.5)
> X2<-c(50 20 20 30 30 50 60 50 40 55 40 40 20)
> Y<-c(120 141 124 126 117 125 123 125 132 123 132 155 147)
> blood<-data.frame(X1 X2 Y)
> lm.sol<-lm(Y~X1 X2 data = blood)
> summary(lm.sol)
Call:
lm(formula = Y ~ X1 X2 data = blood)
Residuals:
Min 1Q Median 3Q Max
-4.0404 -1.0183 0.4640 0.6908 4.3274
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -62.96336 16.99976 -3.704 0.004083 **
X1 2.13656 0.17534 12.185 2.53e-07 ***
X2 0.40022 0.08321 4.810 0.000713 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.854 on 10 degrees of freedom
Multiple R-squared: 0.9461 Adjusted R-squared: 0.9354
F-statistic: 87.84 on 2 and 10 DF p-value: 4.531e-07
从计算结果可以得到,回归系数与回归方程检验都是显著的,因此,回归方程为:
Y = -62.96 2.136X1 0.4002X2
第二步、参数的区间估计。
在讲解一元线性回归时,我们编写过"Beta.int.R"函数方程用于区间估计,这个方程也适用于多元线性回归。
> source("beta.int.R")
> beta.int(lm.sol)
Estimate Left Right
(Intercept) -62.9633591 -100.8411862 -25.0855320
X1 2.1365581 1.7458709 2.5272454
X2 0.4002162 0.2148077 0.5856246
第三步、作预测。
当多元线性回归方程经过检验是显著的,且其中每一个系数均显著不为0时,依然可用R语言中的predict()函数作多元回归预测。
假如我们要预测体重X1=80 年龄X2=40时相应的血压值Y的概率为0.95的预测区间,使用predict()函数计算如下:
> new<-data.frame(X1=80 X2=40)
> lm.predict<-predict(lm.sol new interval = "prediction" level = 0.95)
> lm.predict
fit lwr upr
1 123.9699 117.2889 130.6509
由此可知:预测值血压等于123.9699,相应的实际血压值Y的概率为0.95的预测区间为[117.29 130.65]
第四步、修正拟合模型。
在完成模型的计算时,有时还需要根据实际问题的背景,对模型进行适当的修正,如增加新的自变量,或对响应变量Y取对数或开放运算等。
R语言中的update()是一个非常方便修正模型的函数,该函数可以在原模型的基础上,通过加入或去掉某些项来得到新模型,其调用形式为:
new.model<-update(old.model new.formula)
在new.formula中,其相应的名字由“.”组成,可以被用作表示“旧模型公式中相应部分”,例如:
fm5<-lm(y~x1 x2 x3 x4 x5 data=production)
fm6<-update(fm5 .~. x6)
smf6<-updte(fm6 sqrt(.)~.)
fm5表示五个变量的多元回归,数据框架是production。fm6拟合一个附加的模型,这个模型中包含第六个变量。smf6模型中相应变量使用了平方根变换。