微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Zelig软件包根据模型规范的顺序模拟不同的类别?

如何解决为什么Zelig软件包根据模型规范的顺序模拟不同的类别?

我有义务住院的登记数据。 强制住院的风险因年龄和性别而异。 我想描述控制这些风险因素后的地理变化,并希望以人口为偏移量的泊松回归能够解决问题(或类似方法)。

model <- (compulsion_count ~ age_cat * sex + area + offset(log(population),data = test)

我找到了一个解决方案,可以使用Zelig软件包模拟每个区域的计数。但是似乎根据模型输入的顺序进行了不同的模拟: age * sex产生的结果与sex * age不同。

作为可重现的示例,我添加了具有类似结构的模拟数据集。在此示例中,该现象不会影响结果,因为我尚未在模拟数据集中对风险因素进行建模。但是在我的真实数据中,这会产生稍微不同的结果。

library(tidyverse)
library(Zelig)

set.seed(667)
testdata <- data.table::data.table(compulsion = rpois(780,5),area = as.factor(sample(stringi::stri_rand_strings(65,3,pattern = "[A-Za-z0-9]"))),sex = as.factor(c(rep("male",6),rep("female",6))),age_cat = as.factor(rep(c("18-25","26-33","34-41","42-49","50-57","58-65"),65)),population = sample(500:15000,780,replace=TRUE))

Model <- zelig(compulsion  ~ age_cat * sex + area,offset = log(population),model = "poisson",data=testdata)

x.lo <- setx(Model,area="2Uq",sex = "male",age_cat = c("18-25","58-65"))
x.hi <- setx(Model,sex = "female","58-65"))
s.out <- sim(Model,x = x.lo,x1=x.hi,n=100000)  %>% zelig_qi_to_df() 
summary(s.out)
   age_cat                
18-25:200000      
26-33:100000      
34-41:100000                   
42-49:100000                    
50-57:100000                  
58-65:100000                  
NA's :500000   
  sex    
female:600000 
male  :600000                  

在第一种情况下,只有最年轻的数字才是我想要的次数

Model2 <- zelig(compulsion  ~ sex * age_cat + area,data=testdata)

x.lo2 <- setx(Model2,"58-65"))
x.hi2 <- setx(Model2,"58-65"))
s.out2 <- sim(Model2,x = x.lo2,x1=x.hi2,n=100000)  %>% zelig_qi_to_df()
summary(s.out2)
sex               
female:600000   
male  :100000   
NA's  :500000  

age_cat
18-25:200000
26-33:200000
34-41:200000
42-49:200000
50-57:200000
58-65:200000  

在第二种情况下,按预期模拟了年龄类别,但是现在性别变量已关闭。这完全是通过更改模型规格的顺序进行的。

有人可以帮助我了解这里发生的事情吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。