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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 11:14:04