Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

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 las cotas de confianza para los coeficientes ajustados.

Representar el ajuste, datos, valores residuales y cotas de predicción

plot(curvefit,cdate,pop)

Represente el ajuste de valores residuales.

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

Represente las cotas de predicción del ajuste.

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

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 cotas 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

Obtener la ecuación modelo

Indique el nombre del ajuste para mostrar la ecuación modelo, los coeficientes ajustados y las cotas 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 las cotas de confianza en los coeficientes

Utilizar las cotas de confianza en los coeficientes le resultará útil para evaluar y comparar ajustes. Las cotas de confianza en los coeficientes determinan su precisión. Las cotas muy separadas indican incertidumbre. Si las cotas 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 Fitting y seleccionar Fit > Save to Workspace para exportar su ajuste y su bondad de ajuste al espacio 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)

Representar el ajuste, datos y valores residuales

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

Buscar métodos

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

methods(curvefit)
Methods for class cfit:

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

Utilice el comando help para descubrir cómo utilizar un método de ajuste.

help cfit/differentiate
 DIFFERENTIATE  Differentiate a fit result object.
    DERIV1 = DIFFERENTIATE(FITOBJ,X) differentiates the model FITOBJ at the
    points specified by X and returns the result in DERIV1. FITOBJ is a Fit
    object generated by the FIT or CFIT function. X is a vector. DERIV1 is
    a vector with the same size as X. Mathematically speaking, DERIV1 =
    D(FITOBJ)/D(X).
 
    [DERIV1,DERIV2] = DIFFERENTIATE(FITOBJ, X) computes the first and
    second derivatives, DERIV1 and DERIV2 respectively, of the model
    FITOBJ.
 
    See also CFIT/INTEGRATE, FIT, CFIT.