Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- P(t) = k*p0*exp(r*t) / (k+p0*(exp(r*t)-1))
- nlme(y ~ k*p0*exp(r*t) / (k+p0*(exp(r*t)-1)), ## not working at all (bad numerical properties?)
- data = data,
- fixed = k + p0 + r ~ var1 + var2,
- random = k + p0 + r ~ 1|UID,
- start = c(p0=1, k=100, r=1))
- nlme(y ~ SSlogis(t, Asym, xmid, scal), ## not working, as start= is inappropriate
- data = data,
- fixed = Asym + xmid + scal ~ var1 + var2, ## works fine with ~ 1
- random = Asym + xmid + scal ~ 1|UID,
- start = getInitial(y ~ SSlogis(Dauer, Asym, xmid, scal), data = data))
- library(nlme)
- data <- groupedData(y ~ t | UID, data=data) ## not strictly necessary
- initVals <- getInitial(y ~ SSlogis(t, Asym, xmid, scal), data = data)
- baseModel<- nlme(y ~ SSlogis(t, Asym, xmid, scal),
- data = data,
- fixed = list(Asym ~ 1, xmid ~ 1, scal ~ 1),
- random = Asym + xmid + scal ~ 1|UID,
- start = initVals
- )
- nestedModel <- update(baseModel, fixed=list(Asym ~ var1, xmid ~ 1, scal ~ 1), start = c(fixef(baseModel)[1], 0, fixef(baseModel)[2], fixef(baseModel)[3]))
- library(lme4) ## careful loading nlme and lme4 concurrently
- customLogitModel <- function(t, Asym, AsymVar1, xmid, scal) {
- (Asym+AsymVar1*var1)/(1+exp((xmid-t)/scal))
- }
- customLogitModelGradient <- deriv(
- body(customLogitModel)[[2]],
- namevec = c("Asym", "AsymVar1", "xmid", "scal"),
- function.arg=customLogitModel
- )
- ## find starting parameters
- initVals <- getInitial(y ~ SSlogis(t, Asym, xmid, scal), data = data)
- # Fit the model
- model <- nlmer(
- y ~ customLogitModelGradient(t=t, Asym, AsymVar1, xmid, scal, var1=var) ~
- # Random effects with a second ~
- (Asym | UID) + (xmid | UID) + (scal | UID),
- data = data,
- start = c(Asym=initVals[1], AsymVar1=0, xmid=initVals[2], scal=initVals[3])
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement