Main Content

Evaluar un ajuste de curva

Este ejemplo muestra cómo trabajar con un ajuste de curva.

Cargar datos y ajustar una curva polinomial

load census
curvefit = fit(cdate,pop,'poly3','normalize','on')
curvefit = 
     Linear model Poly3:
     curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4
       where x is normalized by mean 1890 and std 62.05
     Coefficients (with 95% confidence bounds):
       p1 =       0.921  (-0.9743, 2.816)
       p2 =       25.18  (23.57, 26.79)
       p3 =       73.86  (70.33, 77.39)
       p4 =       61.74  (59.69, 63.8)

La salida muestra la ecuación modelo ajustada, los coeficientes ajustados y los límites de confianza para los coeficientes ajustados.

Representar el ajuste, datos, valores residuales y límites de predicción

plot(curvefit,cdate,pop)

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

Represente el ajuste de valores residuales.

plot(curvefit,cdate,pop,'Residuals')

Figure contains an axes object. The axes object with xlabel x contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, zero line.

Represente los límites de predicción del ajuste.

plot(curvefit,cdate,pop,'predfunc')

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve, prediction bounds.

Evaluar el ajuste en un punto específico

Evalúe el ajuste en un punto específico definiendo un valor para x con esta fórmula: y = fittedmodel(x).

curvefit(1991)
ans = 252.6690

Evaluar los valores de ajuste en muchos puntos

Evalúe el modelo en un vector de valores para extrapolar al año 2050.

xi = (2000:10:2050).';
curvefit(xi)
ans = 6×1

  276.9632
  305.4420
  335.5066
  367.1802
  400.4859
  435.4468

Obtenga límites de predicción en dichos valores.

ci = predint(curvefit,xi)
ci = 6×2

  267.8589  286.0674
  294.3070  316.5770
  321.5924  349.4208
  349.7275  384.6329
  378.7255  422.2462
  408.5919  462.3017

Represente el ajuste e intervalos de predicción a lo largo del rango de ajuste extrapolado. De forma predeterminada, el ajuste se representa sobre el rango de datos. Para ver los valores extrapolados del ajuste, defina el límite x superior de los ejes como 2050 antes de representar el ajuste. Para representar los intervalos de predicción, utilice predobs o predfun como tipo de gráfica.

plot(cdate,pop,'o')
xlim([1900,2050])
hold on
plot(curvefit,'predobs')
hold off

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent fitted curve, prediction bounds.

Obtener la ecuación modelo

Indique el nombre del ajuste para mostrar la ecuación modelo, los coeficientes ajustados y los límites de confianza para los coeficientes ajustados.

curvefit
curvefit = 
     Linear model Poly3:
     curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4
       where x is normalized by mean 1890 and std 62.05
     Coefficients (with 95% confidence bounds):
       p1 =       0.921  (-0.9743, 2.816)
       p2 =       25.18  (23.57, 26.79)
       p3 =       73.86  (70.33, 77.39)
       p4 =       61.74  (59.69, 63.8)

Para obtener solo la ecuación modelo, utilice formula.

formula(curvefit)
ans = 
'p1*x^3 + p2*x^2 + p3*x + p4'

Obtener nombres y valores de coeficiente

Especifique un coeficiente por su nombre.

p1 = curvefit.p1
p1 = 0.9210
p2 = curvefit.p2
p2 = 25.1834

Obtenga todos los nombres de coeficientes. Observe la ecuación de ajuste (por ejemplo, f(x) = p1*x^3+...) para ver los términos del modelo para cada coeficiente.

coeffnames(curvefit)
ans = 4x1 cell
    {'p1'}
    {'p2'}
    {'p3'}
    {'p4'}

Obtenga todos los valores de coeficientes.

coeffvalues(curvefit)
ans = 1×4

    0.9210   25.1834   73.8598   61.7444

Obtener los límites de confianza en los coeficientes

Utilizar los límites de confianza en los coeficientes le resultará útil para evaluar y comparar ajustes. Los límites de confianza en los coeficientes determinan su precisión. Los límites muy separados indican incertidumbre. Si los límites cruzan por cero para los coeficientes lineales, significa que no puede tener la certeza de que estos coeficientes difieran de cero. Si los términos de algunos modelos tienen coeficientes de cero, entonces no ayudarán con el ajuste.

confint(curvefit)
ans = 2×4

   -0.9743   23.5736   70.3308   59.6907
    2.8163   26.7931   77.3888   63.7981

Examinar estadísticas de bondad de ajuste

Para obtener estadísticas de bondad de ajuste desde la línea de comandos, puede:

  • Abrir la app Curve Fitter. En la pestaña Curve Fitter, en la sección Export, haga clic en Export y seleccione Export to Workspace para exportar su ajuste y su bondad de ajuste al área de trabajo.

  • Especificar el argumento de salida gof con la función fit.

Recree el ajuste especificando el argumento gof y los argumentos de salida para obtener estadísticas de bondad de ajuste e información de algoritmos de ajuste.

[curvefit,gof,output] = fit(cdate,pop,'poly3','normalize','on')
curvefit = 
     Linear model Poly3:
     curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4
       where x is normalized by mean 1890 and std 62.05
     Coefficients (with 95% confidence bounds):
       p1 =       0.921  (-0.9743, 2.816)
       p2 =       25.18  (23.57, 26.79)
       p3 =       73.86  (70.33, 77.39)
       p4 =       61.74  (59.69, 63.8)
gof = struct with fields:
           sse: 149.7687
       rsquare: 0.9988
           dfe: 17
    adjrsquare: 0.9986
          rmse: 2.9682

output = struct with fields:
        numobs: 21
      numparam: 4
     residuals: [21x1 double]
      Jacobian: [21x4 double]
      exitflag: 1
     algorithm: 'QR factorization and solve'
    iterations: 1

Represente un histograma de los valores residuales para buscar una distribución más o menos normal.

histogram(output.residuals,10)

Figure contains an axes object. The axes object contains an object of type histogram.

Representar el ajuste, datos y valores residuales

plot(curvefit,cdate,pop,'fit','residuals')
legend Location SouthWest
subplot(2,1,1)
legend Location NorthWest

Figure contains 2 axes objects. Axes object 1 with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve. Axes object 2 with xlabel x contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, zero line.

Buscar métodos

Enumere todos los métodos que puede utilizar con el ajuste.

methods(curvefit)
Methods for class cfit:

argnames       category       cfit           coeffnames     coeffvalues    confint        dependnames    differentiate  feval          fitoptions     formula        indepnames     integrate      islinear       numargs        numcoeffs      plot           predint        probnames      probvalues     setoptions     type           

Para obtener más información sobre cómo usar un método de ajuste, consulte cfit.

Consulte también

| | |