2016-08-30 3 views
0

lmer-model에서 임의의 효과를 수정 (덮어 쓰기) 할 수있는 방법이 있습니까? 고정 효과가 슬롯은 [email protected]라고 내가 사용하는 고정 효과를 변경할 수 :lmer에서 임의의 효과를 수정하는 방법

[email protected][1] <- 0.5 

임의 효과에 대해이 작업을 수행하기 위해 비슷한 방법이 있나요? lmer 오브젝트는 이미 임의의 효과를 포함하고 있거나 나중에 예를 들어 ranef().

+0

상기 랜덤 효과는 (벡터)에 의해 변위되고 일탈 자신의 예상 값으로부터 z 평가 (here)에서 일부 코드이고, I는 임의의 발견 'my_lmer @ pp $ b (1)'에 영향을줍니다. 그러나'my_lmer @ pp $ b (1) <- 0'을 사용하여이 객체를 수정하는 것이 불가능합니다. – winwin

+1

왜 필요한가요? – Roland

답변

0

실제로 무엇을하려는 지 알아내는 것이 좋습니다. 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 차례로

012,329를 호출

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] 
} 
+0

답변 해 주셔서 감사합니다. 의도는 주어진 예측치를 가진 가상의 두 번째 모델로 예측 된 값을 모델과 비교하는 것이었다. 기본적으로 나는 이전의 예측값으로 변경하고 예측 된 값의 가능성을보고 싶었다. lmer 객체를 편집하고'predict' 메서드를 사용하는 것이 더 쉽다고 생각했습니다. – winwin

+0

실제로, 나는 그것을 스스로 번식하는 것이 더 쉬울 것이라고 생각합니다; 'getME (fitted_model, c ("X", "Zt"))를 통해'X'와 (전치 된)'Z' 행렬을 추출 할 수 있습니다; 'X % * % beta + t (Zt) % * % b'는 당신에게 예측을 제공해야합니다 ... –

+0

감사합니다! – winwin

관련 문제