Advertisement
Guest User

Untitled

a guest
Jul 31st, 2015
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. P(t) = k*p0*exp(r*t) / (k+p0*(exp(r*t)-1))
  2.  
  3. nlme(y ~ k*p0*exp(r*t) / (k+p0*(exp(r*t)-1)), ## not working at all (bad numerical properties?)
  4. data = data,
  5. fixed = k + p0 + r ~ var1 + var2,
  6. random = k + p0 + r ~ 1|UID,
  7. start = c(p0=1, k=100, r=1))
  8.  
  9. nlme(y ~ SSlogis(t, Asym, xmid, scal), ## not working, as start= is inappropriate
  10. data = data,
  11. fixed = Asym + xmid + scal ~ var1 + var2, ## works fine with ~ 1
  12. random = Asym + xmid + scal ~ 1|UID,
  13. start = getInitial(y ~ SSlogis(Dauer, Asym, xmid, scal), data = data))
  14.  
  15. library(nlme)
  16. data <- groupedData(y ~ t | UID, data=data) ## not strictly necessary
  17. initVals <- getInitial(y ~ SSlogis(t, Asym, xmid, scal), data = data)
  18. baseModel<- nlme(y ~ SSlogis(t, Asym, xmid, scal),
  19. data = data,
  20. fixed = list(Asym ~ 1, xmid ~ 1, scal ~ 1),
  21. random = Asym + xmid + scal ~ 1|UID,
  22. start = initVals
  23. )
  24.  
  25. nestedModel <- update(baseModel, fixed=list(Asym ~ var1, xmid ~ 1, scal ~ 1), start = c(fixef(baseModel)[1], 0, fixef(baseModel)[2], fixef(baseModel)[3]))
  26.  
  27. library(lme4) ## careful loading nlme and lme4 concurrently
  28. customLogitModel <- function(t, Asym, AsymVar1, xmid, scal) {
  29. (Asym+AsymVar1*var1)/(1+exp((xmid-t)/scal))
  30. }
  31.  
  32. customLogitModelGradient <- deriv(
  33. body(customLogitModel)[[2]],
  34. namevec = c("Asym", "AsymVar1", "xmid", "scal"),
  35. function.arg=customLogitModel
  36. )
  37.  
  38. ## find starting parameters
  39. initVals <- getInitial(y ~ SSlogis(t, Asym, xmid, scal), data = data)
  40.  
  41. # Fit the model
  42. model <- nlmer(
  43. y ~ customLogitModelGradient(t=t, Asym, AsymVar1, xmid, scal, var1=var) ~
  44. # Random effects with a second ~
  45. (Asym | UID) + (xmid | UID) + (scal | UID),
  46. data = data,
  47. start = c(Asym=initVals[1], AsymVar1=0, xmid=initVals[2], scal=initVals[3])
  48. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement