如何调整参考日期将日期转数值以匹配模型与图表的截距
问题解决方案
1. 实现从2011-01-01开始计算流逝秒数
完全可以实现,步骤如下:
- 先定义基准起始日期:
start_date <- as.Date("2011-01-01") - 计算目标日期与基准日期的天数差,再乘以一天的总秒数(86400秒/天),即可得到从2011-01-01开始的流逝秒数:
year <- c("2011-01-01", "2012-01-01", "2013-01-01", "2014-01-01", "2015-01-01", "2016-01-01", "2017-01-01", "2018-01-01", "2019-01-01", "2020-01-01", "2021-01-01", "2022-01-01", "2014-01-01", "2018-01-01", "2011-01-01", "2022-01-01") year <- as.Date(year, "%Y-%m-%d") start_date <- as.Date("2011-01-01") seconds_since_2011 <- as.numeric(year - start_date) * 86400
2. 解决lm模型截距与图表不匹配的问题
你当前用lm(data$region1~data$Year)时,data$Year作为Date类型被转成数值后,是从1970-01-01开始的天数,模型的截距代表的是1970-01-01时的预测值;而图表中的截距通常是x轴起始点(比如2011-01-01)对应的y值,两者自然不匹配。
解决方法是使用**相对日期(以2011-01-01为起点的数值)**作为自变量,这样模型的截距就对应2011-01-01的预测值,和图表截距完全一致:
# 构建完整数据框(替换your_region1_data为你的响应变量数据) data <- data.frame(Year = year, type = rep(c(1,2),each=8), region1 = your_region1_data) # 添加相对天数列(比秒数更常用,建模效率更高) data$days_since_2011 <- as.numeric(data$Year - start_date) # 用相对天数建模 mod1 <- lm(region1 ~ days_since_2011, data = data)
此时模型输出的截距,就是2011-01-01当天region1的预测值,和图表中x轴对应起始点的y截距完全匹配。
内容的提问来源于stack exchange,提问作者Jesús Asdrúbal Molina Vázquez
相关产品推荐
相关产品推荐

