7 votos

¿Cuál es la forma correcta de trazar la correlación y la autocorrelación?

Estoy tratando de trazar la correlación automática y cruzada del flujo de bits que se obtiene de un sistema dinámico no lineal.
El gráfico es la autocorrelación y la correlación cruzada para el flujo de bits obtenido del mismo sistema dianámico no lineal.

bitstream

No estoy seguro de cómo interpretar el gráfico. Si el programa es incorrecto o no. Quería obtener el gráfico de rezagos vs ACF pero lo que obtuve es diferente al gráfico real dado en un libro. Por favor, ayuda.

A = .5;  B = 1.99;  phin = .5;  xphi(1) = A - (B*phin);

for it = 2:1:5000    
 xphi(it) = A - (B*abs(xphi(it-1)));    
end
phi = 2*(xphi>=0.5)-1; 
A = .51;  B = 1.90;  phin = .5;  xphit(1) = A - (B*phin);

for it = 2:1:5000   
 xphit(it) = A - (B*abs(xphit(it-1)));    
end
phit = 2*(xphit>=0.5)-1; 

CST = xcorr(phit,phi);
AST = xcorr(phi,phi);

Time = 0;
for nn = 2:1:length(CST)
Time(nn) = Time(nn-1) + 1; 
end

plot(Time,AST,'r',Time,CST,'g');       title('\bf AUTO & CROSS correlation');    
xlabel('\bf Time');    ylabel('\bf Auto & Cross correlation'); legend('red-AC','green-CC');

La trama debe parecerse a

actual plot

donde la figura de arriba es la correlación cruzada y la de abajo la autocorrelación

2 votos

No estoy seguro de qué gráfico has trazado. ¿Estás usando R? ¿Cómo pueden los valores ACF estar fuera de -1 y 1?

0 votos

@NG_21: He utilizado Matlab y he incluido el código que se utiliza para generar el gráfico

1voto

Rob Allen Puntos 486

tl;dr: Su eje temporal es erróneo y los valores de correlación podrían reescalarse.

Eje de tiempo

La correlación cruzada de dos señales continuas $F$ y $G$ es $$(F \star G)(\tau) = \int_{-\infty}^{\infty} F^*(t)G(t+\tau)dt$$ En otras palabras, es el producto punto entre $F$ (o su conjugado complejo $F^*$ para señales de valor complejo) y una versión de $G$ que se ha desplazado hacia delante y hacia atrás. (Es muy parecido a la convolución, salvo que en el caso de la convolución, uno de ellos también se invierte: $t+\tau$ se convierte en $t-\tau$ para la convolución).

Esto implica que su gráfico de correlación cruzada tiene el cero en su centro, en lugar de en un borde. Usted mismo construyó el eje de tiempo, así que podría cambiar el código para poner 0 en el centro, -1 y +1 a cada lado, etc. Matlab también hace esto por usted como el segundo argumento de xcorr ( docs ):

[CST, lags] = xcorr(phit, phi); plot(lags, CST); title('Cross-correlation'); [AST, langs] = xcorr(phi, phi); plot(lags, AST); title('Autocorrelation');

Reescalado

La fórmula anterior asume que tus señales son infinitas, pero tus datos reales probablemente no lo son. Al "empujar" una matriz más allá de la otra, se convierten en longitudes diferentes y ya no se pueden comparar. Un método es desplazar una matriz circularmente (es decir, G(1) se convierte en G(2), G(2) se convierte en G(3), ...., G(N-1) se convierte en G(N), y G(N) se convierte en G(1)).

Matlab no hace eso. En su lugar, los rellena con ceros (en realidad hace el cálculo en el dominio de la frecuencia, y la llamada fft hace el relleno). Si su señal tiene una media distinta de cero, se convierte en un pequeño "paso" de forma extraña en medio de ceros. La convolución o correlación cruzada de los dos escalones produce esa extraña forma triangular. Hay algunas formas de tratarla:

  1. Estandarizar la señal para que tenga media cero y varianza unitaria ayuda
  2. También se puede obtener una estimación insesgada de la correlación cruzada reescalando $R(\tau)$ por $\frac{1}{N-|\tau|}$ . Matlab hace esto si se añade una tercera opción a la llamada de la función xcorr(F,G,'unbiased') (también hay otras opciones de normalización).

Por cierto, tal vez quieras jugar con un par de "señales" menos patológicas para practicar y poder ver a ojo cuál debería ser el resultado.

0 votos

Gracias por su respuesta. Estoy obteniendo el mismo gráfico ACF triangular utilizando el código que has dado. Todavía no puedo entender qué significa el gráfico, si los datos del flujo de bits están correlacionados o no. ¿Podría por favor elaborar en estos puntos (a) lo que podemos inferir acerca de la independencia mirando el pico en la parcela ACF (b) ¿Qué hace la parcela para ACF utilizando el flujo de bits indica acerca de la independencia (c) ¿Cómo puedo obtener normalizado ACF en el eje Y?

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