나는 내 코드에서 벗어나고 싶은 것을 해결했으며이 결과를 얻는 더 깨끗한 방법을 찾고 있습니까? 내장 함수에서와 마찬가지로 내가 모르는 사람입니까?다중 요인 모델에서 개별 회귀 추정치를 얻는 더 명확한 방법이 있습니까 R
우리는이 개 상관 관계 변수 (약 200) 이항 많은 요인, 여기 단지 F1과 일러스트 및 F2 있습니다
x <- rnorm(100)
y <- rnorm(100)
f1 <- rbinom(100, 1, 0.5)
f2 <- rbinom(100, 1, 0.5)
# which gives the possible groups:
group <- rep(NA, 100)
group[which(f1 & f2)] <- "A"
group[which(!f1 & f2)] <- "B"
group[which(f1 & !f2)] <- "C"
group[which(!f1 & !f2)] <- "D"
df <- data.frame(group,y,x,f1,f2)
우리는 용어와 상호 작용을 추가 및 제거 모델 선택을 실행하고 끝을 모델과 , 우리가 F1 및 F2와 X 과의 상호 작용을 모두 예측 인자로 나온 말
m <- glm(y ~ x * f1 + x * f2)
그럼 내 목표는 각 그룹의 예에 대한 간단한 선형 모델의 출력을 확인하는 것입니다 . : Y = X + A * B
이런 출력 제공# The possible groups:
groups <- data.frame(groups = c("A", "B", "C", "D"), f1=c(1,0,1,0), f2=c(1,1,0,0))
interactions <- grep(":", attr(m$terms, "term.labels"))
factors <- attr(m$terms, "term.labels")[-c(1,interactions)]
interaction.terms <- substring(attr(m$terms, "term.labels")[interactions], 3)
functions <- data.frame(groups$groups, intercept=NA, slope=NA)
for(i in seq(along=groups$groups)) {
intercept <- coef(m)["(Intercept)"] + sum(groups[i, factors]*coef(m)[factors])
slope <- coef(m)["x"] + sum(groups[i, interaction.terms]*coef(m)[paste("x:", interaction.terms, sep="")])
functions[i, "intercept"] <- intercept
functions[i, "slope"] <- slope
}
:
> functions
groups.groups intercept slope
1 A -0.10932806 -0.07468630
2 B -0.37755949 -0.17769345
3 C 0.23635139 0.18406047
4 D -0.03188004 0.08105332
출력은 정확하고 싶습니다 무슨. 그래서 괜찮습니다. 나는이 방법이 상당히 복잡하다고 생각합니다. 나는이 함수들을 빼내는 더 깔끔한 방법을 찾을 수없는 것 같다.
이 솔루션은 훨씬 간단하고 오류가 발생하기 쉬운 방법입니다. –