资源描述:
《R语言与回归分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、R语言与回归分析回归模型是计量里最基础也最常见的模型之一。究其原因,我想是因为在实际问题中我们并不知道总体分布如何,而且只有一组数据,那么试着对数据作回归分析将会是一个不错的选择。一、简单线性回归 简单的线性回归涉及到两个变量:一个是解释变量,通常称为x;另一个是被解释变量,通常称为y。回归会用常见的最小二乘算法拟合线性模型:yi=β0+β1xi+εi其中β0和β1是回归系数,εi表示误差。在R中,你可以通过函数lm()去计算他。Lm()用法如下:lm(formula,data,subset,weig
2、hts,na.action, method="qr",model=TRUE,x=FALSE,y=FALSE,qr=TRUE, singular.ok=TRUE,contrasts=NULL,offset,...) 参数是formula模型公式,例如y~x。公式中波浪号(~)左侧的是响应变量,右侧是预测变量。函数会估计回归系数β0和β1,分别以截距(intercept)和x的系数表示。 有三种方式可以实现最小二乘法的简单线性回归,假设数据wage1(可以通过names函数查看数据框各项名称)(
3、1)lm(wage1$wage~wage1$educ+wage1$exper)(2)lm(wage~educ+exper,data=wage1)(3)attach(wage1) lm(wage~educ+exper)#不要忘记处理完后用detach()解出关联 我们以数据wage1为例,可以看到工资与教育水平的线性关系:运行下列代码:library(foreign)A<-read.dta("D:/R/data/WAGE1.dta")#导入数据lm(wage~educ,data=A)>lm(wa
4、ge~educ,data=A)Call:lm(formula=wage~educ,data=A)Coefficients:(Intercept) educ -0.9049 0.5414 当然得到这些数据是不够的,我们必须要有足够的证据去证明我们所做的回归的合理性。那么如何获取回归的信息呢? 尝试运行以下代码:result<-lm(wage~educ,data=A)summary(result)我们可以得到以下结果:Call:lm(formula=wage~educ
5、,data=A)Residuals: Min 1Q Median 3Q Max-5.3396 -2.1501 -0.9674 1.1921 16.6085Coefficients: Estimate Std.Error tvalue Pr(>
6、t
7、) (Intercept) -0.90485 0.68497 -1.321 0.187 educ 0.54136 0.05325 10.167 <2
8、e-16***---Signif.codes: 0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1Residualstandarderror:3.378on524degreesoffreedomMultipleR-squared:0.1648, AdjustedR-squared:0.1632F-statistic:103.4on1and524DF, p-value:<2.2e-16 解读上述结果,我们不难看出,单从判决系数R-squared上看,回归结果是不理想的
9、,但是,从p值来看,我们还是可以得到回归系数是很显著地(注意,这里的P<0.05就可以认为拒绝回归系数为0,即回归变量与被解释变量无关的原择假设,选择备择假设)所以说我们的回归的效果不好但还是可以接受的。当然,这一点也可以通过做散点图给我们直观的印象: 但是影响薪酬的因素不只是education,可能还有其他的,比如工作经验,工作任期。为了更好地解释影响薪酬的因素,我们就必须用到多元线性回归。二、多元线性回归 还是使用lm函数。在公式的右侧指定多个预测变量,用加号(+)连接:>l
10、m(y~u+v+w) 显然,多元线性回归是简单的线性回归的扩展。可以有多个预测变量,还是用OLS计算多项式的系数。三变量的回归等同于这个线性模型:yi=β0+β1ui+β2vi+β3wi+εi 在R中,简单线性回归和多元线性回归都是用lm函数。只要在模型公式的右侧增加变量即可。输出中会有拟合的模型的系数:>result1<-lm(wage~educ+exper+tenure,data=A)>summa