fixest包估计后约束模型与无约束模型F检验的替代方法咨询
fixest包估计后约束模型与无约束模型F检验的替代方法咨询
嗨,我刚好熟悉fixest的相关操作,帮你梳理两个可行的替代方案:
方案1:使用似然比检验(lrtest()函数)
在OLS模型场景下,似然比检验和你原本想用的ANOVA F检验是渐近等价的,样本量足够时结果几乎一致,而且fixest原生支持这个函数,用法和anova()一样简单:
library(fixest) data(airquality) est_nc <- feols(Ozone ~ Solar.R + Wind + poly(Temp, 3), airquality) est_c <- feols(Ozone ~ Solar.R + Wind, airquality) # 直接传入两个嵌套模型即可 lrtest(est_c, est_nc)
这个命令会输出似然比统计量、自由度和p值,完全能满足你比较约束/无约束模型的需求。
方案2:手动计算F统计量
如果你一定要严格得到F检验的结果,也可以手动计算,步骤很清晰,代码如下:
# 提取两个模型的残差平方和(RSS) rss_constrained <- est_c$rss rss_unconstrained <- est_nc$rss # 计算约束的自由度(无约束模型参数数 - 约束模型参数数) df_constraint <- est_nc$nparams - est_c$nparams # 提取无约束模型的残差自由度 df_residual <- est_nc$df.residual # 计算F统计量 f_statistic <- ((rss_constrained - rss_unconstrained) / df_constraint) / (rss_unconstrained / df_residual) # 计算对应的p值 p_value <- pf(f_statistic, df_constraint, df_residual, lower.tail = FALSE) # 格式化输出结果 cat("F检验结果:\n") cat(sprintf("F统计量: %.4f\n", f_statistic)) cat(sprintf("P值: %.4f\n", p_value))
另外提一句:如果你之后情况允许使用wald()函数了,fixest里的wald()可以直接针对无约束模型中的特定项做检验,比如你这里想检验poly(Temp, 3)的联合显著性,写法是wald(est_nc, "poly(Temp, 3)"),结果和ANOVA的F检验是一致的。
备注:内容来源于stack exchange,提问作者yacx
相关产品推荐
相关产品推荐

