1 Introdução
Observações aleatórias são comuns na física. A corrente elétrica em circuitos apresenta flutuações irregulares em torno da corrente média (ruído). É algo intrínseco, relacionado com a agitação térmica dos elétrons de condução (Johnson 1928) (Nyquist 1928). É comum também em processos industriais. O diâmetro de um fio de costura ou a espessura de um arame apresentam flutuações irregulares relacionadas com os materiais utilizados na fabricação (algodão e latão, por exemplo).
Observações podem ser previsíveis, mas não perfeitamente previsíveis. Podem manifestar aleatoriedade. Einstein introduzio conceitos para descrever as flutuações irregulares. Em 1914, “algo completamente novo e original” (Yaglom 1987).
Como foi dito, a aleatoriedade é comum na física e em outras áreas do conhecimento: aeronáutica, ruído em sinal de radar; geociência, ruído em dados atmosféricos; astronomia, ruídos em dados estelares; e assim por diante. O tratamento de dados aleatórios, então, é método científico essencial, sem o qual muitos sistemas não poderiam ser analisados.
Neste artigo, vamos analisar sequências aleatórias através da média e correlação.
2 Média e correlação
A considerar o caso discreto de sequências aleatórias, com o objetivo de facilitar a programação computacional de fórmulas (no meu caso, utilizar a linguagem R), a corrente de tempo é construída por este conjunto discreto:
\[\begin{equation} \Big\{ t _ 1, t _ 2, t _ 3, \dots, t _ N \Big\} \tag{2.1} \end{equation}\]
Um exemplo com \(N=11\):
\[\begin{equation} \Big\{ t _ 1, t _ 2, t _ 3, t _ 4, t _ 5, t _ 6, t _ 7, t _ 8, t _ 9, t _ {10}, t _ {11} \Big\} \tag{2.2} \end{equation}\]
É obvio, o tempo não é a sequência aleatória (é o parâmetro). A atribuir números, a sequência acima pode ser:
\[\begin{equation} \small \mathscr{t} \to \Big\{ 0,\ 0.1,\ 0.2,\ 0.3,\ 0.4,\ 0.5,\ 0.6,\ 0.7,\ 0.8,\ 0.9,\ 1.0 \Big\} \tag{2.3} \end{equation}\]
Observe que \(t_1=0\) (ponto de partida da sequência temporal).
Uma sequência aleatória que dependa do tempo, especificada no tempo \(t_i\), terá representação: \(\mathscr{v}(t_i)\).
Um comando útil para gerar números aleatórios é runif(11, min=0, max=1)
:
\[\begin{equation} \small \mathscr{v} \to \Big\{ 0.85,\ 0.17,\ 0.51,\ 0.96,\ 0.41,\ 0.23,\ 0.37,\ 0.14,\ 0.67,\ 0.38,\ 0.72 \Big\} \tag{2.4} \end{equation}\]
Nesse exemplo, a pensar no tempo \(t_3\), obtém-se: \(\mathscr{v}(0.2) = 0.51\).
A média \((m)\) é algo bem simples de se fazer: (soma dos valores) / (total de valores). A escrever uma fórmula, a média de \(\mathscr{v}\) é:
\[\begin{equation} m = \frac{1}{N} \sum _ {i=1} ^{N} \mathscr{v}(t _ i) . \tag{2.5} \end{equation}\]
A função de correlação é algo bem diferente da média, porém, da mesma forma que a média analisa uma sequência aleatória, a correlação também analisa aleatoriedades (as duas análises se complementam). A fórmula da função de correlação \((B)\), para o caso de sequência aleatória discreta, é publicada no portal MathWorld: “o recurso matemático mais extenso da web, fornecido como serviço gratuito para as comunidades de matemática e internet do mundo como parte do compromisso com a educação e alcance educacional da Wolfram Research” – tradução –, conteúdo Autocorrelation:
\[\begin{equation} \mathcal{M} (\tau) = \frac{1}{N} \sum _ {i=1} ^{N} \mathscr{v}(t _ i + \tau) \mathscr{v}(t _ i) . \tag{2.6} \end{equation}\]
\(\tau\) assume todos os valores da sequência temporal, quer dizer, há uma fórmula personalizada para cada valor de \(\tau\). No caso de \(\tau=t_{1}\), a fórmula se reduz à soma dos quadrados dos valores:
\[\begin{equation} \mathcal{M} (t _ {1}) = \frac{1}{N} \sum _ {i=1} ^{N} \mathscr{v}(t _ i + t _ {1}) \mathscr{v}(t _ i) , \tag{2.7} \end{equation}\]
o que implica em \((t_{1}=0)\):
\[\begin{equation} \mathcal{M} (0) = \frac{1}{N} \sum _ {i=1} ^{N} \Big( \mathscr{v}(t _ i) \Big)^2. \tag{2.8} \end{equation}\]
As outras fórmulas são:
\[\begin{equation} \tau = t _ {2} \to \mathcal{M} (t _ {2}) = \frac{1}{N} \sum _ {i=1} ^{N} \mathscr{v}(t _ i + t _ {2}) \mathscr{v}(t _ i) . \tag{2.9} \end{equation}\]
\[\begin{equation} \tau = t _ {3} \to \mathcal{M} (t _ {3}) = \frac{1}{N} \sum _ {i=1} ^{N} \mathscr{v}(t _ i + t _ {3}) \mathscr{v}(t _ i) . \tag{2.10} \end{equation}\]
E assim por diante.
A Fig. 2.1 mostra uma sequência aleatória (criada pelo R), a média dos valores e a função de correlação. A função de correlação que aparece no gráfico foi normalizada:
\[\begin{equation} \frac{ \mathcal{M} (\tau) }{ \mathcal{M} (0) } . \tag{2.11} \end{equation}\]
A interpetrar a função de correlação, vamos expandir alguns termos da somatória \(\tau=t_{3}=0.2\) \(\big(\) \(\frac{1}{N}\) foi omitido \(\big)\):
\[\begin{equation} \begin{aligned} \mathcal{M} (t _ {3}) &= \mathscr{v}(t _ 1 + t _ {3}) \mathscr{v}(t _ 1) \\ &+ \mathscr{v}(t _ 2 + t _ {3}) \mathscr{v}(t _ 2) \\ &+ \mathscr{v}(t _ 3 + t _ {3}) \mathscr{v}(t _ 3) \\ &+ \mathscr{v}(t _ 4 + t _ {3}) \mathscr{v}(t _ 4) \\ &+ \mathscr{v}(t _ 5 + t _ {3}) \mathscr{v}(t _ 5) \\ &+ \mathscr{v}(t _ 6 + t _ {3}) \mathscr{v}(t _ 6) \\ &+ \cdots \end{aligned} \tag{2.12} \end{equation}\]
O que implica em:
\[\begin{equation} \begin{aligned} \mathcal{M} (t _ {3}) &= \mathscr{v}(0.0 + t _ {3}) \mathscr{v}(0.0) \\ &+ \mathscr{v}(0.1 + t _ {3}) \mathscr{v}(0.1) \\ &+ \mathscr{v}(0.2 + t _ {3}) \mathscr{v}(0.2) \\ &+ \mathscr{v}(0.3 + t _ {3}) \mathscr{v}(0.3) \\ &+ \mathscr{v}(0.4 + t _ {3}) \mathscr{v}(0.4) \\ &+ \mathscr{v}(0.5 + t _ {3}) \mathscr{v}(0.5) \\ &+ \cdots \end{aligned} \tag{2.13} \end{equation}\]
Ou:
\[\begin{equation} \begin{aligned} \mathcal{M} (0.2) &= \mathscr{v}(0.0 + 0.2) \mathscr{v}(0.0) \\ &+ \mathscr{v}(0.1 + 0.2) \mathscr{v}(0.1) \\ &+ \mathscr{v}(0.2 + 0.2) \mathscr{v}(0.2) \\ &+ \mathscr{v}(0.3 + 0.2) \mathscr{v}(0.3) \\ &+ \mathscr{v}(0.4 + 0.2) \mathscr{v}(0.4) \\ &+ \mathscr{v}(0.5 + 0.2) \mathscr{v}(0.5) \\ &+ \cdots \end{aligned} \tag{2.14} \end{equation}\]
Em fim:
\[\begin{equation} \begin{aligned} \mathcal{M} (0.2) &= \mathscr{v}(0.2) \mathscr{v}(0.0) \\ &+ \mathscr{v}(0.3) \mathscr{v}(0.1) \\ &+ \mathscr{v}(0.4) \mathscr{v}(0.2) \\ &+ \mathscr{v}(0.5) \mathscr{v}(0.3) \\ &+ \mathscr{v}(0.6) \mathscr{v}(0.4) \\ &+ \mathscr{v}(0.7) \mathscr{v}(0.5) \\ &+ \cdots \end{aligned} \tag{2.15} \end{equation}\]
A selecionar \(\tau=0.2\), há pares de números aleatórios separados, na corrente do tempo, por – exatamente – \(0.2\) (segundos): subtraía os argumentos da primeira coluna pelos argumentos da segunda coluna. Se um par resulta em zero, significa que não participa da “média” (não há correlação entre distâncias \(\tau\)). Se resulta em um valor baixo, significa que pouco influencia a somatória (há pouca correlação). Porém, se o resultado é alto, significa que sua participação é efetiva (há muita correlação entre distâncias \(\tau\)). A somar todos os termos, a função de correlação filtra os pares, “joga fora” os que não estão correlacionados e reserva os que tem correlação efetiva entre distâncias \(\tau\).
Na Fig. 2.1, observa-se que \(\mathcal{M}(0.2) > \mathcal{M}(0.8)\). Isso significa que o deslocamento \(\tau=0.2\) está mais correlacionado do que o deslocamento \(\tau=0.8\), em outras palavras, a comparar com o sinal original, o sinal deslocado \(\tau=0.2\) é mais semelhante do original do que o deslocado \(\tau=0.8\).
Portanto, a analisar uma grandeza que apresenta flutuações aleatórias, por exemplo, a corrente elétrica em um circuito, ou o diâmetro de um fio, é importante saber o valor médio da grandeza, a corrente média que passa pelo circuito, o diâmetro médio do fio de camisa, porém, isso não basta. É tão importante quanto, saber a correlação entre pontos dessa grandeza.
A corrente deslocada \(\tau=t_{\star}\) está mais ou menos correlacionada do que a deslocada \(\tau=t_{\star\star}\)?
O diâmetro deslocado \(\tau=x_{\star}\) está mais ou menos correlacionado do que o deslocado \(\tau=x_{\star\star}\) (agora \(\tau\) em milímetros, por exemplo)?
Se entre pontos não há correlação \((\mathcal{M} \to 0)\), o caráter fractal das flutuações está se desfazendo, por outro lado, se a correlação é alta \((\mathcal{M} \to 1)\), o caráter fractal das flutuações está se repetindo.
3 Outros sinais de entrada
A Fig. 3.1 apresenta uma sequência que contém flutuações puramente harmônicas: \(\cos(2\pi t/\mathtt{T})\), onde \(\mathtt{T}\) é o período das oscilações \((\mathtt{T}=0.1)\).
Ao ver o resultado 3.1, achei algo suspeito:
Se o sinal de entrada é um cosseno, por que a função de correlação está atenuada?
A função cosseno corre de menos infinito até mais infinito. Se o código de programação não truncasse “as pontas” da corrente do tempo, a função de correlação também seria um cosseno (não atenuado). Porém, o tempo é truncado em \(t_N=1.0\). Isso causa um efeito atenuador que pode ser reproduzido se fizermos a função de correlação de um sinal degrau – veja a figura abaixo ( 3.2 ). Um degrau tem função de correlação igual a uma reta decrescente \((1-t)\). Isso mostra que o cosseno truncado é composto por 2 sinais: um cosseno multiplicado por um degrau. E isso mostra tembém que a função de correlação do sinal (cosseno x degrau) é um cosseno atenuado conforma aparece na figura (agora insuspeita) 3.1.
A Fig. 3.3 apresenta uma sequência contendo flutuações harmônicas e atenuadas: \(\cos(2\pi t/\mathtt{T}) \exp[-2\pi t/(\alpha\mathtt{T})]\), sendo \((\alpha\mathtt{T})\) o “local” onde a atenuação “mata” as oscilações \((\alpha=9 , \mathtt{T}=0.1)\). É nítido que a função de correlação tem a mesma forma do sinal de entrada.
Combinação com ruído: A Fig. 3.4 mostra o ruído aleatório da figura 2.1 – criado pelo R – atenuado como na figura anterior ( 3.3 ).
Outra combinação com ruído: A Fig. 3.5 mostra o ruído aleatório da figura 2.1 – criado pelo R – modulado por oscilação harmônica como na figura 3.1.
4 Espectro da função de correlação
A função de correlação, no tempo específico \(\tau_{1}\), pode ser expandida em uma base de ondas planas (complexas):
\[\begin{equation} \mathcal{M}(\tau _ {1}) = \sum _ {i}^{N _ {\lambda}} \mathscr{e}^{i\lambda _ {i} \tau _ {1}} \mathcal{S}(\lambda _ {i}) . \tag{4.1} \end{equation}\]
Os coeficientes da expansão são determinados de acordo com a transformada discreta de Fourier:
\[\begin{equation} \mathcal{S}(\lambda _ {1}) = \frac{1}{2\pi} \sum _ {i}^{N _ {\tau}} \mathscr{e}^{-i\lambda _ {1} \tau _ {i}} \mathcal{M}(\tau _ {i}) . \tag{4.2} \end{equation}\]
Há uma fórmula personalizada para cada \(\lambda\):
\[\begin{equation} \mathcal{S}(\lambda _ {2}) = \frac{1}{2\pi} \sum _ {i}^{N _ {\tau}} \mathscr{e}^{-i\lambda _ {2} \tau _ {i}} \mathcal{M}(\tau _ {i}) . \tag{4.3} \end{equation}\]
\[\begin{equation} \mathcal{S}(\lambda _ {3}) = \frac{1}{2\pi} \sum _ {i}^{N _ {\tau}} \mathscr{e}^{-i\lambda _ {3} \tau _ {i}} \mathcal{M}(\tau _ {i}) . \tag{4.4} \end{equation}\]
E assim por diante.
O conjunto de \(\lambda\)’s forma o espectro da função de correlação:
\[\begin{equation} \Big\{ \lambda _ {1},\ \lambda _ {2},\ \lambda _ {3}, \dots ,\ \lambda _ {N _ {\lambda}} \Big\} . \tag{4.5} \end{equation}\]
A numerar as fórmulas em um código de programação, é conveniente trabalhar com ondas planas reais (cossenos). Então, as equações acima são assim digitadas:
\[\begin{equation} \mathcal{M}(\tau _ { }) = \sum _ {i}^{N _ {\lambda}} \cos(\lambda _ {i} \tau _ { }) \mathcal{S}(\lambda _ {i}) . \tag{4.6} \end{equation}\]
\[\begin{equation} \mathcal{S}(\lambda _ { }) = \frac{1}{2\pi} \sum _ {i}^{N _ {\tau}} \cos(\lambda _ { } \tau _ {i}) \mathcal{M}(\tau _ {i}) . \tag{4.7} \end{equation}\]
A determinar:
\[\begin{equation} \Big\{ \mathcal{S}(\lambda _ {1}),\ \mathcal{S}(\lambda _ {2}),\ \mathcal{S}(\lambda _ {3}), \dots ,\ \mathcal{S}(\lambda _ {N _ {\lambda}}) \Big\} , \tag{4.8} \end{equation}\]
obtém-se a função espectral – e (4.8) contra (4.5), o gráfico.
Vamos trabalhar o caso apresentado da figura 2.1. A Fig. 4.1 mostra a função espectral quando o sinal de entrada é um RUÍDO. O sinal de entrada foi subtraído de sua média \((\mathscr{v} - m)\): para flutuar em torno do zero. A função espectral que aparece no gráfico foi normalizada:
\[\begin{equation} \frac{ \mathcal{S} (\lambda) }{ \mathcal{S} (0) } . \tag{4.9} \end{equation}\]
Não se engane! \(\lambda\) é frequência angular. As vezes faltam “letras” para tantas fórmulas. É comum reservar \(\omega\) para as ondas eletromagnéticas. Então, aqui, as ondas da expansão (4.1) são ondas planas de frequência angular \(\lambda\) e frequência ordinária \(\lambda/2\pi\). Existem 2 “tipos” de tempo: o tempo \(t\) – que aparece na figura como tempo ordiário, e o tempo \(\tau\) – que aparece como tempo deslocado.
A função de espectral da figura 4.1 se concentra em vários “pontos” de frequência. Isso quer dizer que a função de correlação (4.6) é gerada por vários termos. Vamos trabalhar um caso que se concentra em apenas 1 “ponto”: as flutuações harmônicas e atenuadas da figura 3.3. A Fig. 4.2 apresenta a função espectral quando o sinal de entrada é um COSSENO AMORTECIDO.
Agora, a função espectral se concentra ao redor de \(\lambda_{\star}=2\pi \times 10\) Hz. Isso quer dizer que a função de correlação (4.6) é gerada principalmente pelo termo:
\[\begin{equation} \mathcal{M}(\tau _ { }) = \cos(\lambda _ {\star} \tau _ { }) \mathcal{S}(\lambda _ {\star}) . \tag{4.10} \end{equation}\]
Nota- se que o resultado da função espectral \((\mathtt{f}=10)\) está de acordo com o sinal de entrada \((\mathtt{T}=0.1)\) – figura 3.3.
5 Código fonte em R
#----------------------------------------------SINAL DE ENTRADA
t <- seq(0, 1, 0.005) # corrente de tempo
L <- seq(1, length(t), 1) # sequência de pontos do tempo
v <- runif(length(t), min = -0.25, max = 1.00) # ruído aleatório
#------------------DETERMINAÇÃO DA MÉDIA
m <- 0 # média na entrada do looping = 0
for (i in L) {
m <- m + v[i]
}
m <- m / length(t) # divide a saída do looping por N
#--------------------------------DETERMINAÇÃO DA FUNÇÃO DE CORRELAÇÃO
zeros <- replicate(length(t), 0) # vetor com zeros
v0 <- c(v, zeros) # combina o vetor ruído com o vetor com zeros
B <- replicate(length(t), 0) # função de correlação na entrada do lopping = 0
for (tal in L) {
for (i in L) {
B[tal] <- B[tal] + v0[i + tal] * v0[i]
}
}
B <- B / length(t) # divide a saída do looping por N
B <- B / B[1] # normalização
#--------------------------------------DETERMINAÇÃO DA FUNÇÃO DE ESPECTRAL
lambda <- seq(0 , 40*2*pi , 0.005) # corrente de frequência angular
Llambda <- seq(1 , length(lambda) , 1) # sequência de pontos da frequência angular
S <- replicate(length(lambda), 0) # função espectral na entrada do lopping = 0
for (i in Llambda) {
for (tal in L) {
S[i] = S[i] + cos( lambda[i] * t[tal] ) * B[tal]
}
}
S <- S / (2*pi) # normalização de Fourier
6 Conclusão
Conclui-se que sequências aleatórias são caracterizadas por uma constante, média da sequência – (2.5), e por uma função que depende do tempo deslocado, função de correlação – (2.6). Ademais, a função de correlação pode ser espandida em base de ondas planas e os coeficientes da expansão geram o espectro da função de correlação – (4.6) e (4.7).
Referências
Weisstein, Eric W. “Autocorrelation.” From MathWorld – A Wolfram Web Resource. https://mathworld.wolfram.com/Autocorrelation.html.
Weisstein, Eric W. “Discrete Fourier Transform.” From MathWorld – A Wolfram Web Resource. https://mathworld.wolfram.com/DiscreteFourierTransform.html.