首页 > 其他分享 >用R语言 做回归分析

用R语言 做回归分析

时间:2023-08-11 13:01:05浏览次数:49  
标签:分析 var1 语言 var3 回归 squared value AIC

使用R做回归分析整体上是比较常规的一类数据分析内容,下面我们具体的了解用R语言做回归分析的过程。

首先,我们先构造一个分析的数据集

x<-data.frame(y=c(102,115,124,135,148,156,162,176,183,195),
               var1=runif(10,min=1,max=50),
               var2=runif(10,min=100,max=200),
               var3=c(235,321,412,511,654,745,821,932,1020,1123))

接下来,我们进行简单的一元回归分析,选择y作为因变量,var1作为自变量。

一元线性回归的简单原理:假设有关系y=c+bx+e,其中c+bx 是y随x变化的部分,e是随机误差。可以很容易的用函数lm()求出回归参数b,c并作相应的假设检验。

model<-lm(y~var1,data=x)
 summary(model)

Call:
lm(formula = x$y ~ x$var1 + 1)

Residuals:
Min 1Q Median 3Q Max
-47.630 -18.654 -3.089 21.889 52.326

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 168.4453 15.2812 11.023 1.96e-09x$var1 -0.4947 0.4747 -1.042 0.311
---
Signif. codes: 0 ‘
’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 30.98 on 18 degrees of freedom
Multiple R-squared: 0.05692, Adjusted R-squared: 0.004525
F-statistic: 1.086 on 1 and 18 DF, p-value: 0.3111

从回归的结果来看,p值为0.311,变量var1不不显著,正常情况下p值小于0.05则认为有高的显著性水平。
另外,R方位0.05692 距离1太远,说明两者之间不存在相关性。

我们进一步也对,y和var3做线性回归分析

model<-lm(y~var3,data=x)
 summary(model)

Call:
lm(formula = y ~ var3, data = x)

Residuals:
Min 1Q Median 3Q Max
-3.0805 -0.9080 0.6566 1.0255 2.1451

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 81.431990 1.399442 58.19 8.45e-12var3 0.100632 0.001902 52.92 1.80e-11
---
Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.73 on 8 degrees of freedom
Multiple R-squared: 0.9972, Adjusted R-squared: 0.9968
F-statistic: 2801 on 1 and 8 DF, p-value: 1.802e-11

从结果来看,常数项和var3的显著性水平都非常理想,同事R方达到0.99,整个模型的拟合度很高,可以说明两者间存在强的线性相关。

接下来,我们可以利用这个模型做些预测

pre<-data.frame(var3=c(56,36))
 predict(model,pre,interval="prediction",level=0.95)
  
    fit      lwr      upr

1 87.06737 82.07491 92.05983
2 85.05474 80.01387 90.09560

以上是预测结果

接下来,我们进一步了解下多元线性回归,多元线性回归是在y与多个自变量之间建立模型,寻找他们之间的线性关系。

在多元回归分析过程中,由于我们不知道因变量和那几个自变量之间存在线性关系,如果一个一个的检验,整个过程将变得非常繁琐。
好在R中有自动进行逐步回归的函数,我们只要根据函数运行结果,选择合适模型,并检验各项参数就可以了。

接下来,看下具体的步骤,还是以之前的数据集作为分析样本,我们来了解下,如何进行逐步回归分析

model<-lm(y~.,data=x)
 summary(model)

Call:
lm(formula = y ~ ., data = x)

Residuals:
Min 1Q Median 3Q Max
-2.6684 -1.0831 0.5114 1.1158 2.3292

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 83.620109 5.047503 16.567 3.08e-06var1 -0.028906 0.057383 -0.504 0.632
var2 -0.009072 0.027438 -0.331 0.752
var3 0.100484 0.002414 41.621 1.29e-08

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

Residual standard error: 1.936 on 6 degrees of freedom
Multiple R-squared: 0.9973, Adjusted R-squared: 0.996
F-statistic: 745.2 on 3 and 6 DF, p-value: 4.191e-08

这里我们对y与所有自变量进行回归的结果来看,var1和var2的效果不显著,var3的显著性水平较高,说明这个模型并不是最优解。

mstep<-step(model)

Start: AIC=16.11
y ~ var1 + var2 + var3

Df Sum of Sq    RSS    AIC
  • var2 1 0.4 22.9 14.286
  • var1 1 1.0 23.4 14.520
    22.5 16.105
  • var3 1 6493.5 6516.0 70.794

Step: AIC=14.29
y ~ var1 + var3

