로지스틱 회귀 베타 + 원시 데이터를 사용하여 확률을 얻는 방법


17

(문헌에서 나온) 모델이 적합합니다. 또한 예측 변수에 대한 원시 데이터가 있습니다.

확률을 얻기 위해 사용해야하는 방정식은 무엇입니까? 기본적으로 원시 데이터와 계수를 결합하여 확률을 얻으려면 어떻게해야합니까?

답변:


15

다음은 적용된 연구원의 답변입니다 (통계 패키지 R 사용).

먼저 몇 가지 데이터를 만들어 보겠습니다. 즉, 간단한 이변 량 로지스틱 회귀 모델 로그 (\ frac {p} {1-p}) = \ beta_0 + \ beta_1 \ cdot x에 대한 데이터를 시뮬레이션합니다 영형(1)=β0+β1엑스.

> set.seed(3124)
> 
> ## Formula for converting logit to probabilities 
> ## Source: http://www.statgun.com/tutorials/logistic-regression.html
> logit2prop <- function(l){exp(l)/(1+exp(l))}
> 
> ## Make up some data
> y <- rbinom(100, 1, 0.2)
> x <- rbinom(100, 1, 0.5)

예측 x변수는 이분법 변수입니다.

> x
  [1] 0 1 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 1 
 [48] 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0
 [95] 1 1 1 1 1 0

둘째, 절편 ( β0 )과 기울기 ( β1 )를 추정하십시오 . 보다시피, 절편은 β0=0.8690 이고 기울기는 β1=1.0769 입니다.

> ## Run the model
> summary(glm.mod <- glm(y ~ x, family = "binomial"))

[...]

    Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept)  -0.8690     0.3304  -2.630  0.00854 **
x            -1.0769     0.5220  -2.063  0.03910 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

[...]

셋째, R은 대부분의 통계 패키지와 마찬가지로 적합치, 즉 확률을 계산할 수 있습니다. 이 값을 참조로 사용하겠습니다.

> ## Save the fitted values
> glm.fitted <- fitted(glm.mod)

넷째,이 단계는 귀하의 질문에 직접적으로 관련됩니다 : 우리는 원시 데이터 (여기 : )가 있고 계수 ( 및 )가 있습니다. 이제 로짓을 계산하고이 적합치를 다음에 저장합니다 :엑스β0β1glm.rcdm

> ## "Raw data + coefficients" method (RDCM)
## logit = -0.8690 + (-1.0769) * x
glm.rdcm <- -0.8690 + (-1.0769)*x

마지막 단계는 R의 fitted함수 ( glm.fitted)와 내 "수제"접근 방식 ( logit2prop.glm.rdcm)을 기준으로 적합치 값을 비교하는 것입니다 . 내 자신의 기능 logit2prop(첫 번째 단계 참조)은 로짓을 확률로 변환합니다.

> ## Compare fitted values and RDCM
> df <- data.frame(glm.fitted, logit2prop(glm.rdcm))
> df[10:25,]
> df[10:25,]
   glm.fitted logit2prop.glm.rdcm.
10  0.1250000            0.1250011
11  0.2954545            0.2954624
12  0.1250000            0.1250011
13  0.2954545            0.2954624
14  0.2954545            0.2954624
15  0.1250000            0.1250011
16  0.1250000            0.1250011
17  0.1250000            0.1250011
18  0.2954545            0.2954624
19  0.1250000            0.1250011
20  0.1250000            0.1250011
21  0.1250000            0.1250011
22  0.1250000            0.1250011
23  0.1250000            0.1250011
24  0.1250000            0.1250011
25  0.2954545            0.2954624

6
glm(y ~ x)당신에게 로지스틱 회귀 분석을 제공하지 않습니다, 당신은 설정해야합니다 family=binomial(link="logit"). 출력이 Dispersion parameter for gaussian family아니라라는 메시지가 표시 binomial family됩니다. 올바르게 수행하면 fitted(glm.mod)실제로 로짓이 아닌 추정 된 확률이 반환됩니다. 로짓을 얻습니다 predict(glm.mod, type="link").
caracal

오아! 나는 그것을 고쳤다. 나를 고쳐 주셔서 감사합니다, @caracal! 이것은 정말 당혹 스럽습니다 ( 다른 SO 스레드 에서 이미 정답을 제공 했으므로 훨씬 더 당황 합니다 ).
Bernd Weiss

1
패키지 암에는 invlogit 기능이 있으며 이는 logit2prop 기능입니다.
Manoel Galdino

우리에 대해 정확히 같은 번호를 얻은 안 glm.fittedlogit2prop.glm.rdcm.? 매우 작은 차이점이 있습니다. 귀하의 예에서 정확히 같은 숫자를 얻지 못한 이유를 알 수 없었습니다. 내가 확인할 때; 및에 library(arm); data.frame(logit2prop(glm.rdcm), invlogit(glm.rdcm))대해 정확히 동일한 결과를 생성합니다 . 따라서, 동등하게, 그 이유를 물어 와 반환하지 정확히 같은 번호를? logit2propinvlogitglm.fittedinvlogit
Erdogan CEVHER

20

로지스틱 모델의 링크 함수는 입니다. 그 역은 입니다.에프:엑스로그엑스1엑스:엑스특급엑스1+특급엑스

로지스틱 모델에서 왼쪽 은 성공 확률 인 의 로짓입니다 .π

에프(π)=β0+엑스1β1+엑스2β2+

따라서 를 원하면 오른쪽에서 를 평가해야합니다 .π

π=(β0+엑스1β1+엑스2β2+) .


순서 로지스틱 회귀 분석은 어떻습니까? 그렇다면 논리는 무엇입니까?
user333

@ user333 : 글쎄 ... 서수 로지스틱 회귀 분석을 많이하지는 않았지만 같은 링크 기능을 사용한다고 생각합니다. 어떤 경우에는, 논리는 동일합니다 : 링크 기능 역 응답 변수를 얻기 위해 ...
ocram

예 ...하지만 어떤 확률이 어떤 타겟 카테고리에 매핑되는지 어떻게 알 수 있습니까?
user333

@ user333, 귀하의 질문은 로지스틱 회귀에 관한 것입니다. 서수 회귀에 대한 답변을 원한다면 질문에 추가하십시오.
mpiktas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.