1. > x=iris[which(iris$Species=="setosa"),1:4]
  2. > plot(x)

首先是简单的肉眼观察数据之间相关性

多元回归相较于一元回归的最主要困难可能就是变量的选择,如下面的例子

使用Swiss数据集(R内置)

Swiss Fertility and Socioeconomic Indicators(1888) Data

建立多元线性回归

  1. > s=lm(Fertility~.,data=swiss)
  2. > print(s)
  3.  
  4. Call:
  5. lm(formula = Fertility ~ ., data = swiss)
  6.  
  7. Coefficients:
  8. (Intercept) Agriculture Examination Education
  9. 66.9152 -0.1721 -0.2580 -0.8709
  10. Catholic Infant.Mortality
  11. 0.1041 1.0770
  12.  
  13. > summary(s)#模型汇总信息
  14.  
  15. Call:
  16. lm(formula = Fertility ~ ., data = swiss)
  17.  
  18. Residuals:
  19. Min 1Q Median 3Q Max
  20. -15.2743 -5.2617 0.5032 4.1198 15.3213
  21.  
  22. Coefficients:
  23. Estimate Std. Error t value Pr(>|t|)
  24. (Intercept) 66.91518 10.70604 6.250 1.91e-07 ***
  25. Agriculture -0.17211 0.07030 -2.448 0.01873 *
  26. Examination -0.25801 0.25388 -1.016 0.31546
  27. Education -0.87094 0.18303 -4.758 2.43e-05 ***
  28. Catholic 0.10412 0.03526 2.953 0.00519 **
  29. Infant.Mortality 1.07705 0.38172 2.822 0.00734 **
  30. ---
  31. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 1
  32.  
  33. Residual standard error: 7.165 on 41 degrees of freedom
  34. Multiple R-squared: 0.7067, Adjusted R-squared: 0.671
  35. F-statistic: 19.76 on 5 and 41 DF, p-value: 5.594e-10

可从summary可看出Examination的Pr=0.31546,明显大于0.05,显著性水平有点问题。

将Examination剔除后,看看

  1. > k=lm(Fertility~Agriculture+Education+Catholic+Infant.Mortality,data=swiss)
  2. > print(k)
  3.  
  4. Call:
  5. lm(formula = Fertility ~ Agriculture + Education + Catholic +
  6. Infant.Mortality, data = swiss)
  7.  
  8. Coefficients:
  9. (Intercept) Agriculture Education Catholic
  10. 62.1013 -0.1546 -0.9803 0.1247
  11. Infant.Mortality
  12. 1.0784
  13.  
  14. > summary(k)
  15.  
  16. Call:
  17. lm(formula = Fertility ~ Agriculture + Education + Catholic +
  18. Infant.Mortality, data = swiss)
  19.  
  20. Residuals:
  21. Min 1Q Median 3Q Max
  22. -14.6765 -6.0522 0.7514 3.1664 16.1422
  23.  
  24. Coefficients:
  25. Estimate Std. Error t value Pr(>|t|)
  26. (Intercept) 62.10131 9.60489 6.466 8.49e-08 ***
  27. Agriculture -0.15462 0.06819 -2.267 0.02857 *
  28. Education -0.98026 0.14814 -6.617 5.14e-08 ***
  29. Catholic 0.12467 0.02889 4.315 9.50e-05 ***
  30. Infant.Mortality 1.07844 0.38187 2.824 0.00722 **
  31. ---
  32. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 1
  33.  
  34. Residual standard error: 7.168 on 42 degrees of freedom
  35. Multiple R-squared: 0.6993, Adjusted R-squared: 0.6707
  36. F-statistic: 24.42 on 4 and 42 DF, p-value: 1.717e-10

Pr均小于0.05,表明相关性显著,但R2=0.6993略小,置信度不高。

