R语言之违背基本假设的几种情况xt4.13

2023-12-26 11:40

本文主要是介绍R语言之违背基本假设的几种情况xt4.13,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第4章 违背基本假设的几种情况

4.13 某软件公司的月销售额数据见表4-12,其中,x为总公司的月销售额(万元);y为某分公司的月销售额(万元)。
(1)用普通最小二乘法建立y与x的回归方程;
(2)用残差图及DW检验诊断序列的相关性;
(3)用迭代法处理序列相关,并建立回归方程。
(4)用一阶差分的方法处理数据,建立回归方程;
(5)比较普通最小二乘法所得的回归方程和迭代法、一阶差分法所建立回归方程的优良性。
tips:(3)使用R语言进行二次迭代处理序列相关

rm(list=ls())序号=c(1:20)
x=c(127.3,130.0,132.7,129.4,135.0,137.1,141.1,142.8,145.5,145.3,148.3,146.4,150.2,153.1,157.3,160.7,164.2,165.6,168.7,172.0)
y=c(20.96,21.40,21.96,21.52,22.39,22.76,23.48,23.66,24.10,24.01,24.54,24.28,25.00,25.64,26.46,26.98,27.52,27.78,28.24,28.78)
data4.13<-data.frame(序号,x,y)
data4.13# ----x为总公司的月销售额(万元),y为某分公司的月销售额(万元)----
#(1)用普通最小二乘法建立y与x的回归方程----
data4.13 <- read.csv('D:/rwork/应用回归/习题数据/表4-12.csv',head=TRUE)
attach(data4.13) #把数据框添加到R的搜索路径中,以便于下面直接调用x和y
lm4.13 <- lm(y~x,data=data4.13) #以y为因变量,x为自变量建立回归方程,并将结果赋给lm4.13
summary(lm4.13) #回归分析,得到普通最小二乘法的随机误差项标准差σ为0.09744
# 得到回归方程y^=-1.435+0.176x#(2)用残差图及DW检验诊断序列的自相关性----
##图示检验法
# (2.1)以自变量x为横轴,绘制回归残差项e(i)的图形----
e <- resid(lm4.13) #计算残差
plot(x,e,xlab='x',ylab='e',main='残差散点图')
abline(h=c(0),lty=5) #添加虚直线e=0
# 从图中可以看到,残差有规律的变化,呈现大致反W形状,说明随机误差项存在自相关性。#(2.2)绘制e(i-1),e(i)的散点图----
# 以e(i-1)为横坐标,e(i)为纵坐标(i=2,3,...,n),绘制散点图
n <- length(e)
e_i <- e[c(2:n)]
e_i_1 <- e[c(1:n-1)]
plot(e_i_1,e_i,main='e(i-1),e(i)的散点图')
abline(h=c(0),v=c(0),lty=5)
# 由残差图可见大部分的点落在第一、三象限内,表明随机扰动项存在着正的序列相关。#(2.3)DW检验诊断----
# 法一:使用lmtest包
library(lmtest)
dwtest(lm4.13,alternative='two.sided') #DW检验
# 法二:使用car包
library(car)
durbinWatsonTest(lm4.13) #统计量诊断自相关性
# 可知DW值为0.663,P值=0.0001257,查DW表,n=20,k=2,显著性水平α=0.05,
#  得dL=1.20,dU=1.41,由于DW=0.663<dL=1.20,知DW值落入正相关区域,即残差序列存在正的自相关。#(3)用迭代法处理序列相关,并建立方程----
#(3.1)第一次迭代y(t)'=y(t)-ρ*y(t-1),x(t)'=x(t)-ρ*x(t-1)=----
# 自相关系数ρ^=1-DW/2=1-0.66325/2=0.668375,计算的y',x'
rho_hat <- 1-0.66325/2
n <- length(x)
yy <- y[2:n]-rho_hat*y[1:n-1]
xx <- x[2:n]-rho_hat*x[1:n-1]
lm4.13_3 <- lm(yy~xx)
summary(lm4.13_3) #回归分析,得到一步迭代误差项的标准差σ为0.07296
anova(lm4.13_3) #方差分析表
# 得到新的回归方程y^'=-0.303+0.173x',把y(t)'=y(t)-0.6685y(t-1),x(t)'=x(t)-0.6685x(t-1)代入上式,
# 还原为原始变量的方程y(t)^=-0.303+0.6685y(t-1)+0.173*(x(t)-0.6685x(t-1)) #这里(t)、(t-1)为下标
#  即y(t)^=-0.3+0.6685y(t-1)+0.173x(t)-0.1157x(t-1)dwtest(lm4.13_3,alternative='two.sided') #DW检验
# 或durbinWatsonTest(lm4.13_3) 
# 得到DW=1.3597,P值=0.0862>0.05,查DW表,n=19,k=2,显著性水平α=0.05,
# 得dL=1.18,dU=1.40,可看到新的回归方程的DW=1.36,且1.18<1.36<1.40,
#  因而DW检验落入不确定区域此时,一步迭代误差项的标准差σ为0.07296,小于ε的标准差0.097
# 由于一步迭代的DW检验落入不确定区域,因而可以考虑对数据进行二步迭代,也就是对和重复以上迭代过程.#(3.2)第二次迭代y(t)''=y(t)'-ρ*y(t-1)',x(t)''=x(t)'-ρ*x(t-1)'=----
# 自相关系数ρ^=1-DW/2=1-1.3597/2=0.32015,计算的y'',x''
rho_hat2 <- 1-1.3597/2
nn <- length(xx)
yyy <- yy[2:nn]-rho_hat2*yy[1:nn-1]
xxx <- xx[2:nn]-rho_hat2*xx[1:nn-1]
lm4.13_32 <- lm(yyy~xxx)
summary(lm4.13_32) #回归分析,得到一步迭代误差项的标准差σ为0.06849
anova(lm4.13_32) #方差分析表
# 得到新的回归方程y^''=-0.073+0.169x'',y(t)''=y(t)'-0.32015*y(t-1)',x(t)''=x(t)'-0.32015*x(t-1)'代入上式,
# 还原为原始变量的方程y(t)^'=-0.073+0.32015y(t-1)'+0.169x(t)'-0.05410535x(t-1)' #这里(t)、(t-1)为下标dwtest(lm4.13_32,alternative='two.sided') #DW检验
# 或durbinWatsonTest(lm4.13_32) 
# 得到DW=1.696,P值=0.4011<0.05,查DW表,n=18,k=2,显著性水平α=0.05,
# 得dL=1.16,dU=1.39,可看到新的回归方程的DW=1.696,且dU<1.696<(4-dU),
#  因而DW检验落入无自相关区域,误差标准项0.06849,略小于一步迭代的标准差0.7296。
# 但是在检验都通过的情况下,由于一步迭代的值和F值均大于两步迭代后的值,
#  且根据取模型简约的原则,最终选择一步迭代的结果,即y(t)^=-0.3+0.6685y(t-1)+0.173x(t)-0.1157x(t-1)#(4)用一阶差分法处理数据,并建立回归方程----
# 计算出△y(t)=y(t)-y(t-1),△x(t)=x(t)-x(t-1)
dy <- y[2:n]-y[1:n-1] #或dy <- diff(y)
dx <- x[2:n]-x[1:n-1] #或dx <- diff(x)
lm4.13_4 <- lm(dy~dx)
summary(lm4.13_4) #回归分析
anova(lm4.13_4) #方差分析表
# 得到新的回归方程△y(t)=0.033+0.161△x(t),把△y(t)=y(t)-y(t-1),△x(t)=x(t)-x(t-1)代入上式,
# 还原为原始变量的方程y(t)^=0.033+y(t-1)+0.161*((t)-x(t-1)) #这里(t)、(t-1)为下标dwtest(lm4.13_4,alternative='two.sided') #DW检验
# 或durbinWatsonTest(lm4.13_4) 
# 得到DW=1.4798,P值=0.2728>0.05,查DW表,n=19,k=2,显著性水平α=0.05,
# 得dL=1.18,dU=1.40,可看到新的回归方程的dU=1.40<DW=1.4798<4-dU,
#  因而DW检验落入无自相关区域,可知残差序列ε不存在自相关,一阶差分法成功地消除了序列自相关。
# 即回归方程y(t)^=0.033+y(t-1)+0.161*((t)-x(t-1))detach(data4.13) #与attach()相对应,将数据框从搜索路径中移除#(5)比较以上各方法所建回归方程的优良性----
# 差分法的DW为1.48,消除相关性最彻底,但是迭代法的sigma_hat值最小为0.07395,拟合的更好。

(5)比较普通最小二乘法所得的回归方程和迭代法、一阶差分法所建立回归方程的优良性。
答:本题中自相关系数ρ^=0.6685,不接近于1,不适宜用差分法,另外由迭代法的F值及R ^2 都大于差分法的值,故差分法的效果低于迭代法的效果;而普通最小二乘法的随机误差项标准差为0.09744,大于迭代的随机误差项标准差0.07296,所以迭代的效果要优于普通最小二乘法,所以本题中一次迭代法最好。

在这里插入图片描述




参考课本:应用回归分析(R语言版),何晓群编著

这篇关于R语言之违背基本假设的几种情况xt4.13的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539271

相关文章

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用