È possibile utilizzare i normali test del rapporto di verosimiglianza. Ecco un semplice esempio. Innanzitutto, creiamo osservazioni da 10 individui in base ai tuoi parametri:
Asym = .6
xmid = 23
scal = 5
n = 10
time = seq(1,60,5)
d = data.frame(time=rep(time,10),
Asym, xmid, scal, group=0)
d$subj = factor(rep(1:n, each=length(time)))
Ora lascia che la metà di essi abbia diversi asintoti e parametri del punto medio:
ind = (nrow(d)/2):nrow(d)
d$Asym[ind] = d$Asym[ind] + .1
d$xmid[ind] = d$xmid[ind] + 10
d$group[ind] = 1
d$group=factor(d$group)
Possiamo simulare i valori di risposta per tutti gli individui, in base al modello:
set.seed(1)
d = transform(d, y = Asym/(1+exp((xmid-time)/scal)) +
rnorm(nrow(d), sd=.04))
library(lattice)
xyplot(y~time | group, group=subj,
data=d, type=c("g","l"), col="black")

Possiamo vedere chiare differenze tra i due gruppi, differenze che i modelli dovrebbero essere in grado di rilevare. Ora proviamo innanzitutto ad adattare un modello semplice , ignorando i gruppi:
> fm1 = nls(y ~ SSlogis(time, Asym, xmid, scal), data=d)
> coef(fm1)
Asym xmid scal
0.6633042 28.5219166 5.8286082
Forse come previsto, le stime per Asyme xmidsono da qualche parte tra i valori dei parametri reali per i due gruppi. (Che questo sarebbe il caso non è ovvio, sebbene, poiché anche il parametro scale è cambiato, per adattarsi alla errata specificazione del modello.) Ora adattiamo un modello completo , con parametri diversi per i due gruppi:
> fm2 = nls(y ~ SSlogis(time, Asym[group], xmid[group], scal[group]),
data=d,
start=list(Asym=rep(.6,2), xmid=rep(23,2), scal=rep(5,2)))
> coef(fm2)
Asym1 Asym2 xmid1 xmid2 scal1 scal2
0.602768 0.714199 22.769315 33.331976 4.629332 4.749555
Poiché i due modelli sono nidificati, possiamo eseguire un test del rapporto di verosimiglianza:
> anova(fm1, fm2)
Analysis of Variance Table
Model 1: y ~ SSlogis(time, Asym, xmid, scal)
Model 2: y ~ SSlogis(time, Asym[group], xmid[group], scal[group])
Res.Df Res.Sum Sq Df Sum Sq F value Pr(>F)
1 117 0.70968
2 114 0.13934 3 0.57034 155.54 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Il valore p estremamente piccolo mostra chiaramente che il modello semplice era troppo semplice; i due gruppi non differiscono nelle loro parametri.
Tuttavia, le stime dei due parametri di scala sono quasi identiche, con una differenza di appena .1. Forse abbiamo bisogno solo di un parametro di scala? (Naturalmente sappiamo che la risposta è sì, poiché abbiamo simulato i dati.)
(La differenza tra i due parametri asintoti è anche solo .1, ma questa è una grande differenza quando prendiamo in considerazione gli errori standard - vedi summary(fm2).)
Quindi inseriamo un nuovo modello, con un scaleparametro comune per i due gruppi, ma diverso Asyme xmidparametri, come prima:
> fm3 = nls(y ~ SSlogis(time, Asym[group], xmid[group], scal),
data=d,
start=list(Asym=rep(.6,2), xmid=rep(23,2), scal=5))
> coef(fm3)
Asym1 Asym2 xmid1 xmid2 scal
0.6035251 0.7129002 22.7821155 33.3080264 4.6928316
E poiché il modello ridotto è nidificato nel modello completo, possiamo nuovamente eseguire un test del rapporto di verosimiglianza:
> anova(fm3, fm2)
Analysis of Variance Table
Model 1: y ~ SSlogis(time, Asym[group], xmid[group], scal)
Model 2: y ~ SSlogis(time, Asym[group], xmid[group], scal[group])
Res.Df Res.Sum Sq Df Sum Sq F value Pr(>F)
1 115 0.13945
2 114 0.13934 1 0.00010637 0.087 0.7685
Il grande valore p indica che il modello ridotto si adatta così come il modello completo, come previsto.
Ovviamente possiamo fare test simili per verificare se sono necessari valori di parametri diversi per just Asym, just xmido entrambi. Detto questo, non consiglierei di fare una regressione graduale come questa per eliminare i parametri. Invece, basta testare il modello completo ( fm2) rispetto al modello semplice ( fm1) ed essere soddisfatti dei risultati. Per quantificare eventuali differenze, i grafici saranno utili.