lmer-model에서 임의의 효과를 수정 (덮어 쓰기) 할 수있는 방법이 있습니까? 고정 효과가 슬롯은 [email protected]
라고 내가 사용하는 고정 효과를 변경할 수 :lmer에서 임의의 효과를 수정하는 방법
[email protected][1] <- 0.5
임의 효과에 대해이 작업을 수행하기 위해 비슷한 방법이 있나요? lmer 오브젝트는 이미 임의의 효과를 포함하고 있거나 나중에 예를 들어 ranef()
.
lmer-model에서 임의의 효과를 수정 (덮어 쓰기) 할 수있는 방법이 있습니까? 고정 효과가 슬롯은 [email protected]
라고 내가 사용하는 고정 효과를 변경할 수 :lmer에서 임의의 효과를 수정하는 방법
[email protected][1] <- 0.5
임의 효과에 대해이 작업을 수행하기 위해 비슷한 방법이 있나요? lmer 오브젝트는 이미 임의의 효과를 포함하고 있거나 나중에 예를 들어 ranef()
.
실제로 무엇을하려는 지 알아내는 것이 좋습니다. reference class 객체의 내부를 수정하는 것은 특히 위험하다 -
library(lme4)
fm1 <- lmer(Reaction~Days+(1|Subject),sleepstudy) ## just for example
[email protected]$getRefClass()$methods()
는 당신에게 방법을 보여줍니다, here에서 ... ... 그러나, 당신이 갈 필요가 실수로 개체 또는 원인 세그멘테이션 오류의 사본을 수정할 수 있습니다 그보다 더 깊은 조금 ... 알고 보니 (L. src/predModule.cpp
85) b
이 실제로 취할 무엇을하는 내부 u
차례로
VectorXd merPredD::b(const double& f) const {return d_Lambdat.adjoint() * u(f);}
즉 b
을 변경하려면 u0
의 해당 값을 변경해야합니다. 나는 현재 그것이 가능하다고 생각하지 않는다.
, 이것은 ... 확인
rr <- [email protected] ## extract response module
u0 <- getME(m,"u") ## conditional modes
L <- getME(m,"L")
## sd <- 1/getME(pp,"L")@x
## filled elements of L matrix==diag for simple case
## for more general case need the following -- still efficient
sd <- sqrt(diag(chol2inv(L)))
## fixed-effects contribution to linear predictor
fc <- getME(m,"X") %*% getME(m,"beta")
ZL <- t(getME(m,"Lambdat") %*% getME(m,"Zt"))
## evaluate the unscaled conditional density on the deviance scale
dc <- function(z) {
uu <- u0 + z * sd ## displace conditional modes
## should still work if z is a vector (by recycling, because u values
## applying to each group are stored adjacent to each other)
rr$updateMu(fc + ZL %*% uu) ## update linear predictor
drc <- unname(as.vector(tapply(rr$devResid(), ff, sum)))
uuc <- colSums(matrix(uu * uu,nrow=nvar))
(drc + uuc)[grps]
}
답변 해 주셔서 감사합니다. 의도는 주어진 예측치를 가진 가상의 두 번째 모델로 예측 된 값을 모델과 비교하는 것이었다. 기본적으로 나는 이전의 예측값으로 변경하고 예측 된 값의 가능성을보고 싶었다. lmer 객체를 편집하고'predict' 메서드를 사용하는 것이 더 쉽다고 생각했습니다. – winwin
실제로, 나는 그것을 스스로 번식하는 것이 더 쉬울 것이라고 생각합니다; 'getME (fitted_model, c ("X", "Zt"))를 통해'X'와 (전치 된)'Z' 행렬을 추출 할 수 있습니다; 'X % * % beta + t (Zt) % * % b'는 당신에게 예측을 제공해야합니다 ... –
감사합니다! – winwin
상기 랜덤 효과는 (벡터)에 의해 변위되고 일탈 자신의 예상 값으로부터
z
평가 (here)에서 일부 코드이고, I는 임의의 발견 'my_lmer @ pp $ b (1)'에 영향을줍니다. 그러나'my_lmer @ pp $ b (1) <- 0'을 사용하여이 객체를 수정하는 것이 불가능합니다. – winwin왜 필요한가요? – Roland