로지스틱 회귀는 수치 적 부정확도까지 표로 표시 한 백분율과 정확히 일치합니다. 따라서 독립 변수가 인수 객체 factor1
등이고 종속 결과 (0 및 1)가 인 x
경우 다음과 같은 표현식으로 효과를 얻을 수 있습니다
aggregate(x, list(factor1, <etc>), FUN=mean)
이것을 다음과 비교하십시오
glm(x ~ factor1 * <etc>, family=binomial(link="logit"))
예를 들어, 임의의 데이터를 생성 해 봅시다 :
set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))
요약 은
aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results
출력 내용
Group.1 Group.2 Group.3 x
1 0 0 0 0.5128205
2 1 0 0 0.4210526
3 0 1 0 0.5454545
4 1 1 0 0.6071429
5 0 2 0 0.4736842
6 1 2 0 0.5000000
...
24 1 2 3 0.5227273
나중에 참조 할 수 있도록 출력의 6 행에서 수준 (1,2,0)의 요인에 대한 추정치는 0.5입니다.
로지스틱 회귀 는 다음과 같이 계수를 포기합니다.
model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients
이를 사용하려면 물류 기능이 필요합니다.
logistic <- function(x) 1 / (1 + exp(-x))
예를 들어, 수준 (1,2,0)의 요인에 대한 추정치를 구하려면
logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])
(모든 상호 작용이 모델에 포함되어야하고 올바른 추정값을 얻기 위해 모든 관련 계수를 적용해야하는 방법에 유의하십시오.) 출력은 다음과 같습니다.
(Intercept)
0.5
의 결과에 동의합니다 aggregate
. (출력의 "(인터셉트)"표제는 입력의 흔적이며이 계산에는 사실상 의미가 없습니다.)
또 다른 형식의 동일한 정보가의 출력에 나타납니다table
. 예를 들어, (길이) 출력
table(x, factor1, factor2, factor3)
이 패널을 포함합니다 :
, , factor2 = 2, factor3 = 0
factor1
x 0 1
0 20 21
1 18 21
의 컬럼 factor1
레벨 (1,2,0) 및 도시에서의 세 가지 요소에 대응 = 1은 의 값이 동일한 우리가 판독 된 것과 동의, 및 .121 / ( 21 + 21 ) = 0.5x
1aggregate
glm
마지막으로, 데이터 집합에서 가장 높은 비율 을 산출하는 요소 조합은 다음의 출력에서 편리하게 얻을 수 있습니다 aggregate
.
> aggregate.results[which.max(aggregate.results$x),]
Group.1 Group.2 Group.3 x
4 1 1 0 0.6071429