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.

Estimación de cuantil condicional mediante suavizado de kernel

En este ejemplo se muestra cómo estimar cuantiles condicionales de una respuesta dados Datos predictores utilizando un bosque aleatorio cuantil y calculando la función de distribución condicional de la respuesta mediante el suavizado de kernel.

Para la velocidad de estimación cuantil,,, y utilice la interpolación lineal para predecir cuantiles en la distribución condicional de la respuesta.quantilePredictoobQuantilePredictquantileErroroobQuantileError Sin embargo, puede obtener pesos de respuesta, que comprenden la función de distribución, y luego pasarlos a posiblemente ganar precisión a costa de la velocidad de cálculo.ksdensity

Genere 2000 observaciones del modelo

<math display="block">
<mrow>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mi>t</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>0</mn>
<mo>.</mo>
<mn>5</mn>
<mo>+</mo>
<mi>t</mi>
<mo>+</mo>
<msub>
<mrow>
<mi>ε</mi>
</mrow>
<mrow>
<mi>t</mi>
</mrow>
</msub>
<mo>.</mo>
</mrow>
</math>

<math display="block">
<mrow>
<mi>t</mi>
</mrow>
</math>
se distribuye uniformemente entre 0 y 1, y
<math display="block">
<mrow>
<msub>
<mrow>
<mi>ε</mi>
</mrow>
<mrow>
<mi>t</mi>
</mrow>
</msub>
<mo></mo>
<mi>N</mi>
<mo stretchy="false">(</mo>
<mn>0</mn>
<mo>,</mo>
<msup>
<mrow>
<mi>t</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>/</mo>
<mn>2</mn>
<mo>+</mo>
<mn>0</mn>
<mo>.</mo>
<mn>0</mn>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mrow>
</math>
. Almacene los datos en una tabla.

n = 2000; rng('default'); % For reproducibility t = randsample(linspace(0,1,1e2),n,true)'; epsilon = randn(n,1).*sqrt(t.^2/2 + 0.01); y = 0.5 + t + epsilon;  Tbl = table(t,y);

Entrena un conjunto de árboles de regresión en bolsas usando todo el conjunto de datos. Especifique 200 estudiantes débiles y guarde los índices fuera de bolsa.

rng('default'); % For reproducibility Mdl = TreeBagger(200,Tbl,'y','Method','regression',...     'OOBPrediction','on');

es un conjunto.MdlTreeBagger

Predecir el out-of-bag, condicional 0,05 y 0,95 cuantiles (90% intervalos de confianza) para todas las observaciones de la formación-muestra utilizando, es decir, por interpolación.oobQuantilePredict Solicitar pesos de respuesta. Registre el tiempo de ejecución.

tau = [0.05 0.95]; tic [quantInterp,yw] = oobQuantilePredict(Mdl,'Quantile',tau); timeInterp = toc;

es una matriz de 94-by-2 de cuantiles pronosticados; filas corresponden a las observaciones y las columnas corresponden a las probabilidades de cuantil en. es una matriz dispersa 94-by-94 de pesos de respuesta; filas corresponden a las observaciones de la muestra de formación y las columnas corresponden a las observaciones en.quantInterpMdl.XtauywMdl.X Los pesos de respuesta son independientes.tau

Predecir los cuantiles fuera de bolsa, condicionales 0,05 y 0,95 utilizando el suavizado del kernel y registrar el tiempo de ejecución.

n = numel(Tbl.y); quantKS = zeros(n,numel(tau)); % Preallocation  tic for j = 1:n     quantKS(j,:) = ksdensity(Tbl.y,tau,'Function','icdf','Weights',yw(:,j)); end timeKS = toc;

es acorde con.quantKSquantInterp

Evalúe la proporción de tiempos de ejecución entre la estimación de suavizado del kernel y la interpolación.

timeKS/timeInterp
ans = 7.9901 

Se necesita mucho más tiempo para ejecutar el suavizado de kernel que la interpolación. Esta relación depende de la memoria de su máquina, por lo que sus resultados variarán.

Trace los datos con ambos conjuntos de cuantiles pronosticados.

[sT,idx] = sort(t);  figure; h1 = plot(t,y,'.'); hold on h2 = plot(sT,quantInterp(idx,:),'b'); h3 = plot(sT,quantKS(idx,:),'r'); legend([h1 h2(1) h3(1)],'Data','Interpolation','Kernel Smoothing'); title('Quantile Estimates') hold off

Ambos conjuntos de cuantiles estimados coinciden bastante bien. Sin embargo, los intervalos de cuantil de la interpolación aparecen ligeramente más ajustados para valores más pequeños que los del suavizado de kernel.t

Consulte también

| | |

Temas relacionados