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

使用窗口函数估计MIDAS回归子样本时遇初始值错误求助

解决MIDAS回归中midas_r()的初始值错误问题

我来帮你搞定这个报错!你遇到的Starting values for weight parameters must be supplied错误,核心原因是MIDAS回归的权重参数属于非线性参数,函数没办法自动生成初始值,必须手动指定。下面我结合你的代码一步步教你怎么改:

错误原因拆解

midas_r()处理混合频率数据时,权重函数(比如常用的Almon多项式、Beta权重等)的参数是非线性的,优化算法需要初始值才能启动迭代计算,不像普通线性回归能直接推导参数。你之前的代码里没给权重参数的初始值,所以函数直接报错了。

修复后的完整代码示例

我基于你的模拟数据,用最常用的Almon多项式权重来修改代码,你可以直接参考:

install.packages("midasr")
library(midasr)

yrs <- 10
x <- ts(rnorm(12*yrs), start=c(1900,1), frequency = 12)
y <- ts(rnorm(yrs), start=c(1900,1))

# 定义MIDAS回归公式,用2阶Almon多项式权重
# start参数里给权重参数的初始值
midas_model <- midas_r(
  y ~ midas_r(x, 2, "alpmon"),  # 2阶Almon多项式,对应2个权重参数
  start = list(x = c(0.1, 0.1))  # 为2个权重参数提供初始值
)

# 查看回归结果
summary(midas_model)

关键细节说明

  • 这里用的"alpmon"是Almon多项式权重,2代表多项式的阶数,对应需要2个权重参数,所以start里的x要给2个初始值(你可以选小的数值,比如0.1、0.5都可以)。
  • 如果换用其他权重函数(比如Beta权重"beta"),需要对应调整初始值的数量:比如Beta权重有2个参数,那start里就要给2个初始值;如果是3阶Almon多项式,就要给3个初始值。
  • 如果你还有其他线性解释变量,也要在start里补充对应的初始值,比如公式是y ~ z + midas_r(x,2,"alpmon"),那start就要写成list(z=0.1, x=c(0.1,0.1))

额外提示

如果不确定初始值选什么,通常可以选小的正数(比如0.1、0.05),或者根据数据的趋势大致估计,只要不是极端值(比如0或者超大数)都可以,优化算法会自动调整到最优值。

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

火山引擎 最新活动