快捷搜索:  汽车  科技

简单线性回归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的线性回归方程。

简单线性回归r语言:用R语言做数据分析(1)

第一步、录入数据,建立多元线性数据模型

> 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模型中相应变量使用了平方根变换。

猜您喜欢: