¿Cómo leer la bondad de ajuste en nls de R?

12

Estoy tratando de interpretar la salida de nls (). He leído esta publicación pero aún no entiendo cómo elegir la mejor opción. De mis ajustes tengo dos salidas:

> 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 

y

> 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

El primero tiene dos parámetros y un error residual más pequeño. El segundo solo un parámetro pero el peor error residual. ¿Cuál es el mejor ajuste?

emanuele
fuente
44
X
3
Eliminé mi respuesta, que sugería usar AIC, porque un comentario hizo un caso convincente de que AIC generalmente no es aplicable para la selección de nlsajustes. Siempre trataría de decidir un modelo no lineal basado en el conocimiento mecanicista, particularmente si el conjunto de datos es tan pequeño como el suyo.
Roland
1
Hmmm ¿El comentarista original en la respuesta ahora eliminada de @ Roland estaría dispuesto a volver a publicar el comentario? No es inmediatamente obvio para mí por qué AIC no sería apropiado ... (aunque stat.ethz.ch/pipermail/r-help/2010-August/250742.html da algunas pistas), y como nota final, si usted está tratando de identificar una transformación de poder, puede intentar las transformaciones de Box-Cox ( boxcoxen el MASSpaquete)
Ben Bolker
1
AIC podría usarse para seleccionar modelos.

Respuestas:

2

Simplemente puede usar la prueba F y anova para compararlos. Aquí hay algunos códigos.

> 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
>
Stat
fuente
55
¿Más información sobre cómo interpretar los resultados?
skan
Por favor expanda. Con mi conjunto de datos no obtengo salida para el valor F y para Pr (> F). ¿Cuál es el punto de ejecutar los análisis de anova? Solo estoy familiarizado con su uso para comparar categorías, no modelos.
user3386170