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

R语言绘制GARCH模型图横轴显示观测序号而非日期如何解决

问题根源

你当前使用的plot.ts()是R中针对ts类型时间序列的内置绘图函数,代码中手动将拟合得到的波动率、拟合值转为ts对象时,没有绑定对应的日期索引,函数默认会以从1开始的观测序号作为横轴刻度,这个问题和CSV源文件本身的字段设置没有直接关系。

R环境原生解决方案

不需要安装第三方拓展包,按以下步骤操作即可:

  1. 首先在R环境内完成日期格式转换,不要依赖外部文件的字段属性
    读入数据时直接将日期列转为R内置的Date类型,参考代码:

    # 替换成你自己的CSV文件路径,根据日期实际存储格式调整format参数
    df <- read.csv("你的数据文件路径.csv")
    # 假设日期列名为date,存储格式为"年-月-日"(如2020-01-02)就用如下转换规则
    df$date <- as.Date(df$date, format = "%Y-%m-%d")
    

    注意:要保证日期序列的长度和你传入ugarchfit的收益率序列r_SW长度完全对应。

  2. 选择以下任意一种原生绘图方式即可显示日期横轴:

    • 方式一(推荐,适配所有时间间隔场景):直接用基础plot()函数手动指定x轴为日期向量
    # 绘制拟合收益率图
    plot(x = df$date,
         y = SWA_fit@fit$fitted.values,
         type = "l", # 指定为线图
         xlab = "交易日期",
         ylab = "拟合收益率",
         main = "GARCH模型拟合收益率序列")
    
    # 绘制波动率(条件方差)图
    plot(x = df$date,
         y = SWA_fit@fit$sigma^2,
         type = "l",
         xlab = "交易日期",
         ylab = "条件方差",
         main = "GARCH模型拟合波动率")
    

    如果模型因为AR项、GARCH阶数设置丢失了前几期观测值,记得把日期向量对应去掉前N个观测再传入,比如AR(1)滞后丢失1期观测,就把x参数换成df$date[-1],避免数据和日期错位。

    • 方式二(仅适用于固定间隔规整时间序列):创建ts对象时绑定时间起始点和频率
    # 以自然日度数据为例,起始日期取样本首日,frequency按实际间隔设置:日度用365、月度用12、季度用4
    start_year <- as.numeric(format(min(df$date), "%Y"))
    start_day <- as.numeric(format(min(df$date), "%j")) # 取首日在当年的天数序号
    SWA_hhat <- ts(SWA_fit@fit$sigma^2, start = c(start_year, start_day), frequency = 365)
    plot.ts(SWA_hhat, xlab = "日期", ylab = "条件方差", main = "GARCH模型拟合波动率")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:06:24