STM模型estimateEffect仅返回10年结果,如何获取全部年份数据?
解决STM estimateEffect显示全部年份数据的问题
方法1:用predict函数生成所有年份的估计值
estimateEffect默认只展示平滑项的10个分位点数据,要获取全部年份,可通过predict函数指定目标年份:
- 构造包含所有唯一年份的新数据集(需指定基准政党,保证系数计算一致):
new_data <- expand.grid( Year = unique(out$meta$Year), # 提取元数据里的所有年份 Party = levels(out$meta$Party)[1] # 选政党变量的基准类别 )
- 调用predict获取每个主题在所有年份的估计值:
full_year_results <- predict(prep, newdata = new_data, type = "link")
将full_year_results和new_data合并后,就能查看所有年份的主题效应数据。
方法2:直接提取平滑项的拟合值
也可以从prep对象中手动提取平滑项的完整拟合结果:
- 定位目标主题的平滑项(以主题1为例):
target_smooth <- prep$smooths[[1]]$smooths[[1]]
- 用
smoothTerm函数生成所有年份的拟合值:
year_fit <- smoothTerm(target_smooth, newdata = data.frame(Year = unique(out$meta$Year)))
返回的year_fit包含每个年份的平滑项估计值及置信区间。
关于tidytext的tidy函数失效的说明
tidytext的tidy方法对含平滑项的estimateEffect对象支持有限,因此更推荐使用上述两种STM原生方法获取完整年份数据。
内容的提问来源于stack exchange,提问作者Astrid
相关产品推荐
相关产品推荐

