การถดถอยแบบลอจิสติกจะเท่ากับตัวเลขที่ไม่ถูกต้อง ดังนั้นหากตัวแปรอิสระของคุณเป็นวัตถุปัจจัย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
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