qq_45853586 2023-02-25 10:00 采纳率: 0%
浏览 40

R语言:ARIMA模型

我的数据是属于月度数据,是肺结核的发病人数,用2004-2021年12月的数据构造模型,预测2022年的数据。但是在我对数据转换为ts时间序列后,对其进行差分处理使其平滑后,到确定阶数的时候绘制acf和pacf图的时候发现,此时的lag为小数,请问这是什么原因呢?

img

我的数据如下所示:

img

代码如下:

setwd("C:\\Users\\Administrator\\Desktop")
DA <- read.csv("123.csv")
rate=ts(DA$value,frequency=12,start=2009)
rate
win.graph(width=6, height=5,pointsize=9)
plot(rate,xlab = "年份",ylab = "月发病人数")
z=diff(rate) #1阶差分
plot(z)
library(timeDate)
library(timeSeries)
library(fBasics)
library(fUnitRoots)
library(tseries)
adf.test(z)#单位根检验平稳性检验
Box.test(z,type='Ljung-Box') #纯随机白噪声检验 X2=7.4485,P值为0.0064,拒绝原假设

#ARIMA模型建立
par(mfrow=c(1,2))
acf(z)
pacf(z) #自相关偏自相关图
par(mfrow=c(1,1))

  • 写回答

3条回答 默认 最新

  • MarkHan_ 2023-02-25 10:04
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    出现lag为小数的情况可能是由于时间序列数据的频率不精确导致的。在R中,频率(frequency)参数指定的是每个时间单位的数量,而时间序列的起始时间(start)则指定了第一个时间单位的时间点。在你的代码中,你将频率设置为12,表示每年有12个月,但你的数据集从2004年开始,因此你将start设置为2009,这可能导致时间序列的频率不精确,从而在绘制acf和pacf图时出现小数的lag值。
    -
    为了解决这个问题,你可以将start设置为2004,并将数据转换为年度数据。这样做可以确保时间序列的频率准确,并且在绘制acf和pacf图时不会出现小数的lag值。以下是可能适用于你的代码:

    rate <- ts(DA$value, frequency = 12, start = c(2004, 1))
    rate_yearly <- aggregate(rate, FUN = sum, k = 12) # 将月度数据转换为年度数据
    z <- diff(rate_yearly) # 一阶差分
    plot(z)
    acf(z)
    pacf(z)
    

    这里,我们将start设置为c(2004, 1),表示从2004年1月开始。然后,我们使用aggregate函数将月度数据转换为年度数据,并将频率设置为12。这样,我们就可以正确地绘制acf和pacf图,而不会出现小数的lag值。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月25日

悬赏问题

  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
  • ¥100 求Web版SPC控制图程序包调式
  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请