Я использую биномиальную логистическую регрессию , чтобы определить , если воздействие has_x
или has_y
воздействий на вероятность того , что пользователь нажмет на что - то. Моя модель следующая:
fit = glm(formula = has_clicked ~ has_x + has_y,
data=df,
family = binomial())
Это вывод из моей модели:
Call:
glm(formula = has_clicked ~ has_x + has_y,
family = binomial(), data = active_domains)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.9869 -0.9719 -0.9500 1.3979 1.4233
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.504737 0.008847 -57.050 < 2e-16 ***
has_xTRUE -0.056986 0.010201 -5.586 2.32e-08 ***
has_yTRUE 0.038579 0.010202 3.781 0.000156 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 217119 on 164182 degrees of freedom
Residual deviance: 217074 on 164180 degrees of freedom
AIC: 217080
Number of Fisher Scoring iterations: 4
Поскольку каждый коэффициент является значимым, используя эту модель, я могу сказать, какое значение имеет любая из этих комбинаций, используя следующий подход:
predict(fit, data.frame(has_x = T, has_y=T), type = "response")
Я не понимаю, как я могу сообщить о Std. Ошибка прогноза.
Мне просто нужно использовать ? Или мне нужно конвертировать используя подход, описанный здесь ?
Если я хочу понять стандартную ошибку для обеих переменных, как бы я это учел?
В отличие от этого вопроса , мне интересно понять, каковы верхние и нижние границы ошибки в процентах. Например, мои предсказания показывает значение 37% для True,True
можно рассчитать , что это для 95 % С I ? (0,3% выбрали, чтобы проиллюстрировать мою точку зрения)
источник
Ответы:
Ваш вопрос может возникнуть из-за того, что вы имеете дело с коэффициентами и вероятностями, что поначалу сбивает с толку. Поскольку логистическая модель представляет собой нелинейное преобразование вычисления доверительные интервалы не так просты.βTИкс
Фон
Напомним, что для модели логистической регрессии
Вероятность из : р = е α + β 1 х 1 + β 2 х 2( Y= 1 ) p=eα+β1x1+β2x21+eα+β1x1+β2x2
Коэффициенты из : ( р(Y=1) (p1−p)=eα+β1x1+β2x2
Вход Коэффициенты из : журнал ( р(Y=1) log(p1−p)=α+β1x1+β2x2
Рассмотрим случай, когда у вас есть увеличение на единицу переменной , т.е.Икс1 , тогда новые шансыИкс1+ 1
Коэффициент логарифма =β1
Относительный риск или (отношение вероятностей) =eα+β1x1+β1+β2x21+eα+β1x1+β1+β2x2eα+β1x1+β2x21+eα+β1x1+β2x2
Интерпретация коэффициентов
Как бы вы интерпретировали значение коэффициента ? Предполагая, что все остальное остается неизменным:βj
Доверительные интервалы для одного параметраβj
which is a confidence interval on the odds ratio. Note that these intervals are for a single parameter only.
If you include several parameters you can use the Bonferroni procedure, otherwise for all parameters you can use the confidence interval for probability estimates
Bonferroni procedure for several parameters
Ifg parameters are to be estimated with family confidence coefficient of approximately 1−α , the joint Bonferroni confidence limits are
Confidence intervals for probability estimates
The logistic model outputs an estimation of the probability of observing a one and we aim to construct a frequentist interval around the true probabilityp such that Pr(pL≤p≤pU)=.95
One approach called endpoint transformation does the following:
SincePr(xTβ)=F(xTβ) is a monotonic transformation of xTβ
Concretely this means computingβTx±z∗SE(βTx) and then applying the logit transform to the result to get the lower and upper bounds:
The estimated approximate variance ofxTβ can be calculated using the covariance matrix of the regression coefficients using
The advantage of this method is that the bounds cannot be outside the range(0,1)
There are several other approaches as well, using the delta method, bootstrapping etc.. which each have their own assumptions, advantages and limits.
Sources and info
My favorite book on this topic is "Applied Linear Statistical Models" by Kutner, Neter, Li, Chapter 14
Otherwise here are a few online sources:
источник
To get the 95% confidence interval of the prediction you can calculate on the logit scale and then convert those back to the probability scale 0-1. Here is an example using the titanic dataset.
The mean and low/high 95% CI.
And the output from just using
type='response'
, which only gives the meanисточник
predict(fit, data.frame(Sex='male', Pclass='First'), type='response', se.fit=TRUE)
will work.