使用窗口函数估计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




