Я использую пакет R MatchIt, чтобы вычислить весовые коэффициенты склонности, которые будут использоваться в прямом анализе выживаемости, и я замечаю очень различное поведение в соответствии с тем фактом, что некоторые ковариаты, входящие в вычисления оценочного показателя склонности, являются факторами или числовыми.
Пример: простой код для 3 переменных, одна из которых числовая (размер) и два фактора (скажем, стадия опухоли, привычки курения).Переменная лечения - это фактор, указывающий тип операции.
Пример 1: со степенью в качестве фактора и привычкой к курению в качестве целого числа,
> sapply(surg.data[,confounders], class)
tumor_size TNM.STAGE smoking_hx
"numeric" "factor" "integer"
Я вычисляю баллы склонности с помощью следующего кода и извлекаювес
data.for.ps = surg.data[,c('record_id','surgeries_combined_n', confounders)]
match.it.1 <- matchit(as.formula(paste0('surgeries_combined_n ~',paste0(confounders, collapse='+'))),
data=data.for.ps, method='full', distance='logit')
match.it.1$nn
m.data = match.data(match.it.1)
m.data$weights = match.it.1$weights
Никаких больших проблем.Результат соответствующего взвешенного анализа выживаемости следующий, независимо от того, что здесь означают «синий» и «красный»:

Пример 2точно такой же, но со стадией опухоли теперь числовой
> sapply(surg.data[,confounders], class)
tumor_size TNM.STAGE smoking_hx
"numeric" "numeric" "integer"
Точно такой же код для сопоставления, точно такой же код для анализа выживания, результат следующий:

не очень отличается, но отличается.
Пример 3 - это точно такой же код, но с учетом и стадии опухоли, и факторов курения:
> sapply(surg.data[,confounders], class)
tumor_size TNM.STAGE smoking_hx
"numeric" "factor" "factor"
Результат с использованием точно такого же кода будет следующим:

полностью разные.
Теперь нет никаких причин, почему один из двух потенциальных факторов должен быть числовым: они могут быть обоими факторами, но результаты, несомненно, различны.Кто-нибудь может помочь мне понять
- Почему это происходит?Я не думаю, что это проблема кодирования, но больше понимания того, какой именно класс использовать в match.it.
- Какое "правильное" решение для MatchIt, учитывая, что в виньетке пакетавсе переменные, входящие в вычисления показателя склонности, являются числовыми или целочисленными, даже те, которые потенциально закодированы как факторы (такие как уровень образования или семейное положение).
- Должны ли факторы всегда оставаться факторами?Что, если коэффициент закодирован, скажем, 0,1,2,3 (числовые значения, но класс = фактор): должен ли он оставаться фактором?
Большое спасибо за вашу помощь!EM