Помогите мне понять в байесовском GLM

13

Я пытаюсь запустить байесовский логит на данных здесь . Я использую bayesglm()в armпакете в R. Кодирование достаточно просто:

df = read.csv("http://dl.dropbox.com/u/1791181/bayesglm.csv", header=T)
library(arm)
model = bayesglm(PASS ~ SEX + HIGH, family=binomial(link="logit"), data=df)

summary(model) дает следующий вывод:

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.10381    0.10240   1.014    0.311    
SEXMale      0.02408    0.09363   0.257    0.797    
HIGH        -0.27503    0.03562  -7.721 1.15e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2658.2  on 1999  degrees of freedom
Residual deviance: 2594.3  on 2000  degrees of freedom
AIC: 2600.3

Пожалуйста, проведите меня через это. Я понимаю, что в этом коде используется очень слабый априор (поскольку я не определяю априорные средства), поэтому результат будет практически таким же, если я буду использовать glm()вместо bayesglm(). Но результат все еще должен быть в байесовском духе, верно? Каковы здесь и ? Разве это не частые инструменты вывода? Они здесь по-разному интерпретируются?пZ

user3671
источник
Это комментарий, а не ответ, но это то, что имеет смысл для меня. Вы получаете оценки, которые, вероятно, являются значениями, для которых апостериорное распределение максимизировано. Может также быть возможно, что они являются лишь средством задней части? Стоит проверить, если можете. Но независимо от того, каковы точные детали, когда у вас есть некоторые оценки, вы можете проверить их с помощью обычного Estimate / Std. Ошибка -> процедура z-показателя, которая работает, если апостериор достаточно близок к нормальному (он переходит в нормальный при некоторых условиях, которые обычно выполняются).
Эрик
Эрик ... Вы правы: коэффициенты действительно являются средствами задних плотностей. Мой вопрос о p- и z-значениях. Что они представляют здесь?
user3671
Ok. Если у вас есть плотность, которая приблизительно нормально распределена, вы можете проверить, является ли ее среднее значение нулевым, взяв z-показатель = среднее / стандартное отклонение распределения и сравнив его со стандартным нормальным распределением. Затем вы посмотрите, насколько маловероятно, что ваше значение или большее значение будет соответствовать стандартному нормальному распределению -> p-значению. Смотрите Z-Score в Википедии для деталей.
Эрик
Ну да. Но зачем делать это в байесовской обстановке? В байесовском выводе точечная оценка - мое лучшее предположение о случайном параметре, поэтому нет необходимости проверять его. Самое большее, я могу включить «достоверный интервал», который эквивалентен частому «доверительному интервалу», но статистическая интерпретация которого сильно отличается. Это запутанная часть о выводе summary (). Дух байесовский, но выход частый?
user3671
Суть в том, что полученная вами оценка будет другой, поскольку вы использовали ранее. И хотя точечная оценка является «наилучшим предположением», если вы хотите показать байесовским способом, что что-то оказывает влияние, вы бы попытались показать, что достоверный интервал не содержит ноль. Когда вы аппроксимируете апостериор по нормали с тем же средним и sd (асимптотически правильным), то интервал (1-p / 2) вероятности - это самый большой симметричный интервал достоверности, содержащий ноль, поэтому ваш ответ в основном такой же. Р-значение указано выше.
Эрик

Ответы:

16

Отличный вопрос! Хотя есть байесовское значение р , и один из авторов пакета плеча является адвокатом, что вы видите в вашем выходе не байесовский р-значение. Проверьте классmodel

class(model)
"bayesglm" "glm"      "lm" 

и вы можете видеть, что класс bayesglm наследуется от glm. Кроме того, проверка пакета arm не показывает какого-либо конкретного метода сводки для объекта bayesglm. Итак, когда вы делаете

summary(model)

вы на самом деле делаете

summary.glm(model)

и получить частую интерпретацию результатов. Если вы хотите более Байесовскую перспективу, функция в рукеdisplay()

atiretoo - восстановить монику
источник
+1 Отличный ответ! Это проблема с R, так много очень интеллектуальных статистиков, которые пишут ужасный код, который оставляет такие виды наземных мин.
Богдановец
Это кажется осознанным выбором со стороны дизайнеров, а не упущением.
atiretoo - восстановить монику
После прочтения ссылки я согласен с намерением, но в этом случае summary () должен был быть повторно реализован, чтобы просто вызывать display (), а не выдавать бессмысленные результаты без предупреждения. Человек, который задал этот вопрос, был сбит с толку кодом, нарушающим пользовательскую модель для R, которая была установлена ​​каждым другим объектом, который они когда-либо использовали. Это ужасная практика программирования.
Богдановец
2
Большое спасибо, atiretoo. Это поднимает другой вопрос. В чем разница между display () и summary ()? Мне кажется, что вывод из первого - это просто вывод из второго, за исключением двух столбцов и округленный до 2 цифр. Казалось бы, из поста Гельмана, на который вы ссылались выше.
user3671
Да, и из обсуждения в блоге Эндрю Гельмана кажется, что они исправят это в будущих версиях пакета arm.
atiretoo - восстановить монику