Моя цель - создать маргинальные эффекты и график, аналогичный тому, что сделано в этом посте в разделе «маргинальные эффекты»: https://www.drbanderson.com/myresources/interpretinglogisticregressionpartii/
Поскольку я не могу предоставить фактическую модель или фактические данные (данные являются конфиденциальными), я приведу общий пример.
У меня есть следующая модель, созданная с помощью функции glm:
model = glm(y ~ as.factor(x1) + x2 + I(x2^2) + x3 + as.factor(x4):as.factor(x5), data = dataFrame,family="binomial")
x2 - это непрерывная переменная, которую я хочу вычислить по среднему значению другой непрерывной переменной, x3, и заранее заданным значениям для x1, x4 и x5. Для дальнейшего упрощения предположим, что x1 является категорией утра, дня или ночи (таким образом, создавая два коэффициента в логит-модели), x4 категоричен либо слева, либо справа, а x5 категоричен либо вверх, либо вниз (таким образом, x4: x5 выдает результаты коэффициентов для левого и верхнего, левого и нижнего, правого и верхнего, с правым и нижним исключенным взаимодействием).
Подобно тому, что сделано в посте, я запускаю следующий код:
x2.inc <- seq(min(dataFrame$x2), max(dataFrame$x2), by = .1)
чтобы получить последовательность значений x2 для оценки предельного эффекта. Наконец, я пытаюсь запустить команду margins:
x2.margins.df <- as.data.frame(summary(margins(model, at = list(x2 = x2.inc, x3 = mean(dataFrame$x3), x1 = 'morning', x4 = 'left', x5 = 'right'))))
Однако при его запуске возникла следующая ошибка:
Error in attributes(.Data) <- c(attributes(.Data), attrib) :
'names' attribute [1] must be the same length as the vector [0]
Есть ли какие-либо мысли о том, как я могу успешно запустить команду полей, учитывая а) квадратичный характер x2 в моей модели и б) взаимодействие терминов в модели?
В качестве примечания: я знаю, что могу вычислить эти вещи вручную, если захочу. Однако, чтобы уменьшить количество кода и упростить воспроизводимость, я бы хотел, чтобы этот метод работал. Спасибо за помощь!