TOBIT回归模型效应提取报错:缺失offset参数且无默认值
解决TOBIT回归模型提取效应值时的offset缺失报错
我之前也碰到过effects包和survreg拟合的TOBIT模型搭配时的这个小坑——即使你的模型里完全没用到偏移项(offset),Effect()函数也会默认要求你显式指定这个参数,不然就会抛出你遇到的这个错误。
具体解决方案
既然你的survreg模型没有设置offset,直接在Effect()调用里添加offset = 0参数就能解决问题,相当于明确告诉函数“这个模型不需要偏移项”。同时可以顺手检查下subset后的数据是否有足够样本,避免后续绘图出问题。
修改后的完整代码如下:
# 你已完成的模型拟合步骤(保留不变) tobitforgraph <- survreg(Surv(S1, S2, type='right') ~ +(Var1centered)*Var2centered*Var3standardized, data=Datafilename, dist='gaussian', robust=TRUE) # 加载effects库 library(effects) # 添加offset=0的效应值提取代码 intplot <- as.data.frame(Effect( c("Var1centered","Var3standardized"), mod = tobitforgraph, xlevels = list(Var1centered=c(-.4987531,.5012469), Var3standardized=c(-1.0,1.0)), data = subset(Datafilename, Var4==-0.5025), offset = 0 # 关键参数:解决offset缺失报错 )) print(intplot)
原理说明
survreg模型的底层结构预留了offset的位置,而effects包的Effect()函数处理这类模型时,不会自动推断“没有offset”的情况,必须手动指定offset=0来明确这一点。如果后续你的模型需要用到offset,只需要把这里的0换成对应的偏移变量即可。
等你成功提取到效应值后,就可以用ggplot2的geom_col()或者基础绘图函数绘制柱状图,轻松展示-1SD和+1SD处的效应差异啦~
内容的提问来源于stack exchange,提问作者J. Smith
相关产品推荐
相关产品推荐

