2
我跟着this example運行分段混合模型使用lmer
,它工作得很好。然而,我很難將模型翻譯成lme
,因爲我需要處理異方差,並且lmer
沒有這種能力。如何在R中對lme中的分段混合模型進行編碼?
重現此問題的代碼是here。如果您認爲有必要回答這個問題,我會在代碼中包含有關實驗設計的詳細信息。
這裏是沒有斷點的模型:
linear <- lmer(mass ~ lat + (1 | pop/line), data = df)
這裏是我如何與斷點運行:
bp = 30
b1 <- function(x, bp) ifelse(x < bp, x, 0)
b2 <- function(x, bp) ifelse(x < bp, 0, x)
breakpoint <- lmer(mass ~ b1(lat, bp) + b2(lat, bp) + (1 | pop/line), data = df)
的問題是,我有很嚴重的異方差性。據我所知,這意味着我應該使用nlme軟件包中的lme
。這裏是lme
線性模型:
ctrl <- lmeControl(opt='optim')
linear2 <- lme(mass ~ lat , random=~1|pop/line, na.action = na.exclude, data=df, control = ctrl, weights=varIdent(form=~1|pop))
這是斷點模式,即,好了,破:
breakpoint2 <- lme(mass ~ b1(lat, bp) + b2(lat, bp), random=~1|pop/line, na.action = na.exclude, data=df, control = ctrl, weights=varIdent(form=~1|pop))
以下是錯誤消息:
Error in model.frame.default(formula = ~pop + mass + lat + bp + line, : variable lengths differ (found for 'bp')
哪有我把這個可愛的斷點模型從lmer
翻譯成lme
?謝謝!