Соотношения шансов вместо логитов в выводе stargazer () LaTeX

При использовании Stargazer для создания таблицы LaTeX на объекте логистической регрессии стандартным поведением является вывод логит-значений каждой модели. Можно ли вместо этого получить exp (logit)? То есть, могу ли я вместо этого получить коэффициенты шансов?

В документации звездочета ниже упоминается аргумент "Coef", но я не понимаю, может ли это включить exp (logits).

Coef: список числовых векторов, которые заменят значения коэффициентов по умолчанию для каждой модели. Имена элементов будут использоваться для сопоставления коэффициентов с отдельными ковариатами и, следовательно, должны соответствовать именам ковариат. Вектор NULL указывает, что для данной модели следует использовать набор коэффициентов по умолчанию. Напротив, вектор NA означает, что все коэффициенты модели должны быть оставлены пустыми.


person Rasmus Larsen    schedule 26.04.2013    source источник


Ответы (4)


Согласно симбиотическому комментарию от 2014 года, более поздние версии '' stargazer '' имеют параметры '' apply. * '' Для '' coef '' '' se '' '' t '' '' p '' и '' ci '', позволяющий напрямую преобразовывать эту статистику.

apply.coef a function that will be applied to the coefficients.
apply.se a function that will be applied to the standard errors.
apply.t a function that will be applied to the test statistics.
apply.p a function that will be applied to the p-values.
apply.ci a function that will be applied to the lower and upper bounds of the confidence intervals.

Это означает, что вы можете напрямую использовать ...

stargazer(model, 
          apply.coef = exp,
          apply.se   = exp)

РЕДАКТИРОВАТЬ: Однако я заметил, что простое возведение в степень CI не дает того, чего вы ожидаете.

РЕДАКТИРОВАТЬ: вы можете получить правильные CI с помощью описанного метода здесь.

person slackline    schedule 13.10.2015

stargazer позволяет заменять множество вещей, метки зависимых переменных, метки ковариаций и так далее. Чтобы заменить те, которые вам нужно предоставить вектором меток переменных, это делается для того, чтобы имена строк были доступны для публикации, а не имена переменных из R по умолчанию.

Итак, чтобы иметь отношение шансов, вам нужно предоставить вектор отношений шансов в stargazer. Как получить этот вектор? На самом деле, очень легко. Допустим, ваша модель называется model, тогда ваш код:

coef.vector <- exp(model$coef)
stargazer(model,coef=list(coef.vector))

Если в вашей таблице несколько моделей, то список следует расширить, например coef=list(coef.vector1,coef.vector2,...), где все векторы в списке были бы получены аналогичным возведением в степень, как указано выше.

person Maxim.K    schedule 20.06.2013
comment
Отлично, это отлично работает для коэффициентов, но как получить правильные стандартные ошибки и доверительные интервалы. - person MYaseen208; 16.07.2015
comment
Чтобы получить правильные стандартные ошибки, вы можете использовать аргумент apply.se, чтобы указать, что вы хотите, чтобы все стандартные ошибки были возведены в степень. Точно так же вы можете использовать apply.ci для доверительных интервалов - person symbiotic; 15.09.2015

Итак, проблема в том, что вы хотите отобразить (не логарифмическое) отношение шансов, но сохранить статистику теста на основе базовой линейной модели. По умолчанию, когда вы используете один из методов «применения», например apply.coef = exp, stargazer пересчитывает статистику t и значения p. Мы этого не хотим. Кроме того, стандартные ошибки находятся в основе журнала, но мы не можем просто возвести их в степень. Я предпочитаю:

  1. возвести в степень в звездочете
  2. выключить авто п и авто т
  3. отчет (без преобразования) t-статистики в таблице вместо стандартных ошибок

В коде это:

stargazer(model, apply.coef=exp, t.auto=F, p.auto=F, report = "vct*")
person Clark Bernier    schedule 18.03.2016

В разных сообщениях есть фрагменты правильного ответа, но ни один из них, похоже, не объединяет все воедино. Предполагая следующее:

glm_out <- glm(Y ~ X, data=DT, family = "binomial")

Получение отношения шансов

