You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将R中多类别通胀数据集转为时间序列以使用tseries分析

解决方案:导入通胀率数据并使用tseries做时间序列分析

1. 先修正原始数据的格式问题

你的原始数据里存在两类格式错误,会直接导致导入失败或数据异常:

  • 类别名称末尾多余的点(Gas.、Rent.)
  • 数值里的多余小数点(比如1.2.、2.0.)

修正后的数据应该是:

Category 2020 2021 2022
Food     1.5   2.0   3.0 
Gas      1.0   1.2   2.5
Rent     2.0   3.0   2.8

2. 导入数据到R

推荐用read.table()处理空格分隔的数据,两种导入方式可选:

方式1:从本地文件导入

假设你把修正后的数据保存为inflation_data.txt并放在R的工作目录下:

inflation_df <- read.table("inflation_data.txt", header = TRUE, stringsAsFactors = FALSE)
# 检查导入结果
str(inflation_df)

方式2:直接导入文本内容

不想存文件的话,用textConnection()直接读入:

data_text <- "Category 2020 2021 2022
Food     1.5   2.0   3.0 
Gas      1.0   1.2   2.5
Rent     2.0   3.0   2.8"
inflation_df <- read.table(textConnection(data_text), header = TRUE, stringsAsFactors = FALSE)

3. 转换为标准时间序列对象(ts)

你的数据是宽格式(一行一个类别,一列一个年份),需要调整结构适配ts()的要求:

# 提取数值部分,把类别设为行名
inflation_matrix <- as.matrix(inflation_df[, -1])
rownames(inflation_matrix) <- inflation_df$Category

# 转置后转换为时间序列:起始年份2020,年度数据频率设为1
inflation_ts <- ts(t(inflation_matrix), start = 2020, frequency = 1)
# 查看最终时间序列
inflation_ts

4. 用tseries包做时间序列分析

先确保包已安装并加载:

install.packages("tseries")
library(tseries)

示例1:单位根检验(ADF检验)

检验各部门通胀率序列是否平稳:

# 检验Food序列
adf.test(inflation_ts[, "Food"])
# 检验Gas序列
adf.test(inflation_ts[, "Gas"])
# 检验Rent序列
adf.test(inflation_ts[, "Rent"])

示例2:协整检验(Johansen检验)

分析多部门通胀率之间是否存在长期均衡关系:

johansen_result <- ca.jo(inflation_ts, type = "trace", ecdet = "trend", K = 2)
summary(johansen_result)

示例3:ARCH效应检验

检验通胀率是否存在异方差性:

# 以Food序列为例,先拟合AR(1)模型再检验残差
arch.test(residuals(arima(inflation_ts[, "Food"], order = c(1,0,0))))

关于之前失败的原因

  • read.ts()仅适用于时间点为行、变量为列的长格式时间序列数据,你的宽格式数据不匹配。
  • 直接用ts()转换原始数据框会因为包含字符型的Category列报错,必须先提取数值部分并调整结构。

内容的提问来源于stack exchange,提问作者Stefan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:12:44