Wie liest man die Anpassungsgüte auf nls von R?


12

Ich versuche, die Ausgabe von nls () zu interpretieren. Ich habe diesen Beitrag gelesen, verstehe aber immer noch nicht, wie ich die beste Passform auswähle. Aus meinen Passungen habe ich zwei Ausgänge:

> summary(m)

  Formula: y ~ I(a * x^b)

  Parameters:
  Estimate Std. Error t value Pr(>|t|)    
  a 479.92903   62.96371   7.622 0.000618 ***
  b   0.27553    0.04534   6.077 0.001744 ** 
  ---
  Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

  Residual standard error: 120.1 on 5 degrees of freedom

  Number of iterations to convergence: 10 
  Achieved convergence tolerance: 6.315e-06 

und

> summary(m1)

  Formula: y ~ I(a * log(x))

  Parameters:
  Estimate Std. Error t value Pr(>|t|)    
  a   384.49      50.29   7.645 0.000261 ***
  ---
  Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

  Residual standard error: 297.4 on 6 degrees of freedom

  Number of iterations to convergence: 1 
  Achieved convergence tolerance: 1.280e-11

Der erste hat zwei Parameter und einen kleineren Restfehler. Der zweite einzige Parameter, aber der schlechteste Restfehler. Welches passt am besten?


4
x

3
Ich habe meine Antwort gelöscht, die die Verwendung vorgeschlagen hat AIC, da ein Kommentar den überzeugenden Fall ergab, dass AIC für die Auswahl von nlsPassungen nicht generell anwendbar ist . Ich würde immer versuchen, mich für ein nichtlineares Modell zu entscheiden, das auf mechanistischem Wissen basiert, insbesondere wenn der Datensatz so klein ist wie der Ihre.
Roland

1
Hmmm. Wäre der ursprüngliche Kommentator der jetzt gelöschten Antwort von @ Roland bereit, den Kommentar erneut zu veröffentlichen? Mir ist nicht sofort klar, warum AIC nicht angemessen wäre ... (obwohl stat.ethz.ch/pipermail/r-help/2010-August/250742.html einige Hinweise gibt) - und als letzte Anmerkung, wenn Sie versuchen, eine Energieumwandlung zu identifizieren, können Sie versuchen, Box-Cox transformationss ( boxcoxin der MASSPackung)
Ben Bolker

1
Mit AIC können Modelle ausgewählt werden.

Antworten:


2

Sie können sie einfach mit dem F-Test und der Anova vergleichen. Hier sind einige Codes.

> x <- 1:10
> y <- 2*x + 3                            
> yeps <- y + rnorm(length(y), sd = 0.01)
> 
> 
> m1=nls(yeps ~ a + b*x, start = list(a = 0.12345, b = 0.54321))
> summary(m1)

Formula: yeps ~ a + b * x

Parameters:
   Estimate Std. Error t value Pr(>|t|)    
a 2.9965562  0.0052838   567.1   <2e-16 ***
b 2.0016282  0.0008516  2350.6   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 0.007735 on 8 degrees of freedom

Number of iterations to convergence: 2 
Achieved convergence tolerance: 3.386e-09 

> 
> 
> m2=nls(yeps ~ a + b*x+c*I(x^5), start = list(a = 0.12345, b = 0.54321,c=10))
> summary(m2)

Formula: yeps ~ a + b * x + c * I(x^5)

Parameters:
   Estimate Std. Error  t value Pr(>|t|)    
a 3.003e+00  5.820e-03  516.010   <2e-16 ***
b 1.999e+00  1.364e-03 1466.004   <2e-16 ***
c 2.332e-07  1.236e-07    1.886    0.101    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 0.006733 on 7 degrees of freedom

Number of iterations to convergence: 2 
Achieved convergence tolerance: 1.300e-06 

> 
> anova(m1,m2)
Analysis of Variance Table

Model 1: yeps ~ a + b * x
Model 2: yeps ~ a + b * x + c * I(x^5)
  Res.Df Res.Sum Sq Df     Sum Sq F value Pr(>F)
1      8 0.00047860                             
2      7 0.00031735  1 0.00016124  3.5567 0.1013
>

5
Weitere Informationen zur Interpretation der Ergebnisse?
skan

Bitte erweitern. Mit meinem Datensatz bekomme ich keine Ausgabe für F-Wert und für Pr (> F). Was bringt es, die anova-Analysen durchzuführen? Ich bin nur damit vertraut, dass es zum Vergleichen von Kategorien und nicht von Modellen verwendet wird.
user3386170
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.