例题:某大型牙膏制造企业为了更好地扩展产品市场,有效地管理库存,公司董事会要求销售部门根据市场调查,找出公司生产的牙膏销售量与销售价格、广告投入等之间的关系,从而预测出在不同的价格和广告费用下的销售量。为此,销售部的研究人员收集了过去30个销售周期(每个销售周期为4周)公司生产的牙膏的销售量、销售价格、投入的广告费用,以及周期其它厂家生产同类牙膏的市场平均销售价格,如表所示。试根据这些数据建立一个数学模型,分析牙膏销售量与其他因素的关系,为订制价格策略与广告投入策略提供数据依据

销售周期 公司销售价格(元) 其他厂家平均价格(元) 价格差(元) 广告费用(百万元) 销售量(百万支)
1 3.85 3.80 -0.05 5.50 7.38
2 3.75 4.00 0.25 6.75 8.51
3 3.70 4.30 0.60 7.25 9.52
4 3.70 3.70 0.00 5.50 7.50
5 3.60 3.85 0.25 7.00 9.33
6 3.60 3.80 0.20 6.50 8.28
7 3.60 3.75 0.15 6.75 8.75
8 3.80 3.85 0.05 5.25 7.87
9 3.80 3.65 -0.15 5.25 7.10
10 3.85 4.00 0.15 6.00 8.00
11 3.90 4.10 0.20 6.50 7.89
12 3.90 4.00 0.10 6.25 8.15
13 3.70 4.10 0.40 7.00 9.10
14 3.75 4.20 0.45 6.90 8.86
15 3.75 4.10 0.35 6.80 8.90
16 3.80 4.10 0.30 6.80 8.87
17 3.70 4.20 0.50 7.10 9.26
18 3.80 4,30 0.50 7.00 9.00
19 3.70 4.10 0.40 6.80 8.75
20 3.80 3.75 -0.05 6.50 7.95
21 3.80 3.75 -0.05 6.25 7.65
22 3.75 3.65 -0.10 6.00 7.27
23 3.70 3.90 0.20 6.50 8.00
24 3.55 3.65 0.10 7.00 8.50
25 3.60 4.10 0.50 6.80 8.75
26 3.65 4.25 0.60 6.80 9.21
27 3.70 3.65 -0.05 6.50 8.27
28 3.75 3.75 0.00 5.75 7.67
29 3.80 3.85 0.05 5.80 7.93
30 3.70 4.25 0.55 6.80 9.26

分析:由于牙膏是生活必需品,对于大多数顾客来说,在购买同类产品的牙膏时,更多地会关心不同品牌之间的价格差,而不是它们的价格本身。因此,在研究各个因素对销售量的影响时,用价格差代替公司销售价格和其他厂家平均价格更为合适。

模型建立与求解

记牙膏销售量为Y,价格差为X1,公司的广告费为X2,假设基本模型为线性模型

Y=β01X12X2

