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 del núcleo para datos univariados y bivariados

Descripción

ejemplo

[f,xi] = ksdensity(x) devuelve una estimación de densidad de probabilidad, , para los datos de muestra en la matriz vectorial o de dos columnas.fx La estimación se basa en una función normal del núcleo y se evalúa en puntos igualmente espaciados, que cubren el rango de los datos en . 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 puntos ( ) para evaluar .ptsf Aquí, y contienen valores idénticos.xipts

ejemplo

[f,xi] = ksdensity(___,Name,Value) utiliza opciones adicionales especificadas por uno o varios argumentos de par nombre-valor además de cualquiera de los argumentos de entrada de las sintaxis anteriores. Por ejemplo, puede definir las evaluaciones del tipo de función, como la densidad de probabilidad, la probabilidad acumulada, la función de superviviente, etc.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 las densidades normales.

ejemplo

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

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

Ejemplos

contraer todo

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

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

Trazar 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);

Calcule los pdf con dos métodos de corrección de límites diferentes, la transformación del registro y la 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');

Trazar los dos 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 compatibilidad positiva o limitada.ksdensity El método de corrección de límites predeterminado es la transformación de registro. Cuando vuelve a transformar el soporte, introduce el término en el estimador de densidad del núcleo.ksdensity1/x Por lo tanto, la estimación tiene un pico cercano.x = 0 Por otro lado, el método de reflexión no provoca picos indeseables cerca del límite.

Cargue los datos de ejemplo.

load hospital

Calcular y trazar el cdf estimado evaluado en un conjunto especificado de valores.

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 demasiado la estimación de la función de distribución acumulativa.ksdensity Una estimación con un ancho de banda menor podría producir una estimación más cercana a la función de distribución acumulativa empírica.

Devuelve el ancho de banda de la ventana de suavizado.

bw
bw = 0.1070 

Trazar la estimación de la función de distribución acumulativa utilizando un ancho de banda más pequeño.

[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 menor coincide mejor con la función de distribución acumulativa empírica.ksdensity

Cargue los datos de ejemplo.

load hospital

Trazar 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 la 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 vidas superiores a 10 son censuradas.

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

Calcular y trazar la función de densidad estimada.

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

Calcular y trazar la función de superviviente.

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

Calcular y trazar la función de peligro acumulativo.

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');

Generar una mezcla de dos distribuciones normales.

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

Devuelve 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 las densidades normales.

Trazar la densidad estimada.

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

Trazar la densidad utilizando 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, lo que podría enmascarar algunas características de la distribución.

Ahora, trace la densidad usando 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 menos la estimación de densidad, 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 a partir 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)];

Trazar la densidad estimada de los datos de la muestra.

figure ksdensity(x,xi);

Argumentos de entrada

contraer todo

Datos de ejemplo para los que devuelve 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 los datos bivariados.

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

Tipos de datos: single | double

Puntos en los que se va a evaluar , especificados 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

Los ejes se encargan de los trazados de figuras, especificados 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 opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: especifica que estima el cdf mediante la evaluación de 20 puntos igualmente espaciados que cubre el rango de datos, utilizando la función de suavizado del núcleo del triángulo y la contabilidad 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 del núcleo, 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 puede ser un vector de dos elementos.Bandwidth El valor predeterminado es óptimo para estimar las densidades normales, pero es posible que desee elegir un valor mayor o menor para suavizar más o menos.[1]

Si especifica como (valor predeterminado) y como vector o como vector , convierte los datos delimitados para que no estén enlazados mediante la transformación de registro.'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 límites, 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 estén enlazados 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 los datos univariados, si especifica , a continuación, se aplica .'Support','positive'ksdensitylog(x)

  • Para los 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 de y la salida están en la escala de los valores transformados.'Bandwidth'bw

'reflection'

aumenta los datos limitados agregando datos reflejados cerca de los límites, luego devuelve estimaciones correspondientes a la compatibilidad original.ksdensity Para obtener más información, consulte .Método de reflexión

aplica la corrección de límites solo cuando se especifica como un valor distinto de .ksdensity'Support''unbounded'

