49 lines
1.8 KiB
R
Raw Permalink Normal View History

2025-01-12 00:52:51 +08:00
## Really just one section from ../inst/scripts/ch08.R :
library(nlme)
(fm1Lis <- nlsList(rate ~ SSasympOff(pressure, Asym, lrc, c0) | QB,
data = Dialyzer))
(iLis <- intervals(fm1Lis))
## TODO: stopifnot(all.equal(..)) ?
fm1Dial.gnls <- gnls(rate ~ SSasympOff(pressure, Asym, lrc, c0),
data = Dialyzer,
params = list(Asym + lrc ~ QB, c0 ~ 1),
start = c(53.6, 8.6, 0.51, -0.26, 0.225))
summary(fm1Dial.gnls)
## Modified Data (==> rename it !) ----------------------------------
DialyzerM <- Dialyzer
DialyzerM$QBcontr <- 2 * (Dialyzer$QB == 300) - 1
fm1Dial.nls <-
nls(rate ~ SSasympOff(pressure, Asym.Int + Asym.QB * QBcontr,
lrc.Int + lrc.QB * QBcontr, c0),
data = DialyzerM,
start = c(Asym.Int = 53.6, Asym.QB = 8.6, lrc.Int = 0.51,
lrc.QB = -0.26, c0 = 0.225))
summary(fm1Dial.nls)
logLik(fm1Dial.nls)
plot(fm1Dial.gnls, resid(.) ~ pressure, abline = 0)
fm2Dial.gnls <- update(fm1Dial.gnls,
weights = varPower(form = ~ pressure))
anova(fm1Dial.gnls, fm2Dial.gnls)
ACF(fm2Dial.gnls, form = ~ 1 | Subject)
plot(ACF(fm2Dial.gnls, form = ~ 1 | Subject), alpha = 0.05)
fm3Dial.gnls <-
update(fm2Dial.gnls, corr = corAR1(0.716, form = ~ 1 | Subject))
fm3Dial.gnls
(im3 <- intervals(fm3Dial.gnls))
(a23 <- anova(fm2Dial.gnls, fm3Dial.gnls))
anoC <-
cbind(fm2Dial.gnls =
c(df=7, AIC= 748.4749, BIC= 769.0664, logLik=-367.2375,
L.Ratio=NA, "p-value"=NA),
fm3Dial.gnls=
c(8, 661.0424, 684.5756, -322.5212, 89.4325, 3.e-21))
# NB: exact p-value irrelevant
stopifnot(
all.equal(anoC, t(data.matrix(a23)[,rownames(anoC)]), tol = 7e-7)
)