输入数据,调用R中的lm()函数求解,并用summary()显示计算结果(程序名:exam0609.R)

  1. > toothpaste<-data.frame(
  2. + X1=c(-0.05, 0.25,0.60,0,0.25,0.20, 0.15,0.05,-0.15, 0.15,
  3. + 0.20, 0.10,0.40,0.45,0.35,0.30, 0.50,0.50, 0.40,-0.05,
  4. + -0.05,-0.10,0.20,0.10,0.50,0.60,-0.05,0,0.05, 0.55),
  5. + X2=c( 5.50,6.75,7.25,5.50,7.00,6.50,6.75,5.25,5.25,6.00,
  6. + 6.50,6.25,7.00,6.90,6.80,6.80,7.10,7.00,6.80,6.50,
  7. + 6.25,6.00,6.50,7.00,6.80,6.80,6.50,5.75,5.80,6.80),
  8. + Y =c( 7.38,8.51,9.52,7.50,9.33,8.28,8.75,7.87,7.10,8.00,
  9. + 7.89,8.15,9.10,8.86,8.90,8.87,9.26,9.00,8.75,7.95,
  10. + 7.65,7.27,8.00,8.50,8.75,9.21,8.27,7.67,7.93,9.26)
  11. + )
  12. > lm.sol<-lm(Y~X1+X2,data=toothpaste)
  13. > summary(lm.sol)
  14.  
  15. Call:
  16. lm(formula = Y ~ X1 + X2, data = toothpaste)
  17.  
  18. Residuals:
  19. Min 1Q Median 3Q Max
  20. -0.49779 -0.12031 -0.00867 0.11084 0.58106
  21.  
  22. Coefficients:
  23. Estimate Std. Error t value Pr(>|t|)
  24. (Intercept) 4.4075 0.7223 6.102 1.62e-06 ***
  25. X1 1.5883 0.2994 5.304 1.35e-05 ***
  26. X2 0.5635 0.1191 4.733 6.25e-05 ***
  27. ---
  28. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 1
  29.  
  30. Residual standard error: 0.2383 on 27 degrees of freedom
  31. Multiple R-squared: 0.886, Adjusted R-squared: 0.8776
  32. F-statistic: 105 on 2 and 27 DF, p-value: 1.845e-13

计算结果通过回归系数检验和回归方程检验,由此得到销售量与价格差与广告费之间的关系为:

Y=4.4075+1.5883X1+0.5635X2

模型的进一步分析

为了进一步分析回归模型,我们画出y与x1和y与x2散点图,如下图。从散点图上可以看出,对于y与x1,用直线拟合较好。而对于y与x2,则用二次曲线拟合较好

  1. > ####绘制x1与y的散点图和回归直线
  2. > attach(toothpaste)
  3. > plot(Y~X1);abline(lm(Y~X1))

  1. > ####绘制x2与y的散点图和回归曲线
  2. > lm2.sol<-lm(Y~X2+I(X2^2))
  3. > x<-seq(min(X2),max(X2),len=200)
  4. > y<-predict(lm2.sol,data.frame(X2=x))
  5. > plot(Y~X2);lines(x,y)

其中I(X2^2)表示模型中X2的平方项,即X22

从两图可看出,将销售量模型改为

Y=β01X12X23X22

似乎更加合理。我们作相应的回归分析,

  1. > lm.new<-update(lm.sol, .~.+I(X2^2))
  2. > summary(lm.new)
  3.  
  4. Call:
  5. lm(formula = Y ~ X1 + X2 + I(X2^2), data = toothpaste)
  6.  
  7. Residuals:
  8. Min 1Q Median 3Q Max
  9. -0.40330 -0.14509 -0.03035 0.15488 0.46602
  10.  
  11. Coefficients:
  12. Estimate Std. Error t value Pr(>|t|)
  13. (Intercept) 17.3244 5.6415 3.071 0.00495 **
  14. X1 1.3070 0.3036 4.305 0.00021 ***
  15. X2 -3.6956 1.8503 -1.997 0.05635 .
  16. I(X2^2) 0.3486 0.1512 2.306 0.02934 *
  17. ---
  18. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 1
  19.  
  20. Residual standard error: 0.2213 on 26 degrees of freedom
  21. Multiple R-squared: 0.9054, Adjusted R-squared: 0.8945
  22. F-statistic: 82.94 on 3 and 26 DF, p-value: 1.944e-13

此时发现,模型残差的标准差有所下降,相关系数的平方R2有所上升,这说明模型修正是合理的。但这也出现一个问题,就是对应于β2的P-值>0.05.为进一步分析作β的区间估计。

  1. > source("beta.int.R")
  2. > beta.int(lm.new)
  3. Estimate Left Right
  4. (Intercept) 17.3243685 5.72818421 28.9205529
  5. X1 1.3069887 0.68290927 1.9310682
  6. X2 -3.6955867 -7.49886317 0.1076898
  7. I(X2^2) 0.3486117 0.03786354 0.6593598

β2的区间估计是[-7.49886317,0.1076898],包含了0,也就是说,β2的值可能会是0

去掉X2的一次项,再进行分析

  1. > lm2.new<-update(lm.new,.~.-X2)
  2. > summary(lm2.new)
  3.  
  4. Call:
  5. lm(formula = Y ~ X1 + I(X2^2), data = toothpaste)
  6.  
  7. Residuals:
  8. Min 1Q Median 3Q Max
  9. -0.4859 -0.1141 -0.0046 0.1053 0.5592
  10.  
  11. Coefficients:
  12. Estimate Std. Error t value Pr(>|t|)
  13. (Intercept) 6.07667 0.35531 17.102 5.17e-16 ***
  14. X1 1.52498 0.29859 5.107 2.28e-05 ***
  15. I(X2^2) 0.04720 0.00952 4.958 3.41e-05 ***
  16. ---
  17. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 1
  18.  
  19. Residual standard error: 0.2332 on 27 degrees of freedom
  20. Multiple R-squared: 0.8909, Adjusted R-squared: 0.8828
  21. F-statistic: 110.2 on 2 and 27 DF, p-value: 1.028e-13

此模型虽然通过了F检验和T检验,但与上一模型对比来看,模型残差的标准差上升,R2下降。这又是此模型的不足之处。

再作进一步的修正,考虑x1与x2交互作用,即模型为

Y=β01X12X23X224X1X2

  1. > lm3.new<-update(lm.new,.~.+X1*X2)
  2. > summary(lm3.new)
  3.  
  4. Call:
  5. lm(formula = Y ~ X1 + X2 + I(X2^2) + X1:X2, data = toothpaste)
  6.  
  7. Residuals:
  8. Min 1Q Median 3Q Max
  9. -0.43725 -0.11754 0.00489 0.12263 0.38410
  10.  
  11. Coefficients:
  12. Estimate Std. Error t value Pr(>|t|)
  13. (Intercept) 29.1133 7.4832 3.890 0.000656 ***
  14. X1 11.1342 4.4459 2.504 0.019153 *
  15. X2 -7.6080 2.4691 -3.081 0.004963 **
  16. I(X2^2) 0.6712 0.2027 3.312 0.002824 **
  17. X1:X2 -1.4777 0.6672 -2.215 0.036105 *
  18. ---
  19. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 1
  20.  
  21. Residual standard error: 0.2063 on 25 degrees of freedom
  22. Multiple R-squared: 0.9209, Adjusted R-squared: 0.9083
  23. F-statistic: 72.78 on 4 and 25 DF, p-value: 2.107e-13

模型通过T检验和F检验,并且模型残差的标准差减少,R2增加。因此,最终模型选为

Y=29.1133+11.1342X1-7.6080X2+0.6712X22-1.4777X1X2

R与数据分析旧笔记(六)多元线性分析 上的更多相关文章

  1. R与数据分析旧笔记(六)多元线性分析 下

    逐步回归 向前引入法:从一元回归开始,逐步加快变量,使指标值达到最优为止 向后剔除法:从全变量回归方程开始,逐步删去某个变量,使指标值达到最优为止 逐步筛选法:综合上述两种方法 多元线性回归的核心问题 ...

  2. R与数据分析旧笔记(十六) 基于密度的方法:DBSCAN

    基于密度的方法:DBSCAN 基于密度的方法:DBSCAN DBSCAN=Density-Based Spatial Clustering of Applications with Noise 本算法 ...

  3. R与数据分析旧笔记(五)数学分析基本

    R语言的各种分布函数 rnorm(n,mean=0,sd=1)#高斯(正态) rexp(n,rate=1)#指数 rgamma(n,shape,scale=1)#γ分布 rpois(n,lambda) ...

  4. R与数据分析旧笔记(十一)数据挖掘初步

    PART 1 PART 1 传统回归模型的困难 1.为什么一定是线性的?或某种非线性模型? 2.过分依赖于分析者的经验 3.对于非连续的离散数据难以处理 网格方法 <Science>上的文 ...

  5. R与数据分析旧笔记(八)多重共线性

    多重共线性(线性代数叫线性相关) 多重共线性(线性代数叫线性相关) 1.什么是多重共线性 2.多重共线性对回归模型的影响 3.利用计算特征根发现多重共线性 4.Kappa()函数 例题1 考虑一个有六 ...

  6. R与数据分析旧笔记(⑦)回归诊断

    回归诊断 回归诊断 1.样本是否符合正态分布假设? 2.是否存在离群值导致模型发生较大误差? 3.线性模型是否合理? 4.误差是否满足独立性.等方差.正态分布等假设条件? 5.是否存在多重共线性 正态 ...

  7. R与数据分析旧笔记(三)不知道取什么题目

    连线图 > a=c(2,3,4,5,6) > b=c(4,7,8,9,12) > plot(a,b,type="l") 多条曲线效果 plot(rain$Toky ...

  8. R与数据分析旧笔记(一)基本数学函数的使用

    创建向量矩阵 > x1=c(2,3,6,8) > x2=c(1,2,3,4) > a1=(1:100) > length(a1) [1] 100 > length(x1) ...

  9. R与数据分析旧笔记(十八完结) 因子分析

    因子分析 因子分析 降维的一种方法,是主成分分析的推广和发展 是用于分析隐藏在表面现象背后的因子作用的统计模型.试图用最少的个数的不可测的公共因子的线性函数与特殊因子之和来描述原来观测的每一分量 因子 ...

随机推荐

  1. NET 人民币大写

    /***** HongShijin** Me@HongShijin.com** 2009-3-15 10:13:00.00000** text/C#***/ /// <summary> / ...

  2. bootstrap注意事项(七)图片

    在本章中,我们将学习 Bootstrap 对图片的支持.Bootstrap 提供了三个可对图片应用简单样式的 class: .img-rounded:添加 border-radius:6px 来获得图 ...

  3. android入门——数据存储

    首先是SharedPreferences 用户偏好 package com.example.wkp.aboutdata; import android.content.Intent; import a ...

  4. SessionState的配置 [转载]

    ASP.NET会话状态模块在Web.config文件中<System.web>标记下的<Sessionstate>标记的mode属性来决定该属性的四种可能的值: Off. In ...

  5. SqlServer2008 数据库同步的两种方式 (发布、订阅)

    尊重原著作:本文转载自http://www.cnblogs.com/tyb1222/archive/2011/05/31/2064944.html 上篇中说了通过SQL JOB的方式对数据库的同步,这 ...

  6. (转)C#DataTable学习心得

    一.DataSet.DataTable.DataRow.DataColumn 1] 在DataSet中添加DataTable DataSet.Tables.Add(DataTable) 实例: Dat ...

  7. 剑指offier第10题

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表. 二进制中1的个数   时间限制:1秒空间限制:32768K  

  8. 关于Centos Linux系统安装Python的问题

    由于最近在研究Python框架Django的使用,安装django扩展没有问题 新建项目  django-admin startproject projectName  如果什么都不修改或者直接创建一 ...

  9. javaEE简答题整理

    1. 什么是JavaEE?其编程思想是什么? JavaEE是一个标准的中间件体系结构,是企业分布式应用开发标准.JavaEE的编程思想是组件—容器. 2. 为什么提出JavaEE体系结构? (1)为满 ...

  10. codeforces 3D . Least Cost Bracket Sequence 贪心

    题目链接 给一个字符串, 由( ) 以及? 组成, 将?换成( 或者 ) 组成合法的括号序列, 每一个?换成( 或者 ) 的代价都不相同, 问你最小代价是多少, 如果不能满足输出-1. 弄一个变量nu ...