Ejemplo: 'BoundaryCorrection','reflection'

Vector lógico que indica qué entradas se censuran, especificado según 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 nombre-valor solo es válido para datos univariados.

Ejemplo: 'Censoring',censdata

Tipos de datos: logical

Función a estimar, especificada como el par separado por comas que consta de y 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 solo es válido para datos univariados.

'survivor'Función de superviviente.
'cumhazard'

Función de peligro acumulativa.

Este valor solo es válido para datos univariados.

Ejemplo: 'Function','icdf'

Tipo de núcleo 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 de kernel que es una función personalizada o integrada. 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 kernel.

    Cuando es , la función del núcleo devuelve valores de densidad.'Function''pdf' De lo contrario, devuelve valores de probabilidad acumulativos.

    Especificar un kernel personalizado cuando se devuelve un error.'Function''icdf'

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

Ejemplo: 'Kernel','box'

Número de puntos igualmente espaciados en , especificado como el par separado por comas que consta de y un valor escalar.xi'NumPoints' Este par nombre-valor solo 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, introduzca:

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 por toda la línea real.
'positive'Restringir la densidad a valores positivos.
Vector de dos elementos,[L U]Proporcione los límites inferior y superior finito para el soporte de la densidad. Esta opción solo es válida para datos de muestra univariados.
Matriz de dos por dos,[L1 L2; U1 U2]Proporcione los límites inferior y superior finito para el soporte 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 bivariados.

Para los datos bivariados, puede ser una combinación de variables positivas, sin límites 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 el trazado de densidad del núcleo, especificado como el par separado por comas que consta de y uno de los siguientes.'PlotFcn'

ValorDescripción
'surf'Trazado de superficie sombreada 3D, creado consurf
'contour'Trazado de contorno, creado concontour
'plot3'Trazado de línea 3D, creado conplot3
'surfc'Trazado de contorno bajo un trazado de superficie sombreada en 3D, creado consurfc

Este par nombre-valor solo es válido para datos de ejemplo bivariados.

Ejemplo: 'PlotFcn','contour'

Pesos para los datos de muestra, especificados como el par separado por comas que consta de y un vector de longitud, donde están los datos de muestra.'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 , devueltos como un vector o una matriz de dos columnas.ksdensityf Para los datos univariados, el valor predeterminado es 100 puntos igualmente espaciados que cubren el rango de datos en .x Para los datos bivariados, el valor predeterminado es 900 puntos igualmente espaciados creados utilizando 30 puntos igualmente espaciados en cada dimensión.meshgrid

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

Si especifica como (valor predeterminado) y como vector o como vector , convierte los datos delimitados para que no estén enlazados mediante la transformación de registro.'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 núcleo

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 núcleo es el pdf estimado de una variable aleatoria. Para cualquier valor real de , la fórmula del estimador de densidad del núcleo es 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 núcleo, y es el ancho de banda.h

El estimador del núcleo para la función de distribución acumulativa (cdf), para cualquier valor real de ,x

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

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

Para obtener más información, consulte .Kernel Distribution

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 los estimadores de densidad del núcleo cuando una variable aleatoria ha limitado el soporte. Si especifica , utiliza el método de reflexión.'BoundaryCorrection','reflection'ksdensity Este método aumenta los datos limitados agregando datos reflejados cerca de los límites y estima el pdf. A continuación, devuelve el pdf estimado correspondiente al soporte original con la normalización adecuada, de modo que la integral del pdf estimado sobre el soporte original es igual a uno.ksdensity

Si especifica además , encontrará el estimador del kernel de la siguiente manera.'Support',[L U]ksdensity

  • Si es , entonces el estimador de densidad del núcleo 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 muestra.i

  • Si es , entonces el estimador del núcleo 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 superviviente o una función de peligro acumulativo (cuando es , , o ), utiliza ambos'Function''icdf''survivor''cumhazrd'ksdensity f^h(x) Y F^h(x).

Si también especifica como o , encontrará el estimador del kernel reemplazando con 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