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.

ksdensity

Estimación de la función de suavizado de kernel para datos univariados y bivariados

Descripción

ejemplo

[f,xi] = ksdensity(x) Devuelve una estimación de densidad de probabilidad, para los datos de ejemplo en la matriz vectorial o de dos columnas.fx La estimación se basa en una función normal del kernel y se evalúa en puntos espaciados por igual, que cubren el rango de los datos. estima la densidad en 100 puntos para los datos univariados, o 900 puntos para los datos bivariados.xixksdensity

funciona mejor con muestras distribuidas continuamente.ksdensity

ejemplo

[f,xi] = ksdensity(x,pts) especifica Points () para evaluar.ptsf Aquí, y contienen valores idénticos.xipts

ejemplo

[f,xi] = ksdensity(___,Name,Value) utiliza opciones adicionales especificadas por uno o más argumentos de par nombre-valor además de cualquiera de los argumentos de entrada en las sintaxis anteriores. Por ejemplo, puede definir el tipo de función que se evalúa, como la densidad de probabilidad, la probabilidad acumulada, la función de superviviente, etcétera.ksdensity O puede especificar el ancho de banda de la ventana de suavizado.

ejemplo

[f,xi,bw] = ksdensity(___) también devuelve el ancho de banda de la ventana de suavizado del kernel,.bw El ancho de banda predeterminado es el óptimo para densidades normales.

ejemplo

ksdensity(___) traza la estimación de la función de suavizado del kernel.

ksdensity(ax,___) traza los resultados mediante ejes con el identificador, en lugar de los ejes actuales devueltos por.axgca

Ejemplos

contraer todo

Genere un conjunto de datos de ejemplo a partir de una mezcla de dos distribuciones normales.

rng('default')  % For reproducibility x = [randn(30,1); 5+randn(30,1)];

Graficar la densidad estimada.

[f,xi] = ksdensity(x);  figure plot(xi,f);

La estimación de densidad muestra la bimodalidad de la muestra.

Genere un conjunto de datos de muestra no negativo a partir de la distribución seminormal.

rng('default') % For reproducibility pd = makedist('HalfNormal','mu',0,'sigma',1); x = random(pd,100,1);

Estimar archivos PDF con dos métodos de corrección de límites diferentes, transformación de registros y reflexión, mediante el argumento de par nombre-valor.'BoundaryCorrection'

pts = linspace(0,5,1000); % points to evaluate the estimator [f1,xi1] = ksdensity(x,pts,'Support','positive'); [f2,xi2] = ksdensity(x,pts,'Support','positive','BoundaryCorrection','reflection');

Trace los dos archivos PDF estimados.

plot(xi1,f1,xi2,f2) lgd = legend('log','reflection'); title(lgd, 'Boundary Correction Method') xl = xlim; xlim([xl(1)-0.25 xl(2)])

utiliza un método de corrección de límites cuando se especifica un soporte positivo o delimitado.ksdensity El método de corrección de límites predeterminado es la transformación de registros. Cuando transforma el soporte de nuevo, introduce el término en el estimador de la densidad del kernel.ksdensity1/x Por lo tanto, la estimación tiene un pico cercano.x = 0 Por otro lado, el método de reflexión no causa picos indeseables cerca del contorno.

Cargue los datos de ejemplo.

load hospital

Calcule y trace el CDF Estimado evaluado en un conjunto de valores especificado.

pts = (min(hospital.Weight):2:max(hospital.Weight)); figure() ecdf(hospital.Weight) hold on [f,xi,bw] = ksdensity(hospital.Weight,pts,'Support','positive',...  'Function','cdf'); plot(xi,f,'-g','LineWidth',2) legend('empirical cdf','kernel-bw:default','Location','northwest') xlabel('Patient weights') ylabel('Estimated cdf')

parece suavizar la estimación de la función de distribución acumulativa demasiado.ksdensity Una estimación con un ancho de banda más pequeño podría producir una estimación más cercana a la función de distribución acumulativa empírica.

