Author:龙箬
Data Science and Big Data Technology
Change the world with data!
CSDN@weixin_43975035
很多人喜欢把心事扔进河里,就变成了石头

多元相关与回归分析及R使用

1.变量间的关系分析

简单相关分析的R计算
> x1=c(171,175,159,155,152,158,154,164,168,166,159,164) #身高
> x2=c(57,64,41,38,35,44,41,51,57,49,47,46) #体重
> plot(x1,x2) #作散点图

> lxy<-function(x,y){n=length(x);sum(x*y)-sum(x)*sum(y)/n} #离均差乘积和函数
> lxy(x1,x1) #x1的离均差平方和
[1] 556.9167
> lxy(x2,x2) #x2的离均差平方和
[1] 813
> lxy(x1,x2) #x1与x2得离均差乘积和
[1] 645.5
> r=lxy(x1,x2)/sqrt(lxy(x1,x1)*lxy(x2,x2)) #显示用离均差乘积和计算得相关系数
> r
[1] 0.9593031

也可以使用相关系数函数cor() 计算相关系数

> cor(x1,x2) #计算相关系数
[1] 0.9593031

计算相关系数r的t值:

> tr=r/sqrt((1-r^2)/(n-2)) #相关系数假设检验t统计量
> tr
[1] 10.74298

也可以使用相关系数检验函数cor.test() 计算相关系数r的t值

> cor.test(x1,x2) #相关系数假设检验Pearson's product-moment correlationdata:  x1 and x2
t = 10.743, df = 10, p-value = 8.21e-07
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:0.8574875 0.9888163
sample estimates:cor
0.9593031
简单回归分析的R计算

以上述数据介绍建立直线回归方程的步骤

> x=x1
> y=x2
> b=lxy(x,y)/lxy(x,x) #线性回归方程斜率
> a=mean(y)-b*mean(x) #线性回归方程截距
> c(a=a,b=b) #显示线性回归方程估计值a          b
-140.36436    1.15906
> plot(x,y) #作散点图
> lines(x,a+b*x) #添估计方程线

方差分析

> SST=lxy(y,y) #因变量的离均差平方和
> SSR=b*lxy(x,y) #回归平方和
> SSE=SST-SSR # 误差平方和
> MSR=SSR/1 #回归均方
> MSE=SSE/(n-2) #误差均方
> F=MSR/MSE #F统计量
> c(SST=SST,SSR=SSR,SSE=SSE,MSR=MSR,MSE=MSE,F=F) #显示结果SST        SSR        SSE        MSR        MSE          F
813.000000 748.173425  64.826575 748.173425   6.482657 115.411531

t检验

> sy.x=sqrt(MSE) #估计标准差
> sb=sy.x/sqrt(lxy(x,x)) #离均差平方和
> t=b/sb #t统计量
> ta=qt(1-0.05/2,n-2) #t分位数
> c(sy.x=sy.x,sb=sb,t=t,ta=ta) #显示结果sy.x         sb          t         ta 2.5461063  0.1078901 10.7429759  2.2281389

也可以使用 线性回归拟合函数lm() 来拟合线性模型
例如如下用lm()函数拟合1978-2008年税收与财政收入的数据
(1)读入数据:

> yx=read.table("clipboard",header=T)
> yxy        x
1978  11.3262   5.1928
1979  11.4638   5.3782
1980  11.5993   5.7170
1981  11.7579   6.2989
1982  12.1233   7.0002
1983  18.6695   7.5559
1984  16.4286   9.4735
1985  20.0482  20.4079
1986  21.2201  20.9073
1987  21.9935  21.4036
1988  23.5724  23.9047
1989  26.6490  27.2740
1990  29.3710  28.2187
1991  31.4948  29.9017
1992  34.8337  32.9691
1993  43.4895  42.5530
1994  52.1810  51.2688
1995  62.4220  60.3804
1996  74.0799  69.0982
1997  86.5114  82.3404
1998  98.7595  92.6280
1999 114.4408 106.8258
2000 133.9523 125.8151
2001 163.8604 153.0138
2002 189.0364 176.3645
2003 217.1525 200.1731
2004 263.9647 241.6568
2005 316.4929 287.7854
2006 387.6020 348.0435
2007 513.2178 456.2197
2008 613.3035 542.1962

(2)拟合模型:

> fm=lm(y~x,data=yx) #一元线性回归模型
> fmCall:
lm(formula = y ~ x, data = yx)Coefficients:
(Intercept)            x  -1.197        1.116

(3)做回归曲线:

> plot(y~x,data=yx) #作散点图

> abline(fm) #添加回归线

(4)回归方程的假设检验
①模型的方差分析(ANOVA)

