Die Ausgabe von NonlinearModelFit unterscheidet sich vom korrekten Ergebnis

  • In Mathematica 8 habe ich Schwierigkeiten mit dem NonlinearModelFit, da das Ergebnis etwas ungenau ist. Ein Beispiel für eine mögliche Regression ist wie folgt:

     data = {{0.9, 1.1}, {2, 2}, {6, 4.1}, {6.9, 4.5}, {9.9, 5.5}, 
            {10.7, 5.9}, {14, 6.7}, {15.9, 7.3}}
    
    NonlinearModelFit[data, b*t^a, {a, b}, t]
     

    Das Ergebnis, das ich bekomme, ist: 1.34232*t^0.615024, Es sollte jedoch 1.23...*t^0.6548 sein.

    Was mache ich falsch? Das Gleiche erlebe ich, wenn ich versuche, eine exponentielle Regression durchzuführen (wie folgt: NonlinearModelFit[data, b*a^t, {a, b}, t]).

    30 April 2012
    Jon Galloway
2 answers
  • Dies ist die von Mathematica zurückgegebene Anpassung:

     nlm = NonlinearModelFit[data, b*t^a, {a, b}, t]
     

    Das Modell ist

     nlm[t]
    
    (* 1.34232 t^0.615024 *)
     

    Die Residuen (Modell (x) -y) sind:

     nlm["FitResiduals"]
    
    (* {-0.158097,-0.0558756,0.059473,0.0967975,0.00211152,0.132971,-0.103818,-0.0577413} *) 
     

    Die Summe der Quadrate der Residuen ist:

     res1 = Total[nlm["FitResiduals"]^2]
    
    (* 0.0728215 *)
     

    Eine explizite Überprüfung:

     Total[(nlm[#[[1]]] - #[[2]])^2 & /@ data]
    
    (* 0.0728215 *)
     

    Die Summe der Quadrate des Residuums relativ zum anderen Modell ist

     y[t_] = 1.23 t^0.6548
    
    res2 = Total[(y[#[[1]]] - #[[2]])^2 & /@ data]
    
    (* 0.152818 *) 
     

    Seit res1 & lt; res2 Ich würde sagen, dass Mathematica besser passt. Warum sagen Sie, dass die zweite Funktion am besten geeignet ist?

    30 April 2012
    b.gatessucks
  • Sie möchten Folgendes ausführen:

     FindFit[data, b*t^a, {a, b}, t, NormFunction -> (Norm[#, 1] &)]
    
    {a -> 0.66955, b -> 1.20678}
     

    Normalerweise versuchen Sie in Statistiken, die 2 zu reduzieren -Norm. In einigen Fällen möchten Sie jedoch stattdessen die 1-Norm der Residuen reduzieren. Die Reduzierung der 1-Norm ist robuster, wenn große Ausreißer vorhanden sind, die einen übermäßigen Einfluss auf die Parameterwerte haben.

    Kurz gesagt, Mathematica gibt Ihnen die richtige Antwort. Die Antwort oben ist nur eine weitere richtige Antwort und die, die Sie erhalten wollten.

    Einige Softwarepakete wählen diese Norm anstelle der 2-Norm für Sie. Das ist unverantwortlich dumm

    01 May 2012
    Issac Kelly