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

使用cosinor.lm()模型调用predict()时出现‘未定义列选择’错误

解决cosinor.lm模型predict时的"undefined columns selected"错误

问题根源

cosinor.lm()中的time(time)语法并非直接使用原始time列,而是会自动生成与周期(这里是24)对应的余弦项(cos_24)和正弦项(sin_24)作为模型的核心预测变量。你之前重命名time列的做法无效,因为模型实际依赖的是这些衍生变量,而非名为time(time)的列。

解决方法

方法1:使用cosinor内置函数生成合规数据集

gen.cosinor.data()是cosinor包提供的工具,能自动根据拟合好的模型生成包含所需衍生变量的预测数据集:

library(cosinor)

# 拟合原模型
fit <- cosinor.lm(Y ~ time(time), data=vitamind, period=24)

# 生成符合要求的预测数据集
new_data <- gen.cosinor.data(
  fit,
  xname = "time",
  newdata = data.frame(time = seq(0, 24, length.out = 200))
)

# 执行预测
predictions <- predict(fit, newdata = new_data, interval = "confidence")

方法2:手动构造衍生变量

如果不想依赖内置函数,可以手动计算模型需要的余弦和正弦项,确保变量名与模型中一致(由周期决定,这里周期24对应cos_24和sin_24):

library(cosinor)

fit <- cosinor.lm(Y ~ time(time), data=vitamind, period=24)

new_data <- data.frame(
  time = seq(0, 24, length.out = 200)
)

# 手动生成模型所需的余弦、正弦项
new_data$cos_24 <- cos(2 * pi * new_data$time / 24)
new_data$sin_24 <- sin(2 * pi * new_data$time / 24)

# 执行预测
predictions <- predict(fit, newdata = new_data, interval = "confidence")

验证模型变量

可以通过以下代码查看模型实际使用的变量,确认衍生项的名称:

names(fit$model)

输出会包含cos_24和sin_24,这就是predict时newdata必须包含的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:18:21