> anova(fm) #模型方差分析
Analysis of Variance TableResponse: yDf Sum Sq Mean Sq F value    Pr(>F)
x          1 712077  712077   27428 < 2.2e-16 ***
Residuals 29    753      26
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

②回归系数的t检验

> summary(fm) #回归系数t检验Call:
lm(formula = y ~ x, data = yx)Residuals:Min     1Q Median     3Q    Max
-6.630 -3.692 -1.535  5.338 11.432 Coefficients:Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.19656    1.16125   -1.03    0.311
x            1.11623    0.00674  165.61   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 5.095 on 29 degrees of freedom
Multiple R-squared:  0.9989,    Adjusted R-squared:  0.9989
F-statistic: 2.743e+04 on 1 and 29 DF,  p-value: < 2.2e-16

2.多元线性回归分析

多元线性回归模型建立

读入数据

> yx=read.table("clipboard",header=T) #加载数据
> yxy       x1       x2       x3     x4
1978  11.3262   36.241   5.1928    3.550 406.82
1979  11.4638   40.382   5.3782    4.120 415.92
1980  11.5993   45.178   5.7170    5.700 429.03
1981  11.7579   48.603   6.2989    8.904 441.65
1982  12.1233   53.018   7.0002   12.801 456.74
1983  18.6695   59.574   7.5559   15.903 467.07
1984  16.4286   72.067   9.4735   18.202 484.33
1985  20.0482   89.891  20.4079   20.667 501.12
1986  21.2201  102.014  20.9073   26.019 515.46
1987  21.9935  119.545  21.4036   32.202 530.60
1988  23.5724  149.223  23.9047   41.600 546.30
1989  26.6490  169.178  27.2740   49.802 557.07
1990  29.3710  185.984  28.2187   55.601 653.23
1991  31.4948  216.625  29.9017   72.258 660.91
1992  34.8337  266.519  32.9691   91.196 667.82
1993  43.4895  345.605  42.5530  112.710 674.68
1994  52.1810  466.700  51.2688  203.819 681.35
1995  62.4220  574.949  60.3804  234.999 688.55
1996  74.0799  668.505  69.0982  241.338 697.65
1997  86.5114  731.427  82.3404  269.672 708.00
1998  98.7595  769.672  92.6280  268.577 720.87
1999 114.4408  805.794 106.8258  298.963 727.91
2000 133.9523  882.281 125.8151  392.742 739.92
2001 163.8604  943.464 153.0138  421.933 744.32
2002 189.0364 1203.327 176.3645  513.782 753.60
2003 217.1525 1358.228 200.1731  704.835 760.75
2004 263.9647 1598.783 241.6568  955.391 768.23
2005 316.4929 1832.174 287.7854 1169.218 778.77
2006 387.6020 2119.235 348.0435 1409.714 782.44
2007 513.2178 2495.299 456.2197 1667.402 786.45
2008 613.3035 3006.700 542.1962 1778.898 790.48

建立多元线性回归模型

> fm=lm(y~x1+x2+x3+x4,data=yx) #显示多元线性回归模型
> fmCall:
lm(formula = y ~ x1 + x2 + x3 + x4, data = yx)Coefficients:
(Intercept)           x1           x2           x3  23.5321088   -0.0033866    1.1641150    0.0002919  x4  -0.0437416

标准化偏回归系数

> library(mvstats)
> coef.sd(fm) #标准化偏回归系数结果
$coef.sdx1            x2            x3            x4
-0.0174513678  1.0423522972  0.0009628564 -0.0371053994
多元线性回归模型检验
> summary(fm) #多元线性回归系数t检验Call:
lm(formula = y ~ x1 + x2 + x3 + x4, data = yx)Residuals:Min      1Q  Median      3Q     Max
-5.0229 -2.1354  0.3297  1.2639  6.9690 Coefficients:Estimate Std. Error t value Pr(>|t|)
(Intercept) 23.5321088  4.5990714   5.117 2.47e-05 ***
x1          -0.0033866  0.0080749  -0.419    0.678
x2           1.1641150  0.0404889  28.751  < 2e-16 ***
x3           0.0002919  0.0085527   0.034    0.973
x4          -0.0437416  0.0092638  -4.722 7.00e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 2.79 on 26 degrees of freedom
Multiple R-squared:  0.9997,    Adjusted R-squared:  0.9997
F-statistic: 2.289e+04 on 4 and 26 DF,  p-value: < 2.2e-16

3.多元线性相关分析

①矩阵相关分析
> cor(yx) #多元数据相关系数矩阵y        x1        x2        x3        x4
y  1.0000000 0.9871498 0.9994718 0.9912053 0.6956619
x1 0.9871498 1.0000000 0.9907018 0.9867664 0.7818066
x2 0.9994718 0.9907018 1.0000000 0.9917094 0.7154297
x3 0.9912053 0.9867664 0.9917094 1.0000000 0.7073820
x4 0.6956619 0.7818066 0.7154297 0.7073820 1.0000000

