R语言与回归分析

更新时间:2023-06-04 03:37:31 阅读: 评论:0

R语言与回归分析
回归模型是计量里最基础也最常见的模型之一。究其原因,我想是因为在实际问题中我们并不知道总体分布如何,而且只有一组数据,那么试着对数据作回归分析将会是一个不错的选择。
一、简单线性回归
简单的线性回归涉及到两个变量:一个是解释变量,通常称为x;另一个是被解释变量,通常称为y。回归会用常见的最小二乘算法拟合线性模型:
yi = β0 + β1xi+εi
其中β0和β1是回归系数,εi表示误差。
在R中,你可以通过函数lm()去计算他。Lm()用法如下:
lm(formula, data, subt, weights, na.action,
method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE,  singular.ok = TRUE, contrasts = NULL, offt, ...)
参数是formula模型公式,例如y ~ x。公式中波浪号(~)左侧的是响应变量,右侧是预测变量。函数会估计回归系数β0和β1,分别以截距(intercept)和x的系数表示。
有三种方式可以实现最小二乘法的简单线性回归,假设数据
wage1(可以通过names函数查看数据框各项名称)
(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(wage~educ,data=A)
Call:accompany
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, data = A)
鸭的英文Residuals:
Min    1Q    Median    3Q    Max
-5.3396  -2.1501    -0.9674    1.1921    16.6085深海乌贼
Coefficients:
Estimate  Std.Error    t value  Pr(>|t|)
(Intercept)  -0.90485  0.68497  -1.321  0.187
educ        0.54136    0.05325 10.167  <2e-16 ***
---
Residual standarderror: 3.378 on 524 degrees of freedom
MultipleR-squared: 0.1648,    AdjustedR-squared: 0.1632
F-statistic: 103.4on 1 and 524 DF,  p-value: < 2.2e-16
解读上述结果,我们不难看出,单从判决系数R-squared上看,回归结果是不理想的,但是,从p值来看,我们还是可以得到回归系数是很显著地(注意,这里的P<0.05就可以认为拒绝回归系数为0,即回归变量与被解释变量无关的原择假设,选择备择假设)所以说我们的回归的效果不好但还是可以接受的。当然,这一点也可以通过做散点图给我们直观的印象:
半音阶口琴音阶图但是影响薪酬的因素不只是education,可能还有其他的,比如工作经验,工作任期。为了更好地解释影响薪酬的因素,我们就必须用到多元线性回归。
二、多元线性回归
还是使用lm函数。在公式的右侧指定多个预测变量,用加号(+)连接:
> lm(y ~ u + v+ w)
显然,多元线性回归是简单的线性回归的扩展。可以有多个预测变量,还是用OLS计算多项式的系数。三变量的回归等同于这个线性模型:
yi = β0 + β1ui+β2vi + β3wi + εi
在R中,简单线性回归和多元线性回归都是用lm函数。只要在模型公式的右侧增加变量即可。输出中会有拟合的模型的系数:
>result1<-lm(wage~educ+exper+tenure,data=A)
>summary(result1)
Call:
怎么调行距lm(formula = wage~ educ + exper + tenure, data = A)
Residuals:
Min    1Q    Median      3Q    Max
-866.29    -249.23  -51.07  189.62  2190.01
Coefficients:
Estimate    Std.Error    t value  Pr(>|t|)
(Intercept)    -276.240  106.702  -2.589  0.009778 **
educ          74.415      6.287  11.836  <2e-16 ***
exper        14.892      3.253  4.578  5.33e-06 ***
tenure        8.257      2.498  3.306  0.000983 ***
-
--
Residual standarderror: 374.3 on 931 degrees of freedom
MultipleR-squared: 0.1459,    AdjustedR-squared: 0.1431
F-statistic:    53 on 3 and 931 DF,  p-value: < 2.2e-16
白色栀子花我们将数据稍作平稳化处理,将wage换成log(wage),再来看看。
>plot(wage~educ,data=A)
>A$logwage<-log(A$wage)
>result1<-lm(logwage~educ+exper+tenure,data=A)
>summary(result1)
手机桌面壁纸图片Call:
lm(formula =logwage ~ educ + exper + tenure, data = A) Residuals:
Min      1Q    Median      3Q      Max
-2.05802    -0.29645  -0.03265  0.28788  1.42809
Coefficients:
Estimate  Std. Error  t value  Pr(>|t|)
(Intercept)  0.284360  0.104190  2.729  0.00656**
educ        0.092029  0.007330 12.555  < 2e-16 ***
exper      0.004121  0.001723  2.391  0.01714 *
tenure      0.022067  0.003094  7.133 3.29e-12 ***
---
Residual standarderror: 0.4409 on 522 degrees of freedom MultipleR-squared: 0.316,      AdjustedR-squared: 0.3121
F-statistic: 80.39on 3 and 522 DF,  p-value: < 2.2e-16
看得出,平稳化后的数据线性性是更加好的。
下面我们来提取回归分析的各项统计数据:
一些统计量和参数都被存储在lm或者summary中
output <-summary (result1)
SSR<- deviance(result1)#残差平方和;(另一种方法:RSquared <- output$r.squared)
LL<-logLik(result1) #对数似然统计量

本文发布于:2023-06-04 03:37:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/855359.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:回归   变量   线性   数据   模型
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图