Ecuación correcta para la covarianza muestral imparcial ponderada

9

Estoy buscando la ecuación correcta para calcular la covarianza muestral imparcial ponderada. Las fuentes de Internet son bastante raras en este tema y todas usan ecuaciones diferentes.

La ecuación más probable que he encontrado es esta:

qjk=i=1Nwi(i=1Nwi)2i=1Nwi2i=1Nwi(xijx¯j)(xikx¯k).

De: https://en.wikipedia.org/wiki/Sample_mean_and_sample_covariance#Weighted_samples

Por supuesto, debe calcular de antemano la media muestral ponderada (imparcial).

Sin embargo, he encontrado varias otras fórmulas como:

qjk=1i=1Nwi)1i=1Nwi(xijx¯j)(xikx¯k).

O incluso he visto algunos códigos fuente y documentos académicos simplemente usando la fórmula de covarianza estándar pero con la media muestral ponderada en lugar de la media muestral ...

¿Alguien puede ayudarme y arrojar algo de luz?

/ EDITAR: mis pesos son simplemente el número de observaciones para una muestra en el conjunto de datos, por lo tanto weights.sum () = n

gaborous
fuente
1
¿Qué tipo de pesas estás usando? Los pesos pueden significar cosas diferentes, según la aplicación, y la respuesta correcta depende de su significado. Por ejemplo, pueden ser abreviaturas para frecuencias (una observación tiene un peso def en el conjunto de datos para reflejar su ocurrencia fveces en los datos) o pueden ser una abreviatura de las probabilidades de estar en una muestra (para muestras aleatorias ponderadas, como muestras estratificadas o jerárquicas).
whuber
@whuber: Mis pesos son simplemente el número de observaciones para una muestra en el conjunto de datos, y por lo tanto: Suma (pesos) = n
gaborous
1
Entonces su pregunta se responde en muchos lugares aquí (aunque eso puede no ser inmediatamente aparente), incluyendo stats.stackexchange.com/questions/58986/… (que explica el principio) así como stats.stackexchange.com/questions/6534/ ... (que todavía mantengo es incorrecto, pero puedes decidir por ti mismo).
whuber
@whuber: gracias por su ayuda, pero el primer enlace trata sobre la desviación estándar (raíz cuadrada de la varianza) y no sobre la covarianza, y el segundo es claramente incorrecto (como señaló).
Gaborous
3
No hay diferencia entre la varianza y la covarianza: todas las covarianzas se pueden obtener como (combinaciones lineales) de varianzas y variaciones, por supuesto, son solo ejemplos particulares de covarianzas. (Los matemáticos llaman a esta relación polarización .)
whuber

Respuestas:

18

Encontré la solución en un libro de 1972 (George R. Price, Ann. Hum. Genet., Lond, pp485-490, Extension of covariance selection matemáticas, 1972) .

Covarianza de muestra ponderada sesgada:

Σ=1i=1Nwii=1Nwi(xiμ)T(xiμ)

Y la covarianza muestral ponderada imparcial dada al aplicar la corrección de Bessel:

Σ=1i=1Nwi1i=1Nwi(xiμ)T(xiμ)

Dónde μ es la media muestral ponderada (imparcial):

μ=i=1Nwixii=1Nwi

Nota importante: esto funciona solo si los pesos son pesos de tipo "repetición", lo que significa que cada peso representa el número de ocurrencias de una observación, y que i=1Nwi=N dónde N representan el tamaño real de la muestra (número total real de muestras, que representan los pesos).

He actualizado el artículo en Wikipedia, donde también encontrará la ecuación para la varianza muestral ponderada imparcial:

https://en.wikipedia.org/wiki/Weighted_arithmetic_mean#Weighted_sample_covariance

Nota práctica: le aconsejo que primero multiplique columna por columna wi y (xiμ) y luego hacer una matriz de multiplicación con (xiμ)para concluir y realizar automáticamente la sumatoria. Por ejemplo, en Python Pandas / código Numpy:

import pandas as pd
import numpy as np
# X is the dataset, as a Pandas' DataFrame
mean = mean = np.ma.average(X, axis=0, weights=weights) # Computing the weighted sample mean (fast, efficient and precise)
mean = pd.Series(mean, index=list(X.keys())) # Convert to a Pandas' Series (it's just aesthetic and more ergonomic, no differenc in computed values)
xm = X-mean # xm = X diff to mean
xm = xm.fillna(0) # fill NaN with 0 (because anyway a variance of 0 is just void, but at least it keeps the other covariance's values computed correctly))
sigma2 = 1./(w.sum()-1) * xm.mul(w, axis=0).T.dot(xm); # Compute the unbiased weighted sample covariance

Hice algunas comprobaciones de cordura utilizando un conjunto de datos no ponderado y un conjunto de datos ponderado equivalente, y funciona correctamente.

gaborous
fuente
@whuber: no, es correcto, pero depende de a qué estén asignados tus "pesos". En mi caso, es el número de observaciones (también conocido como "repeticiones"), por lo que esta ecuación funciona correctamente. En su caso con pesos normalizados o también si los pesos son las variaciones de cada medición de una observación, llamada "confiabilidad", entonces no funciona y debe usarse la otra ecuación en el wiki (que por cierto no trabajar con pesas de tipo "repeticiones").
Gaborous
@whuber: de todos modos, si tiene un enfoque más generalizable, me alegraría saberlo. ¡He rastreado todo el Internet y este sitio web y no he encontrado una ecuación que funcione para pesos de tipo repetitivo, excepto este que he publicado anteriormente!
Gaborous
3
No puede haber una fórmula universal: si los pesos no son frecuencias integrales (por ejemplo, si se han estandarizado para sumar a la unidad), entonces ha perdido toda la información sobre el tamaño total de la muestra n, de donde es imposible estimar el factor de corrección n/(n1). Sin embargo, siempre que los pesos no sumen la unidad, su fórmula producirá una respuesta. Es por eso que es crucial aclarar que su fórmula no es generalmente aplicable y que elwi deben ser frecuencias reales y nada más.
whuber
3
@whuber: Gracias por la explicación, eso es lo que temía (sin ecuación unificada y factor de pérdida de corrección). He agregado una nota a mi respuesta para describir mejor esto. También voy a agregar su línea sobre el factor de corrección en el artículo de Wikipedia.
Gaborous
@whuber Encontré estos viejos hilos. Me pregunto cómo encaja su afirmación de que "no puede haber una fórmula universal", por ejemplo, una respuesta aceptada en este hilo: stats.stackexchange.com/questions/47325 . ¿Crees que la respuesta es incorrecta (al afirmar que hay una expresión imparcial para cualquier peso)?
ameba