You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

计算时间序列趋势线首尾值——基于R语言线性回归的技术问询

计算时间序列线性回归趋势线的首尾值

要得到趋势线的首尾值,本质就是用你的线性回归模型,预测数据集中第一个日期最后一个日期对应的拟合值,这里有两种简单可靠的实现方法:


方法一:手动提取系数计算

线性回归的核心公式是 y = 截距 + 斜率 * 日期数值,R在处理日期类型的自变量时,会自动把日期转换成以1970-01-01为起点的天数数值,我们可以直接提取模型系数,代入首尾日期的数值计算:

# 建议用变量名而非索引拟合模型,代码更清晰可维护
model <- lm(AT31102 ~ Date, data = df)

# 从模型中提取截距和斜率
coefs <- coef(model)
intercept <- coefs["(Intercept)"]
slope <- coefs["Date"]

# 将首尾日期转换成和模型内部一致的数值类型
first_date_num <- as.numeric(df$Date[1])
last_date_num <- as.numeric(df$Date[nrow(df)])

# 计算趋势线的首尾值
trend_start <- intercept + slope * first_date_num
trend_end <- intercept + slope * last_date_num

# 输出结果
cat("趋势线起始值:", round(trend_start, 3), "\n")
cat("趋势线结束值:", round(trend_end, 3), "\n")

方法二:用predict()函数直接预测(更推荐)

R内置的predict()函数可以直接基于模型对新日期进行预测,无需手动计算系数,不仅更简洁,还能避免手动计算可能出现的错误:

# 拟合回归模型
model <- lm(AT31102 ~ Date, data = df)

# 创建包含首尾日期的新数据框(注意列名要和模型自变量名完全一致)
new_dates <- data.frame(Date = c(df$Date[1], df$Date[nrow(df)]))

# 预测得到趋势线的首尾值
trend_values <- predict(model, newdata = new_dates)

# 查看结果,第一个元素是起始值,第二个是结束值
print(trend_values)

两种方法得到的结果完全一致,predict()的优势在于如果后续模型有调整(比如加入其他自变量),代码几乎不需要修改,兼容性更强。

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

火山引擎 最新活动