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 factor1
vb. İ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 factor1
seviyeleri (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,5x
1aggregate
glm
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