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

相关文章

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Java中InputStream重复使用问题的几种解决方案

《Java中InputStream重复使用问题的几种解决方案》在Java开发中,InputStream是用于读取字节流的类,在许多场景下,我们可能需要重复读取InputStream中的数据,这篇文章主... 目录前言1. 使用mark()和reset()方法(适用于支持标记的流)2. 将流内容缓存到字节数组

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输