R软件一元线性回归分析(非常详细)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

R软件一元线性回归分析合金钢强度与碳含量的数据

序号碳含量

/%

合金钢强度

/107pa

1 0.10 42.0

2 0.11 43.0

3 0.12 45.0

4 0.13 45.0

5 0.14 45.0

6 0.15 47.5

7 0.16 49.0

8 0.17 53.0

9 0.18 50.0

10 0.20 55.0

11 0.21 55.0

12 0.23 60.0

这里取碳含量为x是普通变量,取合金钢强度为y是随机变量

使用R软件对以上数据绘出散点图

程序如下:

>

x=matrix(c(0.1,42,0.11,43,0.12,45,0.13,45,0.14,45,0.15,47.5,0.16,49,0.17,53,0.18,50,0.2,55,0.21, 55,0.23,60),nrow=12,ncol=2,byrow=T,dimnames=list(1:12,c("C","E")))

>outputcost=as.data.frame(x)

>plot(outputcost$C,outputcost$E)

0.100.120.140.16

0.180.200.22

4550556

outputcost$C

o u t p u t c o s t $E

很显然这些点基本上(但并不精确地)落在一条直线上。 下面在之前数据录入的基础上做回归分析(程序接前文,下同)

> lm.sol = lm(E~C,data = outputcost) >summary(lm.sol)

得到以下结果:

Call:

lm(formula = E ~ C, data = outputcost)

Residuals:

Min 1Q Median 3Q Max -2.00449 -0.63600 -0.02401 0.71297 2.32451

Coefficients:

Estimate Std. Error t value Pr(>|t|) (Intercept) 28.083 1.567 17.92 6.27e-09 *** C 132.899 9.606 13.84 7.59e-08 *** ---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.309 on 10 degrees of freedom

Multiple R-squared: 0.9503, Adjusted R-squared: 0.9454 F-statistic: 191.4 on 1 and 10 DF, p-value: 7.585e-08

由计算结果分析:

常数项0∧β=28.083,变量(即碳含量)的系数1∧

β=132.899 得到回归方程:∧

y =28.083+132.899x

由于回归模型建立使用的是最小二乘法 ,而最小二乘法只是一种单纯的数学方法 ,存在着一定的缺陷 ,即不论变量间有无相关关系或有无显著线性相关关系 ,用最小二乘法都可以找到一条直线去拟合变量间关系。所以回归模型建立之后 ,还要对其进行显著性检验 :

在上面的结果中sd(0∧

β)=1.567,sd(1∧

β)=9.606。而对应于两个系数的P 值6.27e-09和7.59e-08,故是非常显著的。

关于方程的检验,残差的标准差∧

σ=1.309。相关系数的平方R 2 = 0.9503。关于F 分布的P 值为7.585e-08,也是非常显著的。

我们将得到的直线方程画在散点图上,程序如下: > abline(lm.sol)

得到散点图及相应的回归直线:

0.100.120.140.16

0.180.200.22

45505560

outputcost$C

o u t p u t c o s t $

E

下面分析残差:

在R 软件中,可用函数residuals ()计算回归方程的残差。程序如下:

> y.res=residuals(lm.sol); plot(y.res) 得到残差图

246

81012

-2-101

2

Index

y .r e s

从残差图可以看出,第8个点有些反常,这样我们用程序将第8个点的残差标出,程序如下:

>text(8,y.res[8],labels=8,adj=1.2)

246

81012

-2-101

2Index

y .r e s

8

这个点可能有问题,下面做简单处理,去掉该样本点,编程如下:>i=1:12;

outputcost2=as.data.frame(x[i!=8,])

lm2=lm(E~C,data=outputcost2)

summary(lm2)

结果输出如下:

Call:

lm(formula = E ~ C, data = outputcost2)

Residuals:

Min 1Q Median 3Q Max

-1.7567 -0.5067 -0.1308 0.6821 1.6787

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 28.124 1.335 21.06 5.75e-09 ***

C 131.293 8.217 15.98 6.51e-08 ***

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.115 on 9 degrees of freedom

Multiple R-squared: 0.966, Adjusted R-squared: 0.9622

F-statistic: 255.3 on 1 and 9 DF, p-value: 6.506e-08

由结果分析,去掉第8个点之后,回归方程系数变化不大,R2 相关系数有所提高,并且p-值变小了,这说明样本点8可以去掉。所得新模型较为理想。

总结程序如下:

>

x2=matrix(c(0.1,42,0.11,43,0.12,45,0.13,45,0.14,45,0.15,47.5,0.16,49 ,0.18,50,0.2,55,0.21,55,0.2 3,60),nrow=11,ncol=2,byrow=T,dimnames=list(1:11,c("C","E")))

>outputcost=as.data.frame(x2)

>plot(outputcost$C,outputcost$E)

>lm.sol = lm(E~C,data = outputcost)

相关文档
最新文档