Df Sum of Sq    RSS    AIC
  • var1 1 1.0 23.9 12.727
    22.9 14.286
  • var3 1 8136.6 8159.5 71.044

Step: AIC=12.73
y ~ var3

Df Sum of Sq    RSS    AIC

23.9 12.727

  • var3 1 8378.5 8402.4 69.337

从结果的AIC现象来看,最后一个只有y和var3进行回归时,AIC值最小,(注:逐步回归过程中,AIC值越小,说明模型的拟合度越好)

依据这个信息我们就可以建立模型model<-lm(y~var3,data=x)

当然,由于数据集的相对比较简单的关系,这里逐步回归的结果比较明显,现实的情况可能更为复杂,需要我们进行进一步的检验以及手动剔除参数等操作。

标签:分析,var1,语言,var3,回归,squared,value,AIC
From: https://blog.51cto.com/u_14682436/7046358

相关文章

  • 【C语言基础语法】2. 变量和数据类型
    目录一、变量和常量 1.1关键字 1.2数据类型 1.3变量名命名二、进制三、整型 3.1整型的输出 3.2整型的输入 3.3整型的分类四、字符 4.1字符的输出 4.2字符的输入 4.3ascill码表 4.4转义字符五、浮点型六、类型限定符七、格式化 7.1格式化输出 7.......
  • [数据分析与可视化] Python绘制数据地图5-MovingPandas绘图实例
    MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库,用于处理移动物体的轨迹数据。关于MovingPandas的使用见文章:MovingPandas入门指北,本文主要介绍三个MovingPandas的绘图实例。MovingPandas官方仓库地址为:movingpandas。MovingPandas官方示例代码仓库地址为:movin......
  • PHP 使用xhprof 分析程序
    PHP增加扩展xhrofgitclonehttps://github.com/longxinH/xhprof.git./xhprofcdxhprof/extension//path/to/php7/bin/phpize./configure--with-php-config=/path/to/php7/bin/php-configmake&&sudomakeinstallPHP配置增加ini[xhprof]extension=xhprof.so......
  • 7个顶级开源数据集来训练自然语言处理(NLP)和文本模型
    推荐:使用NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景 NLP现在是一个令人兴奋的领域,特别是在像AutoNLP这样的用例中,但很难掌握。开始使用NLP的主要问题是缺乏适当的指导和该领域的过度广度。很容易迷失在各种论文和代码中,试图吸收所有内容。要意识到的是,当涉及到NLP......
  • Nginx日志分析- AWK命令快速分析日志--封禁访问请求最多、最频繁的恶意ip
    Nginx日志常用分析命令示范(注:日志的格式不同,awk取的项不同。下面命令针对上面日志格式执行)1.分析日志的方法1)总请求数cd/usr/local/nginx/logs/wc-laccess.log|awk'{print$1}'166252)独立IP数awk'{print$1}'access.log|sort|uniq|wc-l4003)每秒客户端......
  • 使用awk分析nginx访问日志access.log
    1.awk简介awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数......
  • 时序分析:Python 中的 ARIMA 模型
    推荐:使用NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景什么是ARIMA模型?ARIMA模型是用于分析和预测时间序列数据的统计模型。ARIMA方法明确迎合了时间序列中的标准结构,为制作熟练的时间序列预测提供了一种简单而强大的方法。ARIMA代表自回归积分移动平均线。它结合了三......
  • C语言个人笔记(持续更新中)
    第一&二章概况1在UNIX、LINUX和Windows下的运行过程c语言执行过程:源代码.c--->(编译器/汇编器)--->目标代码.obj--->(链接器)--->可执行代码.exe编译器:将c文件编译为汇编语言汇编器:将c文件编译为机器语言链接器:有三种链接方式:在UNIX系统上编译不具备专门的C语言编译器,通常......
  • 一文详解自然语言处理两大任务与代码实战:NLU与NLG
    自然语言处理(NLP)涵盖了从基础理论到实际应用的广泛领域,本文深入探讨了NLP的关键概念,包括词向量、文本预处理、自然语言理解与生成、统计与规则驱动方法等,为读者提供了全面而深入的视角。作者TechLead,拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦......
  • CUDA Memcpy的分析
    CUDAMemcpy是一种CUDA库中的函数,可以在主机内存和设备内存之间复制数据。本文将从功能、使用方法、性能、优化等多个角度详细介绍CUDAMemcpy。一、功能CUDAMemcpy的主要功能是在设备内存和主机内存之间进行数据传输。它可以将主机上的数据发送到GPU上,也可以将GPU上的数据传输到......