Для логистической регрессии коэффициент регрессии (b1) - это предполагаемое увеличение логарифма шансов Y на единицу увеличения X. Итак, чтобы получить отношение шансов, мы просто используем функцию exp:

OR <- exp(coef(glm_out))

# pass in coef directly
stargazer(glm_out, coef = list(OR), t.auto=F, p.auto=F)

# or, use the apply.coef option
stargazer(glm_out, apply.coef = exp, t.auto=F, p.auto=F)

Получение стандартной ошибки отношения шансов

Вы не можете просто использовать apply.se = exp для получения Std. Ошибка отношения шансов

Вместо этого вы должны использовать функцию: Std.Error.OR = OR * SE(coef)

# define a helper function to extract SE from glm output
se.coef <- function(glm.output){sqrt(diag(vcov(glm.output)))}

# or, you can use the arm package
se.coef <- arm::se.coef

#Get the odds ratio
OR <- exp(coef(glm_out))

# Then, we can get the `StdErr.OR` by multiplying the two:
Std.Error.OR <-  OR * se.coef(glm_out)

Итак, чтобы попасть в Stargazer, мы используем следующее:

# using Std Errors
stargazer(glm_out, coef=list(OR), se = list(Std.Error.OR), t.auto=F, p.auto=F)

Вычисление CI для отношения шансов

Доверительные интервалы в настройке отношения шансов не являются симметричными. Итак, мы не можем просто сделать ± 1,96 * SE (OR), чтобы получить доверительный интервал. Вместо этого мы можем вычислить его из исходных логарифмических коэффициентов exp(coef ± 1.96*SE).

# Based on normal distribution to compute Wald CIs:
# we use confint.default to obtain the conventional confidence intervals
# then, use the exp function to get the confidence intervals

CI.OR <- as.matrix(exp(confint.default(glm_out)))

Итак, чтобы попасть в Stargazer, мы используем следующее:

# using ci.custom
stargazer(glm_out, coef=list(OR), ci.custom = list(CI.OR), t.auto=F, p.auto=F, ci = T)

# using apply.ci
stargazer(glm_out, apply.coef = exp, apply.ci = exp, t.auto=F, p.auto=F, ci = T)

ПРИМЕЧАНИЕ ОБ ИСПОЛЬЗОВАНИИ ИНТЕРВАЛА УВЕРЕННОСТИ ДЛЯ ИСПЫТАНИЙ НА ЗНАЧИМОСТЬ:

Не используйте доверительные интервалы отношения шансов для вычисления значимости (см. Примечание и ссылку внизу). Вместо этого вы можете сделать это, используя коэффициенты журнала:

z <- coef(glm_out)/se.coef(glm_out)

И используйте это, чтобы получить значения p для тестов значимости:

pvalue <- 2*pnorm(abs(coef(glm_out)/se.coef(glm_out)), lower.tail = F)

(источник: https://data.princeton.edu/wws509/r/c3s1 )

См. Эту ссылку для более подробного обсуждения статистического тестирования: https://stats.stackexchange.com/questions/144603/why-do-my-p-values-differ-between-logistic-regression-output-критерийхи-квадрат

Однако важно отметить, что, в отличие от значения p, 95% доверительный интервал не сообщает о статистической значимости меры. На практике 95% доверительный интервал часто используется в качестве прокси для наличия статистической значимости, если он не перекрывает нулевое значение (например, OR = 1). Тем не менее было бы неправильно интерпретировать OR с 95% доверительным интервалом, охватывающим нулевое значение, как свидетельство отсутствия связи между воздействием и результатом. источник: объяснение отношения шансов

person HoneyBuddha    schedule 08.09.2020
comment
Спасибо за ваше сообщение! ... Тем не менее, я все еще получаю странную конф. уровни, обозначенные различными порогами (, ,) для моего вывода OR, который не полностью соответствует конф. уровни моих оценок. Но это только вопрос степени. В выводе OR нет ничего, что внезапно оказалось бы sig. этого не было раньше (оценки по умолчанию) или наоборот. Есть только некоторые Си, которые оказались *** (ИЛИ), которые были подписаны. на нижнем уровне перед: ** (оценка). Имеет ли это смысл? - person Fabian Habersack; 26.11.2020