Devuelva el ancho de banda de la ventana de suavizado.

bw
bw = 0.1070 

Trace la estimación de la función de distribución acumulativa utilizando un ancho de banda menor.

[f,xi] = ksdensity(hospital.Weight,pts,'Support','positive',...  'Function','cdf','Bandwidth',0.05);  plot(xi,f,'--r','LineWidth',2) legend('empirical cdf','kernel-bw:default','kernel-bw:0.05',...  'Location','northwest') hold off

La estimación con un ancho de banda más pequeño coincide mejor con la función de distribución acumulativa empírica.ksdensity

Cargue los datos de ejemplo.

load hospital

Graficar el CDF Estimado evaluado en 50 puntos igualmente espaciados.

figure() ksdensity(hospital.Weight,'Support','positive','Function','cdf',... 'NumPoints',50) xlabel('Patient weights') ylabel('Estimated cdf')

Genere datos de muestra a partir de una distribución exponencial con media 3.

rng('default')  % For reproducibility x = random('exp',3,100,1);

Cree un vector lógico que indique la censura. Aquí, las observaciones con una vida más larga que 10 son censuradas.

T = 10; cens = (x>T);

Calcule y trace la función de densidad estimada.

figure ksdensity(x,'Support','positive','Censoring',cens);

Calcule y trace la función de superviviente.

figure ksdensity(x,'Support','positive','Censoring',cens,... 'Function','survivor');

Calcule y trace la función de riesgo acumulado.

figure ksdensity(x,'Support','positive','Censoring',cens,... 'Function','cumhazard');

Genere una mezcla de dos distribuciones normales y trace la función de distribución acumulativa inversa estimada en un conjunto especificado de valores de probabilidad.

rng('default')  % For reproducibility x = [randn(30,1); 5+randn(30,1)]; pi = linspace(.01,.99,99); figure ksdensity(x,pi,'Function','icdf');

Genere una mezcla de dos distribuciones normales.

rng('default')  % For reproducibility x = [randn(30,1); 5+randn(30,1)];

Devuelva el ancho de banda de la ventana de suavizado para la estimación de densidad de probabilidad.

[f,xi,bw] = ksdensity(x);  bw
bw = 1.5141 

El ancho de banda predeterminado es óptimo para densidades normales.

Graficar la densidad estimada.

figure plot(xi,f); xlabel('xi') ylabel('f') hold on

Graficar la densidad usando un mayor valor de ancho de banda.

[f,xi] = ksdensity(x,'Bandwidth',1.8); plot(xi,f,'--r','LineWidth',1.5)

Un ancho de banda más alto suaviza aún más la estimación de densidad, que podría enmascarar algunas características de la distribución.

Ahora, trace la densidad utilizando un valor de ancho de banda reducido.

[f,xi] = ksdensity(x,'Bandwidth',0.8); plot(xi,f,'-.k','LineWidth',1.5) legend('bw = default','bw = 1.8','bw = 0.8') hold off

Un ancho de banda más pequeño suaviza la densidad de la estimación menos, lo que exagera algunas características de la muestra.

Cree un vector de dos columnas de puntos en el que evaluar la densidad.

gridx1 = -0.25:.05:1.25; gridx2 = 0:.1:15; [x1,x2] = meshgrid(gridx1, gridx2); x1 = x1(:); x2 = x2(:); xi = [x1 x2];

Genere una matriz de 30 por 2 que contenga números aleatorios de una mezcla de distribuciones normales bivariadas.

rng('default')  % For reproducibility x = [0+.5*rand(20,1) 5+2.5*rand(20,1);             .75+.25*rand(10,1) 8.75+1.25*rand(10,1)];

Trace la densidad estimada de los datos de muestra.

figure ksdensity(x,xi);

Argumentos de entrada

contraer todo

