deltaMethod()无法调用dlogis()的替代解决方案咨询
解决deltaMethod中使用dlogis报错的问题
问题原因
deltaMethod的内置导数计算表未收录dlogis函数,直接调用会触发导数计算失败的报错。
解决方法
利用dlogis的等价数学表达式替代:dlogis(x) = plogis(x) * (1 - plogis(x)),而plogis是deltaMethod支持的函数,可直接替换使用。
修改后的代码如下:
avg_x1 <- mean(df$x1) avg_x2 <- mean(df$x2) avg_x3 <- mean(df$x3) het_log <- hetprob(y ~ x1 + x2 + x3 | x1, link="logit", data=df) # 用plogis的组合表达式替代dlogis test <- deltaMethod(het_log , "plogis( (Intercept) + avg_x1*x1 + avg_x2*x2 + avg_x3*x3) * (1 - plogis( (Intercept) + avg_x1*x1 + avg_x2*x2 + avg_x3*x3))")
验证等价性
在R中可验证该表达式与dlogis的计算结果完全一致:
x <- 0 dlogis(x) # 输出0.25 plogis(x)*(1-plogis(x)) # 同样输出0.25
内容的提问来源于stack exchange,提问作者eades
相关产品推荐
相关产品推荐

