Логистическая регрессия, вплоть до неточности, даст точно такие же соответствия, как и в табличных процентах. Следовательно, если ваши независимые переменные являются факторными объектами 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
Для дальнейшего использования оценка для факторов на уровнях (1,2,0) в строке 6 выходных данных составляет 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 соответствует трем факторам на уровнях (1,2,0) и показывает, что из значений, равных , в соответствии с тем, что мы считали из и .21/(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