Ich versuche mittels nlsLM, Daten an eine Funktion mit mehreren Parametern anzupassen.
Das läuft in einer Schleife, und die Daten werden aus einer Datenbank gelesen, in der auch die Ergebnisse gespeichert werden. Und da die nlsLM-Funktion in manchen Fällen abbricht, ist das mittels Try gekapselt, und das funktioniert auch. (Und mit nlsLM stabiler als mit nls.)
Jetzt versuche ich, die nlsLM-Funktion zu gewichten - Und bekomme Fehler. Und da dieser Fehler auch im modifizierten Beispiel aus der Doku auftritt, erkläre ich mein Problem daran.
Wie bereits erwähnt, findet man in der "wfct {minpack.lm} R Documentation - Weighting function that can be supplied to the weights argument of nlsLM or nls" folgenden Code:
Code: Alles auswählen
library(minpack.lm);
### Examples from 'nls' doc ###
## note that 'nlsLM' below may be replaced with calls to 'nls'
Treated <- Puromycin[Puromycin$state == "treated", ]
## Weighting by inverse of response 1/y_i:
nlsLM(rate ~ Vm * conc/(K + conc), data = Treated, start = c(Vm = 200, K = 0.05), weights = wfct(1/rate))
Nun baue ich ein Try drumherum:
---schnipp---
Code: Alles auswählen
try(result<-nlsLM(rate ~ Vm * conc/(K + conc), data = Treated, start = c(Vm = 200, K = 0.05), weights = wfct(1/rate)), silent=FALSE)
Dann bekomme ich folgenden Fehler:
---schnipp---
Code: Alles auswählen
Error in DATA[[i]] : Indizierung außerhalb der Grenzen
Mit 'weights = wfct(1/rate))' und ohne Try geht es:
---schnipp---
Code: Alles auswählen
nlsLM(rate ~ Vm * conc/(K + conc), data = Treated, start = c(Vm = 200, K = 0.05), weights = wfct(1/rate))
Ohne 'weights = wfct(1/rate))' und mit Try geht es:
---schnipp---
try(result<-nlsLM(rate ~ Vm * conc/(K + conc), data = Treated, start = c(Vm = 200, K = 0.05)), silent=FALSE)
---schnapp---
Aber nicht beides zusammen. Tja,... Und jetzt sitz' ich vor meinem Bioldschirm und kuck' wie 'ne Kuh wenn's donnert... - Und bin für jede Hilfe dankbar.
Dank&Gruß
schubbiaschwilli