Datos de ejemplo para los que se devuelven valores, especificados como un vector de columna o una matriz de dos columnas.ksdensityf Utilice un vector de columna para datos univariados y una matriz de dos columnas para datos bivariados.

Ejemplo: [f,xi] = ksdensity(x)

Tipos de datos: single | double

Puntos en los que se evaluará, especificado como una matriz vectorial o de dos columnas.f Para los datos univariados, puede ser un vector de fila o columna.pts La longitud de la salida devuelta es igual al número de puntos en.fpts

Ejemplo: pts = (0:1:25); ksdensity(x,pts);

Tipos de datos: single | double

Identificador de ejes para las gráficas de figuras a, especificado como un identificador.ksdensity

Por ejemplo, si es un identificador para una figura, puede trazar a esa figura de la siguiente manera.hksdensity

Ejemplo: ksdensity(h,x)

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: Especifica que estima la CDF evaluando en 20 puntos igualmente espaciados que cubren el rango de datos, utilizando la función de suavizado del kernel triangular y contabilización de la información de datos censurada en Vector.'Censoring',cens,'Kernel','triangle','NumPoints',20,'Function','cdf'ksdensitycens

El ancho de banda de la ventana de suavizado de kernel, que es una función del número de puntos en, especificado como el par separado por comas que consta de y un valor escalar.x'Bandwidth' Si los datos de muestra son bivariados, también pueden ser un vector de dos elementos.Bandwidth El valor predeterminado es óptimo para estimar las densidades normales, pero es posible que desee elegir una más grande o más pequeño para suavizar más o menos.[1]

Si especifica como (predeterminado) y como uno o un vector, convierte los datos delimitados para que no se delimiten mediante la transformación de registros.'BoundaryCorrection''log''Support''positive'[L U]ksdensity El valor de está en la escala de los valores transformados.'Bandwidth'

Ejemplo: 'Bandwidth',0.8

Tipos de datos: single | double

Método de corrección de contorno, especificado como el par separado por comas que consta de y o.'BoundaryCorrection''log''reflection'

ValorDescripción
'log'

convierte los datos delimitados para que no se delimiten por una de las siguientes transformaciones.ksdensityx A continuación, se transforma de nuevo a la escala delimitada original después de la estimación de densidad.

  • Para datos univariados, si se especifica, se aplica.'Support','positive'ksdensitylog(x)

  • Para datos univariados, si especifica, dónde y son escalares numéricos y, a continuación, se aplica.'Support',[L U]LUL < Uksdensitylog((x-L)/(U–x))

  • Para los datos bivariados, transforma cada columna de la misma manera con los datos univariados.ksdensityx

El valor y la salida están en la escala de los valores transformados.'Bandwidth'bw

'reflection'

aumenta los datos delimitados agregando datos reflejados cerca de los límites y, a continuación, devuelve estimaciones correspondientes al soporte original.ksdensity Para obtener más información, consulte.Método de reflexión

aplica la corrección de contorno sólo cuando se especifica como un valor distinto de.ksdensity'Support''unbounded'

Ejemplo: 'BoundaryCorrection','reflection'

Vector lógico que indica qué entradas están censuradas, especificadas como el par separado por comas que consta de y un vector de valores binarios.'Censoring' Un valor de 0 indica que no hay censura, 1 indica que la observación está censurada. El valor predeterminado es que no hay censura. Este par de nombre-valor sólo es válido para datos univariados.

Ejemplo: 'Censoring',censdata

Tipos de datos: logical

Función que se estima, especificada como el par separado por comas y que consta de uno de los siguientes.'Function'

ValorDescripción
'pdf'Función de densidad de probabilidad.
'cdf'Función de distribución acumulativa.
'icdf'

Función de distribución acumulativa inversa. calcula el CDF inverso estimado de los valores en, y lo evalúa en los valores de probabilidad especificados en.ksdensityxpi

Este valor sólo es válido para datos univariados.