矩阵散点图函数pair()

> pairs(yx) # 多元数据散点图,yx为数值矩阵或数据框


相关矩阵检验函数pair()

> library(mvstats)
> corr.test(yx)  # 多元数据相关系数检验,yx为数值矩阵或数据框
corr test: y     x1     x2    x3 x4
y    0.000  0.000  0.000 0.000  0
x1  33.267  0.000  0.000 0.000  0
x2 165.614 39.214  0.000 0.000  0
x3  40.336 32.772 41.560 0.000  0
x4   5.215  6.752  5.514 5.389  0
lower is t value,upper is p value
②复相关分析
> R2=summary(fm)$r.sq #显示多元线性回归模型决定系数
> R2
[1] 0.9997
> R=sqrt(R2) # 显示多元数据复相关系数
> R
[1] 0.9999

4.回归变量的选择方法

变量选择准则
> library(leaps) #加载leaps包
> varsel=regsubsets(y~x1+x2+x3+x4,data=yx) # 多元数据线性回归变量选择模型
> result=summary(varsel) #变量选择方法结果
> data.frame(result$outmat,RSS=result$rss,R2=result$rsq) #RSS和决定系数准则结果展示x1 x2 x3 x4   RSS     R2
1  ( 1 )     *       752.9 0.9989
2  ( 1 )     *     * 203.9 0.9997
3  ( 1 )  *  *     * 202.3 0.9997
4  ( 1 )  *  *  *  * 202.3 0.9997
> data.frame(result$outmat,adjR2=result$adjr2,Cp=result$cp,BIC=result$bic) #调整决定系数,Cp和BCI准则结果展示x1 x2 x3 x4  adjR2     Cp    BIC
1  ( 1 )     *       0.9989 69.745 -205.6
2  ( 1 )     *     * 0.9997  1.199 -242.6
3  ( 1 )  *  *     * 0.9997  3.001 -239.4
4  ( 1 )  *  *  *  * 0.9997  5.000 -236.0
逐步回归分析

①向前引入法

> fm=lm(y~x1+x2+x3+x4,data=yx) #多元数据线性回归模型
> fm.step=step(fm,direction = "forward") #向前引入法变量选择结果
Start:  AIC=68.15
y ~ x1 + x2 + x3 + x4

②向后剔除法

> fm.step=step(fm,direction = "backward") #向后剔除法变量选择结果
Start:  AIC=68.15
y ~ x1 + x2 + x3 + x4Df Sum of Sq  RSS   AIC
- x3    1         0  202  66.2
- x1    1         1  204  66.4
<none>               202  68.2
- x4    1       174  376  85.4
- x2    1      6433 6635 174.4Step:  AIC=66.16
y ~ x1 + x2 + x4Df Sum of Sq  RSS   AIC
- x1    1         2  204  64.4
<none>               202  66.2
- x4    1       197  400  85.3
- x2    1      7382 7585 176.5Step:  AIC=64.39
y ~ x2 + x4Df Sum of Sq    RSS   AIC
<none>                 204  64.4
- x4    1       549    753 102.9
- x2    1    367655 367859 294.8

③逐步筛选法

> fm.step=step(fm,direction = "both") #逐步筛选法变量选择结果
Start:  AIC=68.15
y ~ x1 + x2 + x3 + x4Df Sum of Sq  RSS   AIC
- x3    1         0  202  66.2
- x1    1         1  204  66.4
<none>               202  68.2
- x4    1       174  376  85.4
- x2    1      6433 6635 174.4Step:  AIC=66.16
y ~ x1 + x2 + x4Df Sum of Sq  RSS   AIC
- x1    1         2  204  64.4
<none>               202  66.2
+ x3    1         0  202  68.2
- x4    1       197  400  85.3
- x2    1      7382 7585 176.5Step:  AIC=64.39
y ~ x2 + x4Df Sum of Sq    RSS   AIC
<none>                 204  64.4
+ x1    1         2    202  66.2
+ x3    1         0    204  66.4
- x4    1       549    753 102.9
- x2    1    367655 367859 294.8

参考致谢:
王斌会.多元统计分析及R语言建模(第四版)

如有侵权,请联系侵删
需要本实验源数据及代码的小伙伴请联系QQ:2225872659

