4 votos

Buscando una versión imparcial de la función de distribución acumulada empírica que yo puedo interpolar

La mayoría de las definiciones de la ECDF definir como (nº de elementos <= umbral) / nº de elementos. Matlab y R implementar sus ecdf() funciones mediante esta fórmula.

En mis pruebas, sin embargo, me parece que hay un pequeño sesgo a esta estimación cuando la creación de las muestras usando el estándar de la distribución uniforme, la distribución normal estándar, o la distribución beta con el común de alfa y beta de los valores.

Para ser claro, no estoy hablando acerca de los prejuicios de la ECDF como el número de muestras que se extiende hacia el infinito. El ECDF es imparcial en este sentido. Estoy hablando sobre el sesgo que se produce al aplicar el ECDF a N número de muestras, donde N permanece fija, y un nuevo conjunto de N muestras se genera una y otra vez. En este sentido, el ECDF tiene un sesgo que es inversamente proporcional a N.

En nuestra aplicación, se genera un nuevo conjunto de datos cada vez que el algoritmo de cambios o el algoritmo de cambio de parámetros. Por lo tanto la distribución subyacente, que es desconocido, es diferente para cada prueba. Por lo tanto quiero la mejor estimación de las N muestras de cada prueba, pero no puede combinar las muestras de diferentes pruebas.

Estoy utilizando la interpolación para estimar el CDF para los umbrales de que están entre los valores de la muestra, y estoy suponiendo que la distribución subyacente es continua, pero se desconocen. Yo soy de la interpolación debido a que nuestros límites son continuas y nos gustaría que la estimación de la CDF a ser continua, no cuantificada.

Wikipedia ofrece una definición alternativa para la ECDF que no tiene este sesgo y también las estimaciones con menos error: (nº de elementos <= umbral) / (nº de elementos + 1)

En caso de que hay dos definiciones de la ECDF, uno para la estimación de distribuciones discretas y uno diferente para continua?

Hay pruebas acerca de que el sesgo de un ECDF a la hora de estimar un CDF?

Aquí está un ejemplo simple que hace que el problema obvio. Poner cuatro manzanas en una fila y dibujar una línea entre las manzanas 2 y 3. ¿Qué por ciento de las manzanas están en cada lado de la línea? El EDCF dice que la línea a través de apple 2 es de 50%, la línea a través de 3 es de 75%, y el valor interpolado es de 62,5%, por lo que la estimación es que el 62,5% de las manzanas están a la izquierda de la línea que está a medio camino entre las manzanas 2 y 3.

Aquí está mi código de Matlab que muestra el sesgo:

% Method 1 - ECDF
% Method 2 - Alternative ECDF
cdf = estimateCdf(-2:2, 0.0);
assert(cdf(1) == 0.6);
assert(cdf(2) == 0.5);

numTests = 100 * 1000;
numSamples = 10;
err=zeros(numTests, 2);

for i=1:numTests
    threshold = randn(1, 1) * 2;
    groundTruth = 1 - (1 - erf(threshold)) / 2;
    scores = sort(randn(1, numSamples) * sqrt(0.5)); %% ERF assumes a variance of 0.5
    err(i, :) = estimateCdf(scores, threshold) - groundTruth;
end

fprintf('\nTests = %d\n', numTests);
for method = 1:2
    fprintf('Method %d\n', method);
    fprintf('  RMS Error:  %1.6f\n', rms(err(:,method)));
    fprintf('  Bias:       %1.6f\n', mean(err(:,method)));
end

function cdf = estimateCdf(scores, threshold) 
    idxList = find(scores < threshold);
    cdf = zeros(1,2);

    % If there are no scores below threshold then CDF is zero
    if isempty(idxList)
        for method = 1:2
            cdf(method) = 0;
        end

    % If all scores are below threshold then CDF is 1
    elseif idxList(end) == numel(scores)
        for method = 1:2
            cdf(method) = 1;
        end

    % Interpolate scores between 2 nearest points to the threshold
    else
        x0 = idxList(end);
        x = [x0, x0 + 1];
        xIdx = interp1(scores(x) - threshold, x, 0, 'linear');

        % Interpolate the scores to a CDF
        cdf(1) = interp1(x, x / length(scores), xIdx, 'linear');
        cdf(2) = interp1(x, x / (length(scores) + 1), xIdx, 'linear');
    end
end

3voto

Scott Anderson Puntos 31

Empírica de la función de distribución es un estimador imparcial de la verdadera distribución subyacente. Para simplificar, vamos a suponer que la distribución subyacente es absolutamente continua y admite una densidad de $f$. Si la muestra se compone de los iid puntos de $\{X_n\}_{n=1}^N$, podemos tomar la expectativa de la ECDF:

$$ \begin{aligned} E(\hat{F}(x)) = E\big(\frac{1}{N}\sum_{n=1}^N I(X_n\leq x)\big) = \frac{1}{N}\sum_{n=1}^N E(I(X_n\leq x)) &= \frac{1}{N}\sum_{n=1}^N\int_{-\infty}^\infty I(y\leq x)f(y) dy\\ &=\frac{1}{N}\sum_{n=1}^N\int_{-\infty}^x f(y) dy\\ &= \frac{1}{N}\sum_{n=1}^N F(x)= F(x), \end{aligned} $$

donde yo estoy usando el $I$ como indicador de la función. Ciertamente se podría interpolar esta función, aunque creo que al hacer cualquier tipo de interpolación que se va a introducir un sesgo a la estimación, por ejemplo,

$$ \begin{aligned} E(\hat{F}(x)) &= E\bigg(\frac{1}{N}\sum_{n=1}^N I(X_n\leq x) + I(X_{(n)}\leq x \leq X_{(n+1)})\frac{x - X_{(n)}}{X_{(n+1)} - X_{(n)}}\bigg)\\ &= F(x)+\frac{1}{N}\sum_{n=1}^NE\bigg(I(X_{(n)}\leq x \leq X_{(n+1)})\frac{x - X_{(n)}}{X_{(n+1)} - X_{(n)}}\bigg), \end{aligned} $$ donde $X_{(n)}$ indica el $n$th ordenado (clasificado) estadística. Anteriormente es una forma de escritura de una simple interpolación lineal entre los puntos. Usted podría ser capaz de mostrar este último sesgo desaparece, pero es probable que dependen de la distribución y puede no ser siempre el caso.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X