Может ли кто-нибудь помочь мне исправить эту ошибку?
Error: The treatment must be a binary variable.
Попытка продолжить выполнение следующих строк кода и не может понять, где проблема и почему это происходит, хотя после запуска функции mutate, которая требуется взаимно для функции matchit.
library(Matching)
library(MatchIt)
library(cobalt)
library(WeightIt)
library(twang)
library(tidyverse)
library(Hmisc)
library(emmeans)
library(rms)
library(rpart)
library(randomForest)
library(survey)
library(glue)
library(nnet)
set.seed(1)
matching_lg_1 <- map(
.x = ratios, ~ matchit(
procedure ~ age + sub_id + intermacs_iv + gender + bsa + redo +
ef + days_cvvh_preop, data = cardio_db_matched %>%
mutate(procedure = if_else(procedure =='proc_1', 1, 0), .data = cardio_db_matched),
distance = "logit", method = "nearest", ratio = .x, caliper = 0.2,
m.order = "random", replace = FALSE
)
) %>%
set_names(x = ., nm = c("ratio_1:1", "ratio_1:2"))
Переменная в исходном наборе данных может принимать следующие значения: proc_1 proc_2
Спасибо за внимание.
Могу я узнать, какую версию MatchIt
вы используете?
такая же проблема здесь
@giac Вы можете получить ту же ошибку, если забудете аргумент данных или укажете неправильный фрейм данных. Легко упустить из виду, если ваша формула очень длинная.
У меня была та же проблема, и это говорит вам о том, что treatment
(procedure
) не содержит значений от 0 до 1. Скорее всего, у вас есть пропущенные значения, в этом случае установите na.omit()
или проверьте любое возможное преобразование переменной, которое приводит к этому не имея только значений 0 и 1.
Я указываю, что процедура является моей переменной обработки!!