多元相关与回归分析及R使用相关推荐

  1. R语言案例分析:财政收入的多元相关与回归分析

    R语言案例分析:财政收入的多元相关与回归分析 数据集下载 (mvcase3.xls)中的表Case3. y:财政收入  x1:国内生产总值  x2:能源消费总量  x3:从业人员总数  x4:全社会固 ...

  2. R 多元相关与回归分析

    多元相关与回归分析 1.数据描述 2.调入数据 3.多元相关分析 3.1 多元数据散点图 3.2 多元数据相关系数矩阵 3.3 多元数据相关系数检验 4.多元回归分析 4.1 求多元线性回归方程 4. ...

  3. (基础准备)多元相关与回归分析——一元线性相关与回归分析(一) python+numpy库 实现

    变量间的关系分析 变量间的关系有两类,一类是变量间存在完全确定的关系,即函数关系(y=2x+1),另一类是变量间不存在完全的确定关系,不能用准确的数学公式来表示出来,这些变量间存在具有十分密切的关系, ...

  4. R_多元相关和回归分析

    # Title : TODO # Objective : TODO # Created by: johnchen # Created on: 2020/4/23/023 library(openxls ...

  5. 【数据挖掘知识点七】相关与回归分析

    相关与回归分析 客观现象之间的数量联系存在两种不同类型:一种是函数关系,另一种是相关关系.当一个或几个变量取一定的值时,另一个变量有确定值与之对应,这种关系称为确定性的函数关系,一般把作为影响因素的变 ...

  6. 【随机过程】 6 - 多元相关

    多元相关 文章目录 多元相关 1. 概述 2. 三个角度看待相关矩阵 2.1 白化 2.2 PCA 2.2.1 原理 2.2.2 PCA与去相关 2.2.3 PCA几何图形影响因素 2.3 展开 2. ...

  7. plor 回归的r方_【回归分析】R、R平方与调整后的R平方

    原标题:[回归分析]R.R平方与调整后的R平方 回归分析,是对两个或两个以上变量之间的因果关系进行定量研究的一种统计分析方法.回归分析,也是我们进行需求预测常用的一种因果建模方法. 我们做回归分析时, ...

  8. 回归分析以及r语言实现(一)

    一.数据探索阶段 1.了解变量类型 做回归分析前,了解数据集是怎样的?那些是数值型变量,那些是分类变量,这一步是相当重要的. r代码: > class(mydata$Middle_Price) ...

  9. 多元线性回归分析(R语言)

    ▼多元线性回归分析▼ 一.多元线性回归模型 设变量Y与X1,X2,--,Xp之间有线性关系 其中    , 和  是未知参数,p≥2,称上公式为多元线性回归模型. 二.参数估计 我们根据多元线性回归模 ...

  10. r语言岭回归参数选择_数据分析中常见的七种回归分析以及R语言实现(三)---岭回归...

    在我们平时做回归的时候,大部分都是假定自变量和因变量是线性,但有时候自变量和因变量可能是非线性的,这时候我们就可能需要多项式回归了,多项式回归就是自变量和因变量是非线性所做的一个回归模型,其表达式: ...

最新文章

  1. Python “with” keyword
  2. mod php是什么意思,mod_php模式原理探析
  3. RocketMQ高性能之底层存储设计
  4. 网络管理:3分钟排障秘技,一招胜过十年功 | 文末有彩蛋
  5. C++使用stringstream分割字符串
  6. Django的信号机制详解
  7. redis——redis事务相关处理
  8. Windows版本nginx
  9. IROS2020 | 鲁棒全景视觉惯性导航系统ROVINS
  10. Spring Boot入门(3)-数据库操作
  11. GNS3与Wireshark相关联
  12. ArcGIS图解建模工具与DEM提取山脊、山谷线(水文分析、表面分析)
  13. 裴礼文数学分析中的典型问题与方法第3章一元微分学练习
  14. iOS开发 手势密码解锁和指纹TouchID解锁
  15. 校园外卖点餐系统——Day04【菜品管理业务开发】
  16. memcpy的F libc : FORTIFY: memcpy: prevented异常分析处理
  17. DJ3-5 死锁概述
  18. golang 1-helle golang
  19. C语言实例8——古典问题:兔子问题
  20. 基于深度学习的显著性检测用于遥感影像地物提取(U-2-NET)

热门文章

  1. round函数几位小数c语言,Excel中利用round函数保留两位小数实例详解
  2. Android技术开发 必备网站及使用工具
  3. idea在 keymap下的eclipse的快捷键
  4. R语言中,用多组散点图加折线,展现不同地区美女数量变化趋势?
  5. python自动更新excel数据_如何更新Excel数据?(刷新所有查询)
  6. 什么是cosmos?
  7. NVIDIA Forceware 260.89 Final 提升了多款游戏的性能
  8. html如何制作左侧导航栏,Html学习之十三(导航栏的制作)
  9. 【目标跟踪系列】SiamRpn卷积流程以及代码
  10. python2.X 画一个正方体