Regresi logistik akan, hingga ketidaktepatan numerik, memberikan kecocokan yang sama persis dengan persentase yang ditabulasi. Oleh karena itu, jika variabel independen Anda adalah objek faktorfactor1 , dll., Dan hasil dependen (0 dan 1) adalah x, maka Anda dapat memperoleh efek dengan ekspresi seperti
aggregate(x, list(factor1, <etc>), FUN=mean)
Bandingkan ini dengan
glm(x ~ factor1 * <etc>, family=binomial(link="logit"))
Sebagai contoh, mari kita buat beberapa data acak:
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)))
Ringkasan diperoleh dengan
aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results
Outputnya termasuk
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
Untuk referensi di masa mendatang, estimasi faktor pada level (1,2,0) pada baris 6 dari output adalah 0,5.
Regresi logistik memberikan koefisiennya dengan cara ini:
model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients
Untuk menggunakannya, kita membutuhkan fungsi logistik:
logistic <- function(x) 1 / (1 + exp(-x))
Untuk mendapatkan, misalnya, estimasi faktor pada level (1,2,0), hitung
logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])
(Perhatikan bagaimana semua interaksi harus dimasukkan dalam model dan semua koefisien terkait harus diterapkan untuk mendapatkan perkiraan yang benar.) Outputnya adalah
(Intercept)
0.5
setuju dengan hasil aggregate. (Judul "(Intercept)" di output adalah sisa input dan secara efektif tidak berarti untuk perhitungan ini.)
Informasi yang sama dalam bentuk lain muncul di keluaran daritable . Misalnya, output (panjang) dari
table(x, factor1, factor2, factor3)
termasuk panel ini:
, , factor2 = 2, factor3 = 0
factor1
x 0 1
0 20 21
1 18 21
factor121 / ( 21 + 21 ) = 0,5x1aggregateglm
Akhirnya, kombinasi faktor-faktor yang menghasilkan proporsi tertinggi dalam dataset mudah diperoleh dari output aggregate:
> aggregate.results[which.max(aggregate.results$x),]
Group.1 Group.2 Group.3 x
4 1 1 0 0.6071429