因此,我尝试进行倾向得分匹配,然后利用Zelig对匹配的数据进行逻辑回归。
以下是我的数据的示例: DATA
因此,我试图根据痴呆症,中风和年龄来匹配患者。然后,我试图查看药物X是否与患者相配后摔倒的风险增加有关。然后,我想对药物Y和药物Z进行相同的过程,以查看每种药物是否都有关联。
这是我到目前为止用来执行匹配和逻辑回归分析的代码:
data <- read_csv("Desktop/data.csv")
View(data)
attach(data)
data[1:10,]
m.out = matchit(Fall ~ Dementia + Stroke + Age, method = "exact", data = data)
m.data = match.data(m.out)
library(Zelig)
z.out = zelig(Fall ~ Drug X + Dementia + Stroke + Age, model = "logit", data = m.data)
x.out0 <- setx(z.out, Drug X = 0)
x1.out0 <- setx(z.out, Drug X = 1)
s.out0 <- sim(z.out, x = x.out0, x1 = x1.out0)
在最后一行之前,一切似乎都进行得很顺利。这是我不断收到的错误消息。
Error in eigen(Sigma, symmetric = TRUE) :
infinite or missing values in 'x'
有什么主意我做错了吗?我已经在这里停留了一段时间,决定伸出援手。
先谢谢了。
答案 0 :(得分:0)
目前,Zelig几年没有更新,并且似乎还有一些未解决的错误。一个问题是sim命令似乎对变量名和数据类型非常敏感。对于遇到此错误的任何人,请尝试以下操作:
变量Drug X
具有Zelig可能无法处理的空间。尝试将其重命名为Drug_X
如果由于共线性而从回归模型中删除了一个变量,则需要先将其从模型中完全删除,然后再转到sim()
在运行模型之前,还要检查是否所有字符变量都已转换为因数,否则您可能会遇到以下错误:
对比错误<-(tmp,值= contr.funs [1 + isOF [nn]]): 对比只能应用于2个或更多级别的因素