Rbeast时间序列绘图X轴显示异常数值而非日期的解决方法
Rbeast日尺度时间序列绘图X轴日期显示异常修复
问题背景
研究对象为澳大利亚新南威尔士州(NSW)各区域的环境空气污染问题,使用Rbeast开展日尺度时间序列分解分析,核心目标是探究新冠疫情封控时段前后的时间序列变点特征。
问题描述
编写循环代码逐区域、逐污染物开展数据分析时,beast结果绘图的X轴(日期轴,预期显示2012-2022年的年份刻度,格式为2021-01-01类标准日期)显示异常,出现16000、17000、18000这类无意义数值。
异常效果示例:
原始实现代码如下:
beast_output = list() target_pollutants = c("PM10", "OZONE", "NO", "NO2") target_sites = c("WOLLONGONG", "MUSWELLBROOK", "SINGLETON", "CAMBERWELL", "WAGGAWAGGANORTH", "RICHMOND", "CAMDEN", "CHULLORA", "EARLWOOD", "WALLSEND", "BERESFIELD", "BARGO", "BRINGELLY", "PROSPECT", "STMARYS", "OAKDALE", "RANDWICK", "ROZELLE", "NEWCASTLE", "KEMBLAGRANGE", "ALBIONPARKSOUTH") for (poll in target_pollutants) { beast_output[[poll]] = list() df = time_by_poll[[poll]] # grab the target df sites = colnames(df) sites$Date = NULL # clear date from the list for (site in sites) { ts = ts(df[[site]], start=min(df$Date), end=max(df$Date)) beast_results = beast(ts) # plot(beastie_resulty) beast_output[[poll]][[site]] = beast_results } } plot (beast_results[["OZONE"]][["RANDWICK"]])
问题原因
X轴显示的16000、17000这类数值是R中Date类型的底层存储值:R内置Date类型以1970-01-01为起点按天计数,研究涉及的2012-2022年时段对应的计数值刚好落在15000-19000区间。
问题根源是时间序列构造逻辑存在错误:
- 基础
ts()函数对日期类型兼容性差,直接把Date值传给start/end参数时,会自动剥离日期格式属性,仅保留底层数值 - 创建
ts对象时未指定日尺度对应的时间步长参数,beast无法识别输入的时间维度为日期,绘图时直接输出了原始数值。
另外原代码还存在一处逻辑bug:sites = colnames(df)得到的是字符型向量,对字符向量执行sites$Date = NULL属于无效操作,运行时会直接报错。
修复方案
Rbeast原生支持传入带明确时间索引的输入,不需要强制转换为基础ts()对象,直接在调用beast()时通过time参数传入对应的日期向量即可自动识别日期格式,修正后的可运行代码如下:
beast_output = list() target_pollutants = c("PM10", "OZONE", "NO", "NO2") for (poll in target_pollutants) { beast_output[[poll]] = list() df = time_by_poll[[poll]] # 正确提取污染物监测点列名,排除Date列 sites = colnames(df)[!colnames(df) %in% "Date"] # 提前提取日期向量,避免循环内重复计算 date_vec = df$Date for (site in sites) { # 直接传入浓度向量,通过time参数绑定日期索引,指定日尺度步长 beast_results = beast(df[[site]], time = date_vec, deltat = "day") beast_output[[poll]][[site]] = beast_results } } # 绘图时将自动识别日期格式,输出标准年月日刻度 plot(beast_output[["OZONE"]][["RANDWICK"]])
内容的提问来源于stack exchange,提问作者Hannah0575
相关产品推荐
相关产品推荐