'survivor'Función superviviente.
'cumhazard'

Función de riesgo acumulado.

Este valor sólo es válido para datos univariados.

Ejemplo: ,'Function''icdf'

Tipo de kernel más suave, especificado como el par separado por comas que consta de y uno de los siguientes.'Kernel'

  • predeterminado'normal'

  • 'box'

  • 'triangle'

  • 'epanechnikov'

  • Una función del kernel que es una función personalizada o incorporada. Especifique la función como un identificador de función (por ejemplo, o) o como un vector de caracteres o un escalar de cadena (por ejemplo, o).@myfunction@normpdf'myfunction''normpdf' El software llama a la función especificada con un argumento que es una matriz de distancias entre los valores de datos y las ubicaciones donde se evalúa la densidad. La función debe devolver una matriz del mismo tamaño que contenga los valores correspondientes de la función del kernel.

    Cuando es, la función kernel devuelve valores de densidad.'Function''pdf' De lo contrario, devuelve valores de probabilidad acumulados.

    Si se especifica un kernel personalizado cuando se devuelve un error.'Function''icdf'

Para los datos bivariables, aplica el mismo kernel a cada dimensión.ksdensity

Ejemplo: 'Kernel','box'

Número de puntos igualmente espaciados, especificados como el par separado por comas que consta de y un valor escalar.xi'NumPoints' Este par de nombre-valor sólo es válido para datos univariados.

Por ejemplo, para una estimación suave del kernel de una función especificada en 80 puntos igualmente espaciados dentro del rango de datos de muestra, ingrese:

Ejemplo: 'NumPoints',80

Tipos de datos: single | double

Compatibilidad con la densidad, especificada como el par separado por comas que consta de y uno de los siguientes.'support'

ValorDescripción
'unbounded'Predeterminado. Permita que la densidad se extienda sobre toda la línea real.
'positive'Restrinja la densidad a valores positivos.
Vector de dos elementos,[L U]Dé a los límites inferior y superior finitos para el apoyo de la densidad. Esta opción solo es válida para datos de ejemplo univariados.
Matriz de dos por dos,[L1 L2; U1 U2]Dé a los límites inferior y superior finitos para el apoyo de la densidad. La primera fila contiene los límites inferiores y la segunda fila contiene los límites superiores. Esta opción solo es válida para datos de muestra bivariada.

Para los datos bivariables, puede ser una combinación de variables positivas, sin enlazar o delimitadas especificadas como o.'Support'[0 -Inf; Inf Inf][0 L; Inf U]

Ejemplo: 'Support','positive'

Ejemplo: 'Support',[0 10]

Tipos de datos: single | double | char | string

Función utilizada para crear una gráfica de densidad de kernel, especificada como el par separado por comas que consta de uno de los siguientes.'PlotFcn'

ValorDescripción
'surf'gráfica de superficie sombreada 3-D, creada utilizandosurf
'contour'Trazado de contorno, creado concontour
'plot3'gráfica de línea 3-D, creada utilizandoplot3
'surfc'Trazado de contorno bajo una gráfica de superficie sombreada 3-D, creada utilizandosurfc

Este par de nombre-valor solo es válido para datos de muestra bivariada.

Ejemplo: 'PlotFcn','contour'

Ponderaciones para los datos de muestra, especificadas como el par separado por comas que consta de un vector de longitud, donde se encuentran los datos de ejemplo.'Weights'size(x,1)x

Ejemplo: 'Weights',xw

Tipos de datos: single | double

Argumentos de salida

contraer todo

Valores de función estimados, devueltos como un vector cuya longitud es igual al número de puntos en o.xipts

Puntos de evaluación en los que se calcula, devuelto como un vector o una matriz de dos columnas.ksdensityf Para los datos univariados, el valor predeterminado es 100 puntos espaciados por igual que cubren el rango de datos en.x Para datos bivariables, el valor predeterminado es 900 puntos con espaciado igual creados utilizando 30 puntos espaciados por igual en cada dimensión.meshgrid

