nls()

Alle Verfahren der Regressionanalyse.

nls()

Beitragvon tabea » Fr 5. Aug 2011, 14:00

Hallo zusammen,

ich muss einen Parameter einer Funktion mit Hilfe der Abstandsquadrate schätzen. Dafür gibt es die Funktion nls(). Als Startwert benutze ich einen Wert, den ich vorhergehenden Schritt mit Hilfe eines eigenen Algorithmus berechnet habe. Bei zwei meiner drei Datensätze stimmt mein Wert, den ich als Startwert für nls() benutze, einigermaßen mit dem von nls() berechneten Wert überein.
Leider bekomme ich bei einem Datensatz eine Fehlermeldung

nlsfit <- nls(new_conc1~(sqrt(new_conc2^2+((((1-(new_conc2*(1/delta2))^(1/x)))^(x))*delta1)^2)), start=list(x=lambda))

Fehler in nls(new_conc1 ~ (sqrt(new_conc2^2 + ((((1 - (new_conc2 * (1/delta2))^(1/x)))^(x)) * :
singulärer Gradient

Kann mir vielleicht jemand auf die Sprünge helfen, wo mein Fehler liegt?

Die Werte lauten:
lambda <- 1.78
new_conc1
[1] 0.4689534 0.2039363 0.6935495 0.7542363 0.0000000
> new_conc2
[1] 63.0000 16.0000 4.0000 0.0000 184.3023
> delta1
[1] 0.7542363
> delta2
[1] 184.3023


Viele Grüße,
Tabea
tabea
Einmal-Poster
Einmal-Poster
 
Beiträge: 1
Registriert: Fr 5. Aug 2011, 13:14
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: nls()

Beitragvon STATWORX » Di 9. Aug 2011, 12:56

Hallo,

die Fehlermeldung deutet auf ein Problem bei der numerischen Optimierung (Schätzung) der Parameter des Modells hin. Ein singulärer Gradient tritt dann auf, wenn die Matrix der Gradienten der Parameter keinen vollen Spaltenrang hat und somit nicht invertierbar ist. Dies kann z.B. ein einer Fehl- oder Überparametrisierung des Modells liegen oder an schlecht gewählten Startwerten.

Versuche einen anderen Startwert für die Optimierung oder schau Dir mal die TRACE = TRUE Option im nls() Kommando an.

VG
STATWORX
Foreninhaber
Foreninhaber
 
Beiträge: 85
Registriert: Di 14. Jun 2011, 19:45
Danke gegeben: 0
Danke bekommen: 18 mal in 18 Posts


Zurück zu Regressionanalyse

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste