Как использовать R контрастный пакет из GLM внутри функции - PullRequest
1 голос
/ 02 июня 2019

У меня большой набор данных, для которого я пытаюсь составить сводную таблицу вывода glm, и у меня есть некоторые термины взаимодействия, для которых я использую контрастный пакет R. Я пытаюсь написать функцию, которая будет обеспечивать вывод на основе списка переменных.

Я подозреваю, что проблема связана с форматированием символов в списке имен, поскольку оно вводится в функцию контрастности.

У меня была похожая проблема при получении переменных из списка для перехода в функцию glm, поэтому я в конечном итоге использовал substitute (). Однако эта стратегия не работала в функции контраста и выдает ошибку:

reg.con <- contrast(reg, list(substitute(i, list(i = as.name(name))) = 1, intvar = 1), list(substitute(i, list(i = as.name(name))) = 0, intvar = 1))

Ошибка: неожиданное '=' в "reg.con <- контраст (reg, список (подстановка (i, список (i = as.name (name)))) =" </p>

Я также пробовал eval (substitute ()), paste (name), as.character (name), которые выдавали ту же ошибку.

Конечно, просто использование переменной непосредственно из списка в функции также не работает:

reg.con <- contrast(reg, list(name = 1, intvar = 1), list(name = 0, intvar = 1))

Ошибка в generateData (fit = список (коэффициенты = c ((Intercept) = -2.2842358778574,: Фактор (ы) не в дизайне: название

Все переменные в списке имен, а также output и intvar имеют кодирование 0/1 и оба уровня представлены в данных.

namelist = list('var1', 'var2', 'var3', 'var4') 

results=lapply(namelist, function(name) {

reg = glm(substitute(outcome ~ i*intvar, list(i = as.name(name))), data=mydat, family=binomial)

reg.con <- contrast(reg, list(name = 1, intvar = 1), list(name = 0, intvar = 1))

mat=matrix(nrow=1, ncol=4)
mat[1,1]=as.numeric(exp(reg.con$Contrast))
mat[1,2]=as.numeric(exp(reg.con$Lower))
mat[1,3]=as.numeric(exp(reg.con$Upper))
mat[1,4]=as.numeric(reg.con$Pvalue)
})

Я ожидаю получить список выходных данных с контрастом, пределами доверительного интервала и значением p для каждой переменной в списке имен, но вместо этого я получаю множество различных ошибок, как упомянуто выше.

Буду признателен за любую помощь, заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...