일부 신진 대사 모델에 지수 기수를 매개 변수화하려고합니다. 이미 문제없이 lmer에서이 작업을 수행했으며, 기록 된 종속 변수와 독립 변수를 사용했습니다. 그러나 이제는 반드시 종속 변수와 기하 급수적으로 관련이없는 다른 매개 변수를 통합하려고합니다. 따라서 nlme (lme4 :: nlmer는 고정 효과를 처리하지 못하는 것)로 바뀌었지만 많은 경험이 없습니다. 초보자 실수에 대해 미리 사과드립니다.nlme의 요인 : 백 솔류 오차의 특이점
아래 코드를 사용하면 다음 오류가 발생합니다. 내가 '사이트'를 포함하지 않는 단순한 기능에 맞게 할 때, 모델이 제대로 작동하는 것 같다
Error in nlme.formula(dep ~ scaling_fun(alpha, beta, ind, site), data = scale_df, :
Singularity in backsolve at level 0, block 1
: 나는 그것이 '사이트'요인이 misspecified되고 함께 할 수있는 뭔가가 같은데요.
의견을 보내 주시면 대단히 감사하겠습니다.
감사합니다, 앨리
# dput for data
# copy from http://pastebin.com/WNHhi2kZ (too large to include here)
> head(scale_df)
dep ind spp site
2 0.28069471 -0.0322841 157 A
3 -0.69719050 -1.2568901 183 A
4 0.29252012 0.1592420 246 A
5 0.72030740 -0.3282789 154 A
6 -0.08601891 0.3623756 110 A
7 0.30793594 0.2230840 154 A
scaling_fun <- function(alpha, beta, ind, site) {
return(beta + ind^alpha + site*(ind^alpha))
}
# results in singularity in backsolve error
nlme(dep ~ trait_scaling_fun(alpha, beta, ind, site),
data = scale_df,
fixed = list(alpha + beta + site ~ 1), random = alpha ~ 1|spp,
start = list(fixed = c(0.7, 0, 1)))
##############################
# simpler function converges #
##############################
scaling_fun <- function(alpha, beta, ind) {
return(beta + ind^alpha)
}
nlme(dep ~ scaling_fun(alpha, beta, ind),
data = scale_df,
fixed = list(alpha + beta ~ 1), random = alpha ~ 1|spp,
start = list(fixed = c(0.7, 0)))
감사합니다. Roland -이 점이 좋습니다. 나는 다음과 같은 수학 공식에 관심이 있습니다 : D = (β_1 + β_site + α_spp), 여기서 β_1은 거친 평균 β 항이고 β_site는 사이트 별 편차입니다 β_spp는 임의의 용어입니다 (α에 대해서도 마찬가지 임). 이를 위해, 나는 일탈 (합계 0) 대조를 가진 사이트를 코드화한다. 대조 (사이트) = contr.sum (수준 (사이트))]. scaling_fun을 사용하여 다음과 같이 nlme을 실행합니다. fixed = list (alpha + beta ~ site), random = alpha + beta ~ 1 | spp. 그런 다음 alpha. (가로 채기)를 α_1로, 베타. (가로 채기)를 β_1로 해석합니다. 동의하니? –
btw, 실제로 사이트 별 편차 값에 관심이 있습니다. 따라서 고정 효과로 코딩했습니다. –
고정 계수뿐만 아니라 무작위 효과도 추출 할 수 있다는 것을 알고 계십니까? – Roland