답변:
다음은 적용된 연구원의 답변입니다 (통계 패키지 R 사용).
먼저 몇 가지 데이터를 만들어 보겠습니다. 즉, 간단한 이변 량 로지스틱 회귀 모델 로그 (\ frac {p} {1-p}) = \ beta_0 + \ beta_1 \ cdot x에 대한 데이터를 시뮬레이션합니다 .
> 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
둘째, 절편 ( )과 기울기 ( )를 추정하십시오 . 보다시피, 절편은 이고 기울기는 입니다.
> ## 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)
넷째,이 단계는 귀하의 질문에 직접적으로 관련됩니다 : 우리는 원시 데이터 (여기 : )가 있고 계수 ( 및 )가 있습니다. 이제 로짓을 계산하고이 적합치를 다음에 저장합니다 :glm.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
glm.fitted
와 logit2prop.glm.rdcm.
? 매우 작은 차이점이 있습니다. 귀하의 예에서 정확히 같은 숫자를 얻지 못한 이유를 알 수 없었습니다. 내가 확인할 때; 및에 library(arm); data.frame(logit2prop(glm.rdcm), invlogit(glm.rdcm))
대해 정확히 동일한 결과를 생성합니다 . 따라서, 동등하게, 그 이유를 물어 와 반환하지 정확히 같은 번호를? logit2prop
invlogit
glm.fitted
invlogit
로지스틱 모델의 링크 함수는 입니다. 그 역은 입니다.
로지스틱 모델에서 왼쪽 은 성공 확률 인 의 로짓입니다 .
따라서 를 원하면 오른쪽에서 를 평가해야합니다 .
.
glm(y ~ x)
당신에게 로지스틱 회귀 분석을 제공하지 않습니다, 당신은 설정해야합니다family=binomial(link="logit")
. 출력이Dispersion parameter for gaussian family
아니라라는 메시지가 표시binomial family
됩니다. 올바르게 수행하면fitted(glm.mod)
실제로 로짓이 아닌 추정 된 확률이 반환됩니다. 로짓을 얻습니다predict(glm.mod, type="link")
.