Ошибка в собственном (сигма, симметричный = ИСТИНА): бесконечные или отсутствующие значения в 'x' с логистической регрессией zelig

Итак, я пытаюсь выполнить сопоставление оценок склонности, а затем использую Zelig для выполнения логистической регрессии на сопоставленных данных.

Вот пример того, как выглядят мои данные: ДАННЫЕ

Поэтому я пытаюсь сопоставить пациентов по признаку деменции, инсульта и возраста. Затем я пытаюсь понять, связано ли лекарство 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'

Есть идеи, что я делаю не так? Я застрял здесь некоторое время и решил обратиться за помощью.

Заранее спасибо.


person Ben Walker    schedule 22.08.2018    source источник


Ответы (1)


В настоящее время Zelig не обновлялся в течение нескольких лет и, похоже, имеет некоторые не исправленные ошибки. Одна из проблем заключается в том, что команда sim очень чувствительна к именам переменных и типам данных. Для тех, кто получает эту ошибку, попробуйте следующее:

  • переменная Drug X имеет пробел, с которым Зелиг, вероятно, не справится. Попробуйте переименовать его во что-то вроде Drug_X

  • Если есть переменная, которая выпадает из регрессионной модели из-за коллинеарности, ее необходимо полностью исключить из модели, прежде чем перейти к sim()

  • Перед запуском модели также убедитесь, что все символьные переменные преобразованы в коэффициенты, иначе вы можете получить следующую ошибку:

    Ошибка контрастов ‹- (tmp, value = contr.funs [1 + isOF [nn]]): контрасты могут применяться только к факторам с 2 или более уровнями

person Omar Wasow    schedule 10.08.2020