Lojistik regresyon, sayısal belirsizliğe kadar, tablolanmış yüzdelerle tam olarak aynı uyumu sağlayacaktır. Bu nedenle, bağımsız değişkenleriniz faktör nesneleri factor1vb. İse ve bağımlı sonuçlar (0 ve 1) ise x, efektleri aşağıdaki gibi bir ifadeyle elde edebilirsiniz.
aggregate(x, list(factor1, <etc>), FUN=mean)
Bunu şununla karşılaştır:
glm(x ~ factor1 * <etc>, family=binomial(link="logit"))
Örnek olarak, bazı rastgele veriler üretelim:
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)))
Özet ile elde edilir
aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results
Çıktısı şunları içerir:
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
İleride referans olması için, çıktının 6. satırındaki düzeylerdeki (1,2,0) faktörler için tahmin 0,5'tir.
Lojistik regresyon katsayılarını şu şekilde bırakır:
model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients
Bunları kullanmak için lojistik fonksiyona ihtiyacımız var:
logistic <- function(x) 1 / (1 + exp(-x))
Örneğin, (1,2,0) seviyelerdeki faktörler için tahmin elde etmek
logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])
(Doğru bir tahmin elde etmek için tüm etkileşimlerin modele nasıl dahil edilmesi gerektiğine ve ilişkili tüm katsayıların uygulanması gerektiğine dikkat edin.) Çıktı
(Intercept)
0.5
sonuçlarını kabul etmek aggregate. (Çıktıdaki "(Kesme)" başlığı, girdinin bir kalıntısıdır ve bu hesaplama için etkili bir şekilde anlamsızdır.)
Aynı bilgi başka bir biçimde çıktısında görünürtable . Örneğin, (uzun) çıktı
table(x, factor1, factor2, factor3)
bu paneli içerir:
, , factor2 = 2, factor3 = 0
factor1
x 0 1
0 20 21
1 18 21
Sütun factor1seviyeleri (1,2,0) ve gösteriler üç faktöre = 1 tekabül olduğu değerlerinin eşit biz okuma ne kabul, ve .21 / ( 21 + 21 ) = 0,5x1aggregateglm
Son olarak, veri kümesinde en yüksek oranı veren faktörlerin bir kombinasyonu, aşağıdakilerin çıktısından kolayca elde edilir aggregate:
> aggregate.results[which.max(aggregate.results$x),]
Group.1 Group.2 Group.3 x
4 1 1 0 0.6071429