Разместить модель на подмножестве столбцов в кадре данных в R - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь использовать lm () и matchit () для подмножества ковариат.Я сгенерировал произвольное количество столбцов с префиксом "covar", то есть "covar.1", "covar.2" и т. Д. Я хотел бы сделать что-то вроде

lm (group ~ covars, data)= df)

где covars - вектор строк c ("covar.1", "covar.2", ...).

Я пробовал несколько вещей, таких как

  cols <- colnames(df)
  covars <- cols[grep("covar", colnames(df))]
  m.out <- matchit(group ~ covars, data=df, method="nearest", distance="logit", caliper=.20)

, но получил variable lengths differ (found for 'covars').

Определение нового фрейма данных только с ковариями и группами может работать, но это противоречит моей цели с использованием matchit, потому что я хочу, чтобы у сопоставляемых данных были и другие столбцы, такжене только ковары, которые я выбрал для сопоставления.

Это кажется легкой задачей, но почему-то я не могу понять после некоторого поиска в Google.Не уверен, что формула R ожидает там как подмножество столбцов.Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Я упоминал об этом в вашем другом вопросе, но пакет cobalt имеет специальную функцию для этого, а именно f.build().Первый аргумент f.build() представляет собой строку, содержащую имя переменной обработки (или левую часть формулы), а второй аргумент представляет собой строковый вектор, содержащий имена переменных, которые должны находиться в правой частиформула (т. е. ковариаты).Вторым аргументом также может быть data.frame, содержащий ковариаты;f.build() просто извлекает имена.Затем он выполняет операцию, описанную в выбранном ответе, добавляет бит в нескольких других аспектах, которые делают его немного более общим и устойчивым к ошибкам.

Документация cobalt имеет раздел на f.build() и использует его в качестве примеров с glm() и matchit().

После выполнения matchit() вы можете оценить баланс по ковариатам, используя функцию bal.tab() в cobalt, котораясовместим с MatchIt:

bal.tab(m.out, un = TRUE)

Документация для cobalt подробно объясняет его использование с MatchIt.

0 голосов
/ 19 декабря 2018

Возможно, вы захотите использовать as.formula.Попробуйте сделать это:

Заменить group ~ covars

на as.formula(paste('group','~', paste(covars, collapse="+"))))

...