Ancho de banda de la ventana de suavizado, devuelta como un valor escalar.

Si especifica como (predeterminado) y como uno o un vector, convierte los datos delimitados para que no se delimiten mediante la transformación de registros.'BoundaryCorrection''log''Support''positive'[L U]ksdensity El valor de está en la escala de los valores transformados.bw

Más acerca de

contraer todo

Distribución del kernel

A kernel distribution is a nonparametric representation of the probability density function (pdf) of a random variable. You can use a kernel distribution when a parametric distribution cannot properly describe the data, or when you want to avoid making assumptions about the distribution of the data. A kernel distribution is defined by a smoothing function and a bandwidth value, which control the smoothness of the resulting density curve.

El estimador de densidad del kernel es el pdf estimado de una variable aleatoria. Para cualquier valor real de, la fórmula del estimador de densidad del kernel viene dada porx

f^h(x)=1nhi=1nK(xxih),

Dónde X1, X2, ..., Xn son muestras aleatorias de una distribución desconocida, es el tamaño de la muestra,n K(·) es la función de suavizado del kernel y es el ancho de banda.h

El estimador del kernel para la función de distribución acumulativa (CDF), para cualquier valor real, viene dado porx

F^h(x)=xf^h(t)dt=1ni=1nG(xxih),

Dónde G(x)=xK(t)dt.

Para obtener más información, consulte.Distribución del kernel

Método de reflexión

El método de reflexión es un método de corrección de límites que encuentra con precisión estimadores de densidad del kernel cuando una variable aleatoria tiene compatibilidad limitada. Si se especifica, se utiliza el método de reflexión.'BoundaryCorrection','reflection'ksdensity Este método aumenta los datos delimitados agregando datos reflejados cerca de los límites y estima el pdf. A continuación, devuelve el pdf Estimado correspondiente al soporte original con una normalización adecuada, de modo que la integral estimada del pdf sobre el soporte original sea igual a uno.ksdensity

Si además especifica, a continuación, busca el estimador del kernel de la siguiente manera.'Support',[L U]ksdensity

  • Si es así, entonces el estimador de densidad del kernel es'Function''pdf'

         f^h(x)=1nhi=1n[K(xxih)+K(xxih)+K(xxi+h)] Para L ≤ x ≤ U,

    Dónde xi=2Lxi, xi+=2UxiY Xi son los datos de ejemplo TH.i

  • Si es así, entonces el estimador del kernel para CDF es'Function''cdf'

         F^h(x)=1ni=1n[G(xxih)+G(xxih)+G(xxi+h)]1ni=1n[G(Lxih)+G(Lxih)+G(Lxi+h)] Para L ≤ x ≤ U.

  • Para obtener un estimador de kernel para un CDF inverso, una función de sobreviviente, o una función de riesgo acumulado (cuando es,, o), utiliza tanto'Function''icdf''survivor''cumhazrd'ksdensity f^h(x) Y F^h(x).

Si además especifica como o, a continuación, encuentra el estimador del kernel reemplazando con en las ecuaciones anteriores.'Support''positive'[0 inf]ksdensity[L U][0 inf]

Referencias

[1] Bowman, A. W., and A. Azzalini. Applied Smoothing Techniques for Data Analysis. New York: Oxford University Press Inc., 1997.

[2] Hill, P. D. “Kernel estimation of a distribution function.” Communications in Statistics - Theory and Methods. Vol 14, Issue. 3, 1985, pp. 605-620.

[3] Jones, M. C. “Simple boundary correction for kernel density estimation.” Statistics and Computing. Vol. 3, Issue 3, 1993, pp. 135-146.

[4] Silverman, B. W. Density Estimation for Statistics and Data Analysis. Chapman & Hall/CRC, 1986.

Capacidades ampliadas

Introducido antes de R2006a