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