您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > R语言-线性回归-案例作业
1研究内容某同学想要在已知一个人的鞋码的情况下,估计这个人的身高。本文通过调查统计得到50名同龄人的身高(height)、体重(weight)以及鞋码(length)的数据(见附录),利用R语言对其中的身高和鞋码的数据进行相关分析,并计算其回归方程。2数据预处理2.1导入数据首先将收集到的表格数据保存在工作目录下print(Hello,ProfessorXiong:))[1]Hello,ProfessorXiong:)#读取表格文件data-read.csv(身高体重鞋码.csv)2.2数据检验数据导入完成后,检验数据的行和列。代码如下:#检查列和行的数量,应为3列,50行print(is.data.frame(data))[1]TRUEprint(ncol(data))[1]3print(nrow(data))[1]50检验结果显示,数据帧为3列50行。检验结果正常,可以对表格中的变量数据进行提取。2.3设置变量用字母x表示自变量鞋码,字母y表示因变量身高,字母z表示其他变量体重。代码如下:#x表示鞋码,y表示身高,z表示体重x-c(data$length)y-c(data$height)z-c(data$weight)3建立回归模型完成了数据的预处理之后,对数据进行回归分析找到其中的线性相关关系,并得出线性回归方程。3.1相关性分析相关系数:又叫相关系数或线性相关系数,一般用字母r表示,用来度量两个变量间的线性关系。根据相关系数的检验标准:相关系数的值介于-1与+1之间,即-1≤r≤+1。当r0时,表示两变量正相关,当r0时,表示两变量为负相关。当|r|=1时,表示两变量为完全线性相关即函数关系。当r=1时,称为完全正相关,而当r=-1时,称为完全负相关。当r=0时,表示两变量间无线性相关关系。判断相关性,先看P值,再看r值。代码如下:#相关分析(x,y是长度相同的向量,备择假设默认为“twosides”,#检验方法默认为Pearson检验,置信水平默认为0.95)cor.test(x,y)Pearson'sproduct-momentcorrelationdata:xandyt=11.489,df=48,p-value=2.219e-15alternativehypothesis:truecorrelationisnotequalto095percentconfidenceinterval:0.75890060.9162906sampleestimates:cor0.8563536从运行结果可以得到鞋码与身高的相关系数r=0.85640.8,P值=2.219×10-15,表明自变量鞋码与因变量身高两者高度相关,存在显著的正相关关系。3.2回归分析代码如下:#回归分析lm-lm(y~x)plot(y~x,xlab=鞋码,ylab=身高)#散点图abline(lm)#绘制线性回归线boxplot(y~x)summary(lm)Call:lm(formula=y~x)Residuals:Min1QMedian3QMax-9.4114-2.21200.45372.57176.5886Coefficients:EstimateStd.ErrortvaluePr(|t|)(Intercept)51.176910.29464.9718.89e-06***x2.93250.255211.4892.22e-15***---Signif.codes:0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1Residualstandarderror:3.735on48degreesoffreedomMultipleR-squared:0.7333,AdjustedR-squared:0.7278F-statistic:132on1and48DF,p-value:2.219e-15从运行结果可以看出:(1)回归系数的估计为β0==51.1769,β1=2.9325,相应的标准差为Sd(β0)=10.2946,Sd(β1)=0.2552,它们的p值均很小。故是非常显著的。图3-1身高与鞋码的散点图(2)相关分析:相关系数R2=0.7333,拟合优度较高,表明在身高与鞋码的回归关系的数据中,由73.3%的数据可以由身高和鞋码的线性关系来解释,可见两者之间有较强的相关关系。(3)方程的检验:F分布的p值为2.219×10-120.01,因此方程是非常显著的,这与R2的结果一致。(4)线性回归方程与回归系数的检验都是显著的,因此得到回归方程为y=51.1769+2.9325x4诊断线性回归4.1残差分析计算模型的各项残差值,并绘制残差图。代码如下:y.res-residuals(lm)#计算残差y.rst-rstandard(lm)#计算标准化残差y.stu-rstudent(lm)#学生化残差y.fit-predict(lm)#计算预测值op-par(mfrow=c(1,2))#将两张残差图一并输出plot(y.res~y.fit)#残差图plot(y.rst~y.fit)#标准化残差图par(op)(a)(b)图4-1标准化残差散点图根据图4-1的残差图(a)和标准化残差图(b)可以看出,残差具有相同的分布,且满足模型的各个假设条件。4.2拟合诊断通过诊断检验来验证模型的质量,简单绘制模型对象的回归诊断图。代码如下op-par(mfrow=c(2,2))plot(lm)par(op)从回归的四个图形结果来看:(1)残差图(ResidualsvsFitted):对残差和拟合值作图。残差和拟合值之间,数据点均匀分布在y=0的两侧,呈现出随机的分布,红色线是一条平稳的曲线并没有明显的形状特征,说明残差数据表现非常良好。(2)标准Q-Q图(NormalQ-Q):用来描述残差是否符合正态分布,图中的数据点按对角直线排列,趋于一条直线,并被对角直接穿过,可认为样本近似服从正态分布;(3)标准化残差方根散点图(Scale-Location):对标准化残差平方根和拟合值作图。类似与残差图,点的分布基本是随机的,红色线呈现出一条平稳的曲线,无明显的形状特征。图4-2诊断图(4)标准残差和杠杆对比图(ResidualsvsLeverage):对标准化残差和杠杆值作图,虚线表示的cook’s距离等高线,通常用Cook距离度量的回归影响点。5预测使用线性回归模型做预测。现已知我本人的鞋码是40,预测身高的点估计值,以及预测区间。代码如下:#预测point-data.frame(x=40)lm.pred-predict(lm,point,interval=prediction,level=0.95)lm.predfitlwrupr1168.4789160.894176.0638从运行结果可以看出,在95%的置信水平下,当x=40时,y的预测值为168.4789,预测区间为160.894~176.0638。也就是说,根据鞋码为40,可以预测出我的身高为168.47cm,预测范围在160.90cm至176.06cm之间。附录heightweightLengthheightweightLength16346361705541152443517255421786941164504017168401735341161503717873431544135173524215751371745841163463718070421665938168554014742351665640160433716570411765742170624117265411756342175554217662421755841174604117059411664542172574117850411685240170604117365431706542162524116546401755340169524117867421685440172674116558401777342178674216745391746242
本文标题:R语言-线性回归-案例作业
链接地址:https://www.777doc.com/doc-7331751 .html