2

所以我正在尝试进行倾向得分匹配,然后利用 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'

任何想法我做错了什么?我已经被困在这里一段时间了,决定寻求帮助。

提前致谢。

4

1 回答 1

0

目前,Zelig 已经有几年没有更新了,并且似乎有一些未解决的错误。一个问题是 sim 命令似乎对变量名和数据类型非常敏感。对于遇到此错误的任何人,请尝试以下操作:

  • 该变量Drug X有一个 Zelig 可能无法处理的空间。尝试将其重命名为Drug_X

  • 如果有一个变量由于共线性而从回归模型中删除,则需要将其完全从模型中删除,然后再进行sim()

  • 在运行模型之前,还要检查任何字符变量是否已转换为因子,否则您可能会收到以下错误:

    对比错误<-(tmp, value = contr.funs[1 + isOF[nn]]) :对比只能应用于具有 2 个或更多级别的因子

于 2020-08-10T00:54:02.913 回答