Econometria con Series de Fourier
Francisco Parra
14/10/2020
ANALISIS ESPECTRAL
Series estacionaria.
Sea un conjunto de observaciones de una variable aleatoria x, en distintos momentos del tiempo. Cada observación de x, es considerada como una realización de un proceso estocástico ergódico, debido a que solo disponemos de una realización del proceso estocástico que ha generado la serie de datos, dada la imposibilidad de observar distintas realizaciones de x(t) a lo largo de un periodo de tiempo.
Un proceso estocástico es estacionario en sentido estricto, cuando para todo n > 0 la función de distribución conjunta de:
F(xt+1, xt+2, ..., xt+n) = F (xt+1+k, xt+2+k, ..., xt+n+k), ∨k
Es decir; la función de distribución conjunta es independiente de t e invariante ante translaciones de tiempo. En un sentido amplio, para que un proceso sea estacionario, es suficiente que su esperanza y su función de autocovarianza sea independiente de t.
Es decir,
E(xt) = E(xt+k), ∨k
Si xtes un proceso es estacionario en media entonces ˆµt= n1Pnt=1xtes un estimador insesgado y consistente
de E(xt).
Si xtes un proceso es estacionario en covarianza, se cumple la siguiente igualdad γ(t, τ) = E([xt− E(xt)][xt+τ− E(xt+τ)]) = γ(τ)
que significa que la función de autocovarianza no depende de t,γ(τ) = γ(−τ), y el estimador de γ(τ) viene dado por C(K) = 1 n − k n−k X t=1 ([xt−ˆµ][xt+k−ˆµ])
La varianza, γ = 0, se estimaría a partir de:
C(0) = 1 n n X t=1 ([xt−ˆµ][xt−ˆµ]) .
Ejemplo 1
Generamos una serie aleatoria de 100 datos, con media 0 y desviación típica 1, que representamos en la figura siguiente: x=rnorm(100,0,1) plot(x,type='l')
0
20
40
60
80
100
−3
−2
−1
0
1
2
Index
x
Se comprueba que se trata de una serie estacionaria en media; ya que cualquier promedio que calculemos con dichos datos dará un resultado cercano a cero:
data.frame("media 1 a 25"= mean(x[1:25]),"media 26 a 50"= mean(x[26:50]),"media 51 a 75"= mean(x[51:75]),"media 76 a 100"= mean(x[76:100]))
## media.1.a.25 media.26.a.50 media.51.a.75 media.76.a.100
## 1 -0.4044872 -0.1406953 -0.05579686 0.1723447
Dado que el valor esperado es cero, el estimador de la función de autocovarianza será: C(K) =
1 n−k
Pn−k
t=1([xt][xt+k])
Calculado para diferentes valores de k
autocov= function(x,k) {sum(x[1:(100-k)]*x[(1+k):100])/(100-k)}
K=seq(1:10)
C_K=autocov(x,1)
for (i in 2 :10) {C=autocov(x,i) C_K=c(C_K,C)} data.frame(K,C_K) ## K C_K ## 1 1 0.01679829 ## 2 2 0.10113637 ## 3 3 0.21749873 ## 4 4 0.05181485 ## 5 5 -0.02271368 ## 6 6 -0.08785947 ## 7 7 0.05275167
## 8 8 0.04525362 ## 9 9 -0.16358785 ## 10 10 0.04520627 plot(K,C_K,type="h")
2
4
6
8
10
−0.1
0.0
0.1
0.2
K
C_K
Como se puede apreciar el valor de C(K) es independiente de K, tanto en su valor como en su signo. De esta forma que el proceso aleatorio que ha generado nuestros datos es estacionario.
Si generamos a partir de estos datos una serie del tipo: yt= 0.5 + yt−1:
x0=0.5 #punto inicial 0.5
T=100
x=c(x0,rnorm(T-1)) y=cumsum(x)
0
20
40
60
80
100
0
5
10
15
20
Index
y
Obtenemos una serie que no es estacionaria; ya que los promedios que obtenemos son diferentes:
data.frame("media 1 a 25"= mean(y[1:25]),"media 26 a 50"= mean(y[26:50]),"media 51 a 75"= mean(y[51:75]),"media 76 a 100"= mean(y[76:100]))
## media.1.a.25 media.26.a.50 media.51.a.75 media.76.a.100
## 1 -0.7371036 2.451839 11.80124 17.55763
Y una función C(K) = 1 n−k
Pn−k
t=1([xt−ˆµ][xt+k−ˆµ]) dependiente del tiempo:
autocov= function(y,k) {sum(y[1:(100-k)]*y[(1+k):100])/(100-k)}
K=seq(1:10)
C_K=autocov(y,1)
for (i in 2 :10) {C=autocov(y,i) C_K=c(C_K,C)}
2
4
6
8
10
104
108
112
116
K
C_K
Análisis espectral
Una serie temporal Xt,es decir, una realización de un proceso estocástico puede escribirse como suma de
senos y cosenos de la forma siguiente:
Xt= η + N
X
n=1
[ancos(wnt) + bnsin(wnt)]
donde η es la media de la serie, wn= 2πnT son las frecuencias naturales, cuando T es par N = T2, y cuando T
es impar entonces N = T −1 2 .
Los coeficientes an y bj son su amplitud y t es un indice de tiempo que va de 1 a N.
Los coeficientes an y bj, se pueden obtener como: an= T2 PT t=1(Xt− η)cos(wnt) y bn= 2 T PT t=1(Xt− η)sin(wnt)
Considerando que la mayor frecuencia que se puede observar en la serie Xt es la que corresponde a medio
ciclo por unidad de tiempo (frecuencia de Nyquist). Una sucesiónn se puede representar como un conjunto de pares (t, Xt) o como un conjunto de pares (wn, a2n+ b2n). La primera representación se llama en el dominio
del tiempo y la segunda en el dominio de la frecuencia. A la dinámica de las altas frecuencias (los valores mas altos de wn ) corresponden a los ciclos cortos en tanto que la dinámica de la bajas frecuencias (pequeños
valores de wn) van a corresponder con los ciclos largos.
El análisis espectral se utiliza para identificar y cuantificar, en procesos aparentemente aperiodicos, sucesiones de ciclos de corto y largo plazo. Una serie dada Xtpuede contener diversos ciclos de diferentes frecuencias y
amplitudes, y esa combinación de frecuencias y amplitudes de carácter cíclico la hacen aparecer como una serie no periódica e irregular. De hecho, la ecuación muestra que cada observación t de una serie de tiempo, es el resultado de sumar los valores en t que resultan de N ciclos de diferente longitud y amplitud, a los que habría que añadir, si cabe, un término de error.
awcos(wt) + bwsin(wt)
que da lugar a una función periódica de periodo 2π w.
En el análisis armónico, las series temporales no son consideradas funciones continuas como tal, sino que se obtienen a partir de una suma de n ciclos con una amplitud y un periodo determinado.
En el análisis armónioco an y bn son variables aleatorias con: E(an) = E(bn) = 0 E(aman) = E(bmbn) = ( σ2 n si m = n 0 si n 6= m E(an, bm) = 0, ∀nm
En este tipo de procesos la función de autocovarianza γ(τ) se obtiene:
γ(τ) = N X n=1 σn2cos(wnτ) donde σ2
n es la varianza del armónico j-th. De manera que en γ(0) = P N n=1σ
2
n se muestra que la varianza
total del proceso es la suma de las varianzas de cada armónico.
Una manera practica de transformar una serie temporal al dominio de la frecuencia es premultiplicando los datos originales por una matriz ortogonal, W , sugerida por Harvey (1978), con el elemento (j,t)th:
wjt= 1 T 12 ∀j = 1 2 T 12coshπj(t−1) T i ∀j = 2, 4, 6, ..(T −2)(T −1) 2 T 12sinhπ(j−1)(t−1) T i ∀j = 3, 5, 7, ..(T −2)T 1 T 12(−1)t+1 ∀j = T
La matriz W tiene la ventaja de ser ortogonal por lo que W WT = I.
A continuación se presentan varias funciones R para calcular la matriz ortogonal W , para pasar del dominio del tiempo al dominio de la frecuencia, y viceversa:
Función MW(a)
Obtiene la matriz ortogonal, W , sugerida por Harvey (1978) para una serie de MW <- function(n) {
# Author: Francisco Parra Rodr?guez
# Some ideas from: Harvey, A.C. (1978), Linear Regression in the Frequency Domain, International Economic Review, 19, 507-512. # http://econometria.wordpress.com/2013/08/21/estimation-of-time-varying-regression-coefficients/ uno <- as.numeric (1:n) A <- matrix(rep(sqrt(1/n),n), nrow=1) if(n%%2==0){ for(i in 3:n-1){ if(i%%2==0) {
A1 <- matrix(sqrt(2/n)*cos(pi*(i)*(uno-1)/n), nrow=1)
A <- rbind(A,A1)} else {
A2 <- matrix(sqrt(2/n)*sin(pi*(i-1)*(uno-1)/n), nrow=1)
A <- rbind(A,A2) }}
AN <- matrix(sqrt(1/n)*(-1)^(uno+1), nrow=1)
A <- rbind(A,AN) A } else { for(i in 3:n-1){ if(i%%2==0) { A1 <- matrix(
sqrt(2/n)*cos(pi*(i)*(uno-1)/n), nrow=1)
A <- rbind(A,A1)} else {
A2 <- matrix(sqrt(2/n)*sin(pi*(i-1)*(uno-1)/n), nrow=1)
A <- rbind(A,A2) }}
AN <- matrix(
sqrt(2/n)*sin(pi*(n-1)*(uno-1)/n), nrow=1)
A <- rbind(A,AN) }
}
Función gdf(a)
Transforma los datos del dominio del tiempo al dominio de la frecuencia pre-multiplicandolos por la matriz ortogonal,W , sugerida por Harvey (1978).
gdf <- function(y) { a <- matrix(y,nrow=1) n <- length(y)
A <- MW(n) A%*%t(a) }
Función gdt(a)
Transforma los datos del dominio de frecuencias al dominio del tiempo pre-multiplicandolos por la matriz ortogonal, A, sugerida por Harvey (1978).
gdt <- function(y) {
# Author: Francisco Parra Rodr?guez
# http://econometria.wordpress.com/2013/08/21/estimation-of-time-varying-regression-coefficients/ a <- matrix(y,nrow=1) n <- length(y) A <- MW(n) t(A)%*%t(a) }
ESTIMACIÓN DEL PERIODOGRAMA DE UNAS SERIE
AR-MONICA
Serie de Fourier
Una serie de Fourier es una serie infinita que converge puntualmente a una función continua y periódica.
f(t) = 1 2a0+ ∞ X n=1 ancos(nw0t) + bnsin(nw0t)
donde w0= 2πT se denomina frecuencia fundamental, y an y bn se les denomina coeficientes de fourier, y
la gama total de frecuencias es el Ancho de Banda de la señal.
Los coeficientes de una serie de fourier pueden calcularse gracias a la ortogonalidad de las funciones seno y coseno.
Una manera alternativa de presentar una la serie de Fourier es:
f(t) = c0+ ∞ X n=1 cncos(nw0t − θn) siendo: c0=a20, cn= pa2n+ b2n y θn= arctanabnn. Partiendo de la expresión: ancos(nw0t) + bnsin(nw0t) operando: p a2 n+ b2n[ an pa2 n+ b2n cos(nw0t) + bn pa2 n+ b2n sin(nw0t)] haciendo: an √ a2 n+b2n = cos(θn) bn √ a2 n+b2n = sin(θn) y θn= arctan an bn
la suma se expresa solo en función del coseno:
cn[cos(θn) cos(nw0t) + sin(θn) sin(nw0t)] = cncos(nw0t − θn)
Ortogonalidad
Se dicen que las funciones del conjunto {fk(t)} son ortogonales en el intervalo a < t < b, si dos fuenciones
Z b a fm(t)fn(t)dt = ( 0 si n 6= m rn si n= m
Las funciones sen(t) y cos(t) son ortogonales en el intervalo −π < t < π, ya que : Z π
−π
sen(t)cons(t)dt =sen 2(t)
2 [
π
−π = 0 Las funciones del conjunto:
{1, cos(w0t), cos(2w0t), cos(3w0t), ..., sen(w0t), sen(2w0t), sen(3w0t), ...}
donde w0=2πT son ortogonales en el inervalo −T2 < t < T2, se verifica probandolo a pares:
a) fn(t) = 1 y fm(t) = cos(mw0t) Z T2 −T 2 1cos(mw0t)dt =sen(mw0t) mw0 [ T 2 −T 2 =2sen(mw0T2) mw0 − 2sen(mw0T2) mw0 = 0 b) fn(t) = 1 y fm(t) = sen(mw0t) Z T2 −T 2 1sen(mw0t)dt = −cos(mw0t) mw0 [ T 2 −T 2 = −1 mw0[cos(mw0 T 2) − cos(mw0 T 2)] = 0 c) fn(t) = cos(nw0t) y fm(t) = cos(mw0t) Z T2 −T 2 cos(nw0t)cos(mw0t)dt = ( 0 si n 6= m T 2 si n= m 6= 0 d) fn(t) = sen(nw0t) y fm(t) = sen(mw0t) Z T2 −T 2 sen(nw0t)sen(mw0t)dt = ( 0 si n 6= m T 2 si n= m 6= 0 d) fn(t) = sen(nw0t) y fm(t) = sen(mw0t) Z T2 −T 2 sen(nw0t)cos(mw0t)dt = 0 para cualquier m y n.
Cálculo de los coeficientes Fourier
Los coeficientes de fourier se calculan multiplicando f(t) por cos(mw0t) e integrando de –T/2 a T/2:
Z T2 −T 2 f(t)cos(mw0t)dt = 1 2a0 Z T2 −T 2 cos(mw0t)dt+ ∞ X n=1 an Z T2 −T 2 cos(nw0t)cos(mw0t)dt+ ∞ X n=1 bn Z T2 −T 2 sen(nw0t)cos(mw0t)dt
a0= 2 T Z T2 −T 2 f(t)dt am= 2 T Z T2 −T 2 f(t)cos(mw0t)dt , m = 1, 2, 3... bm= 2 T Z T2 −T 2 f(t)sen(mw0t)dt
Forma compleja de la serie de Fourier
Consideremos la serie de Fourier para una función periódica f(t), con periodo T = 2π w0: f(t) = 1 2a0+ ∞ X n=1 ancos(nw0t) + bnsin(nw0t)
Es posible obtener una forma alternativa usando las fórmulas de Euler:
cos(nw0t) = 1 2(e inw0t+ e−inw0t) sin(nw0t) = 1 2i(e inw0t− e−inw0t) sustituyendo: f(t) =1 2a0+ ∞ X n=1 an 1 2(e inw0t+ e−inw0t) + b n 1 2i(e inw0t− e−inw0t) dado que 1 i = −i: f(t) = 1 2a0+ ∞ X n=1 [12(an− ibn)einw0t+ 1 2(an+ ibn)e−inw0t] definiendo: c0= 12a0, cn= 12(an− ibn) y c−n= 12(an+ ibn) quedaría como: f(t) = ∞ X −∞ cneinw0t
expresión que se conoce como forma compleja de fourier.
Y sus coeficientes cn pueden obtenerse a partir de los coeficientes an y bn, o bien a partir de : cn= 1
T
Z T
0
## Transformada de Fourier.
La Transformada de Fourier, F (w) , se define para una función continua de variable real, f(t) , mediante la siguiente formula:
F(w) =
Z ∞
−∞
f(t)e2πiwtdt
siendo i =√−1, e2πiwt= cos(2πwt) + isin(2πwt) y w una variable que representa las distintas frecuencias.
La Transformada de Fourier es una función compleja con una parte real y otra parte imaginaria, es decir:
F(w) = R(w) + I(w)
donde R(w) es la parte real e I(w) es la parte imaginaria.
La representación gráfica de la función de magnitud F (w) se le denomina Espectro de Fourier y se expresa en términos del modulo del número complejo:
F(w) = pR2(w) + I2(w)
y al cuadrado de dicha función F (w)2 se le denomina Espectro de potencias o Espectro de Amplitud.
El gráfico de los módulos al cuadrado frente a la frecuencia es el periodograma o espectro empírico de la sucesión f(x).
El periodograma recoge la contribución que tiene cada armónico a la hora de explicar la varianza de cada serie; y cada armónico esta caracterizado por la frecuencia en que tienen lugar los ciclos. Los ciclos que tienen un elevado periodo (desde que tiene lugar un máximo al siguiente máximo) tendrán una baja frecuencia y viceversa.
Se denomina esprectro de fase a:
φ(w) = artg −I(w) R(w)
Cálculo del periodograma.
Consideremos la serie temporal Xtde la que disponemos de un conjunto discreto y finito de observaciones T
observaciones, generadas por un proceso aleatorio x(t) como el descrito en el tema 1. Dado que se busca una representación de Xtque correspondiente a T observaciones, ajustamos los datos a un polígono trigonométrico
que se asemeje a una serie de fourier, escogiendo wn como: wn=2πnT .
Es decir, Xt= 1 2a0+ N X n=1 ancos(2πnt T ) + bnsin( 2πnt T ) xt= (Xt−1 2a0) = (Xt−ˆµ) = N X n=1 ancos(2πnt T ) + bnsin( 2πnt T ) Siendo a0= −T2 P T t=1Xt
La forma habitual de obtener el periodograma, es estimar por mínimos cuadrados ordinarios los coeficientes
an y bnpara cada N = T2 armónico, si el número de observaciones T es par, para cada N = T −12 si el numero
de observaciones es impar, en un modelo especificado de la siguiente forma:
xt= acos(w)t + bsin(w)t + vt
en la que xt sería la serie armónica, w = wn=2πnT , T es el tamaño de la serie y coincide con el periodo de
mayor ciclo que es posible estimar con el tamaño de la serie, p indica el orden del armónico de los T 2 ciclos, vtes un residuo no explicado al que se puede considerar irrelevante (caso determinístico) o que verifica las
propiedades clásicas de la perturbación de los modelos econométricos.
El periodograma o estimador del espectro se obtendría entonces a partir de la representación de I(wi) = T (a2
n+b2n)
4π frente a los n armónicos, en tanto que la contribución a la varianza por cada armónico sería: (a2
n+b2n)
2 .
Si una serie temporal de ciclos empíricos presenta en su periodograma unos pocos ciclos que explican un porcentaje significativo de su varianza, se puede obtener el ciclo teórico de dicha serie temporal a partir de los armónicos correspondientes a dichos ciclos.
Teorema de Paserval
Sea f(x) una función continua en el intervalo [−π, π] de periodo 2π, con desarrollo de Fourier:
f(x) = ∞
X
x=−∞ cneinx
donde, cn han sido obtenidos a partir de los coeficientes an y bn.
Entonces se verifica que:
∞ X n=−∞ | cn |2= 1 2π Z π −π | f(x) |2dx
Particularizando a la serie función periódica f(t) , con periodo T = 2π wo: f(t) = 1 2a0+ ∞ X n=1 ancos(w0nt) + bnsin(w0nt)
La identidad de Paaserval quedaría: 1 2π Z π −π [f(t)]2=1 2a 2 0+ ∞ X n=−∞ (a2 n+ b 2 n)
Las series temporales no son consideradas funciones continuas como tal, sino muestras de señales continuas tomadas a una misma distancia temporal a partir de un valor inicial X0 y siendo T el tamaño de la serie. De
acuerdo a lo anterior; en la función periódica f(t) la potencia promedio está dada por: 1 T Z T2 −T 2 [f(t)]2=1 4a20+ 1 2 T 2 X n=1 (a2 n+ b 2 n)
que muestra así que el periodograma estudia de hecho la distribución de la varianza o potencia de la serie en función de los diversos armónicos:
σ2= a2T 2 + 1 2 T 2 X n=t (a2 n+ b2n)
Test sobre el periodograma
Una forma de contrastar la existencia de algún ciclo en el periodograma de una serie temporal es el test de Fisher, estadístico g (Fisher, 1929) o relación entre la mayor varianza asociada a una determinada frecuencia (wi) y la varianza total de la serie:
g= max | wn| 2 T 2 PT2 n=1| wn|2
Para probar la significación del periodo p se contrasta el estadístico g contra la z de una distribución normal (0,1), siendo la regla de decisión rechazar la hipótesis nula sobre un componente periódico en Xt si la g
calculada excede de la z en un nivel de significación del 100α.
La manera habitual de contrastar la existencia de algún ciclo en el periodograma de una serie temporal a través del estadístico es calculando:
G= maxS 2
2S2
El ciclo es significativo si el valor G de esta relación es igual al valor crítico calculado según la siguiente fórmula:
Gc= 1 − eln(p)−ln(T )T −1
Siendo ln(p) el logaritmo neperiano del nivel de probabilidad elegido y T el número total de datos de la serie (en series de más de 30 datos).
Una prueba para estudiar la dependencia serial (Durbin; 1969) en series de observaciones estacionarias (x0, ..., xT) se realiza sobre la grafica del periodograma acumulado:
sj=
Pj
n=1pn
PN
n=1pn
donde n = 1, ..., N y pn el periodograma ordinario: pn= 2 T T X t=1 xte i2πnt T 2
Se presupone que cuando Xtesta independientemente y normalmente distribuida, sj se distribuye igual que
el orden estadístico de N − 1 muestras independientes de la distribución uniforme (0,1). Bartlett’s (1954,1966 p 361) sugiere para probar la independencia serial; probar la máxima discrepancia entre sj y su expectativa,
ie. j
N. Para una probar un exceso de bajas frecuencias relativas frente a altas frecuencias que equivaldría a la
expectativa de presencia de correlación serial positiva este enfoque conduce al estadístico:
C+= max(sj− j N)
C−= max(j N − sj)
El estadístico correspondiente a las dos partes de la prueba sería:
C= max(C+, C−)
Ejemplo 2
Partimos de una serie temporal generada a partir de un paseo aleatorio o random walk:Xt= 0.5 + Xt−1+ ut.
La serie Xtpresenta una tendencia estocástica, y vamos a descomponerla utilizando un modelo armónico,
partiendo de una representación de la tendencia ó movimiento relevante de la serie temporal obtenida a partir de una tendencia cuadrática, k =T
2 ciclos armónicos y un residuo aleatorio vt: Xt= a + bt + ct2+ N X n=1 ancos(w0nt) + bnsin(w0nt) + vt de manera que: xt= Xt− a+ bt + ct2= N X n=1 ancos(w0nt) + bpsin(w0nt) + vt set.seed(50) n=100 w = rnorm(n) x = 0.5+cumsum (w) plot(x,t="l")
0
20
40
60
80
100
−15
−10
−5
0
Index
x
t=seq(1:n) tendencia=lm(x~t+t^2)$fitted plot(t,x,type="l")0
20
40
60
80
100
−15
−10
−5
0
t
x
El armónico de periodo 1 (el que tinen un mínimo y un máximo en el espacio temporal de la serie) se elabora a partir de cos(2πt)
100 y
sin(2πt)
100 para t = 1, ..., 100. La representación gráfica de ambas series aparece en la
figura siguiente:
armo1.1=cos(2*pi*t/n)
armo1.2=sin(2*pi*t/n)
plot(t,armo1.1,type="l") lines(t,armo1.2,col="red")
0
20
40
60
80
100
−1.0
−0.5
0.0
0.5
1.0
t
ar
mo1.1
La regresión minimo cuadrática entre ambas series y la serie libre de tendencia (xt); ofrece el siguiente
lm((x-tendencia)~0+armo1.1+armo1.2)
## ## Call:
## lm(formula = (x - tendencia) ~ 0 + armo1.1 + armo1.2) ##
## Coefficients: ## armo1.1 armo1.2 ## -0.8196 1.6038
armo1=lm((x-tendencia)~0+armo1.1+armo1.2)$fitted
plot(t,armo1,type="l")
0
20
40
60
80
100
−1.5
−0.5
0.5
1.5
t
ar
mo1
Este proceso repetido para los 50 periodos permite obtener los coeficientes con los que elaborar el peridograma y obtener la contribución de cada armónico a la varianza de la serie:
armo=function(a,b) { t=seq(1:length(a))
p=length(a)/b
tendencia=lm(a~t+t^2)$fitted
armo.1=cos(2*pi*t/p)
armo.2=sin(2*pi*t/p)
reg=lm((a-tendencia)~0+cos(2*pi*t/p)+sin(2*pi*t/p))
data.frame(frecuencia=b,periodo=p,a=coef(reg)[1],b=coef(reg)[2]) }
res=armo(x,1) for(i in 2:20) {
res=rbind(res,armo(x,i))}
periodogr=data.frame(frecuencia=res$frecuencia,periodo=res$period,a=res$a,b=res$b,Pr=n*(res$a^2+res$b^2)/(4*pi),contribución=(res$a^2+res$b^2)/(2))
periodogr
## 1 1 100.000000 -0.81955539 1.603756807 25.81259964 1.6218534683 ## 2 2 50.000000 2.32667743 -1.554643932 62.31191040 3.9151727990 ## 3 3 33.333333 0.84435020 -0.111193759 5.77168491 0.3626456583 ## 4 4 25.000000 0.07134080 -0.699086441 3.92962596 0.2469056812 ## 5 5 20.000000 0.04605747 -0.325094722 0.85790777 0.0539039347 ## 6 6 16.666667 0.35212968 -0.872266756 7.04136964 0.4424223027 ## 7 7 14.285714 0.72134651 -0.459005208 5.81732456 0.3655132820 ## 8 8 12.500000 0.03514291 0.017685607 0.01231704 0.0007739023 ## 9 9 11.111111 -0.31723145 -0.523382452 2.98069342 0.1872824908 ## 10 10 10.000000 0.08707847 -0.420452596 1.46711450 0.0921815225 ## 11 11 9.090909 -0.13988519 0.007170838 0.15612532 0.0098096434 ## 12 12 8.333333 -0.03667392 -0.073060020 0.05317958 0.0033413716 ## 13 13 7.692308 0.04226489 0.204201892 0.34604051 0.0217423667 ## 14 14 7.142857 0.13214521 -0.240579621 0.59954392 0.0376704558 ## 15 15 6.666667 0.16110274 -0.083340076 0.26180717 0.0164498298 ## 16 16 6.250000 0.13108038 0.016066559 0.13878471 0.0087201003 ## 17 17 5.882353 -0.02683302 -0.267789409 0.57638900 0.0362155892 ## 18 18 5.555556 -0.06243762 -0.038746417 0.04296977 0.0026998705 ## 19 19 5.263158 0.18952061 -0.264605838 0.84299846 0.0529671552 ## 20 20 5.000000 -0.14339838 0.131332526 0.30089298 0.0189056633 plot(periodogr$Pr,type="l",col="red")
5
10
15
20
0
10
20
30
40
50
60
Index
per
iodogr$Pr
Para comprobar la significación estadística del ciclo de o periodo 50, calculamos el estadístico G = maxS2 2S2 : G=max(periodogr$Pr)^2/(2*periodogr$Pr[2]^2)
G
## [1] 0.5
El ciclo es significativo para un nivel de probabilidad del 95% ya que el valor del estadístico es superior al valor crítico Gc= 1 − e
ln(0,05)−ln(50)
99
Gc=1-exp((log(0.05)-log(50))/49)
## [1] 0.1314886
Calculo del periodograma a través de la Transformada Discreta de Fourier
Tomando N muestras de una señal periodica xk= f(tk) de periodo T en instantes separados por intervalos
regulares: t0= 0, t1= T N, t2= 2T N , ..., tk = kT N , ..., tN −1= (N − 1)T N
Cabe aproximarla mediante una combinación g(t) de funciones T-periódicas conocidas que tome en dichos puntos el mismo valor que f. Este procedimiento se conoce como interpolación trigonométrica. Las funciones T-periódicas que se utilizan son los armónicos complejos einwtcon w = 2π
T y puesto que hay N puntos, si el
problema tiene solución única hay que combinar un total de N armónicos. La función g(t) utilizada en la aproximación, toma entonces la forma general:
g(t) = 1
N(β0+ β1e
iwt+ β2ei2wt+ .... + βkeikwt+ ... + βN −1ei(N −1)wt) = 1 N
N −1
X
n=0 βieinwt
tal que Xk= g(tk) para cada k = 0, 1, ..., N − 1.
Entonces, xk= 1 N N −1 X η=0 βηeiηwtk= 1 N N −1 X η=0 βηeiηw2πN = 1 N N −1 X η=0 βηwnkN siendo wN = e i2π
N la raiz primitiva N-esima de la unidad.
En forma matricial se expresa: x0 x1 x2 . xη . xN −1 = 12 1 1 1 ... 1 ... 1 1 w w2 ... wη ... wN −1 1 w2 w4 ... w2η ... w2(N −1) . . . ... . ... . 1 wk w2k ... wηk ... w(N −1)k . . . ... . ... . 1 wN −1 w2(N −1) ... wη(N −1) ... w(N −1)(N −1) β0 β1 β2 . βη . βN −1
donde FN = [wnk]N −1n,k=0es la matriz de Fourier de orden N.
Al vector β se le denomina transformada discreta de Fourier del vector x, denotandose como : β = DF T (x). Una forma de obtener la DFT es a través del algoritmo FFT (Fast Fourier Transform), desarrollado por diseñado por J.W. Cooley y John Tukey en 1965.
Si la función que interpolamos es una función real de periodo T , xk = g(tk), donde k = 0, 1, ..., N − 1, que
utiliza la forma general:
g(t) =X n
ancos(nwt) + bnsin(nwt)
con w = 2π
a0= β0 N; an = 2RE(βn) N ; bn= −2IM(βn) N , N= 1, ..., M − 1; aM = βM N
y el poligono trigonométrico quedaría:
g(t) = a0+ M −1
X
n=1
ancos(nwt) + bnsin(nwt) + aMcos(Mwt)
Si se desea hacer una gráfica acumulativa del periodograma (B.D. Ripley), existe la función “cpgram”, en esta prueba se utilizan como bandas de frecuencia máxima y mínima las siguientes:
max= c + (t n); min = −c + ( t n) donde c = √ 1.358 n−1+0.12+√0.11 n−1
y n el número de frecuencias que se utilizan en el periodograma.
Si la representación grafica acumulativa del periodograma situada entre situada las bandas de frecuencia máxima y mínima, indicaría la no presencia de ciclos dominantes en la serie temporal.
Ejemplo 3
Utilizamos la serie ajustada a tendencia del Ejemplo 1, calculamos la tranformada de fourier con la función generica de R “fft”, la serie se obtendría a través de la inversa:
x.1=x-tendencia
z <- fft(x.1)
Para obtener el periodograma: CF = abs(z/sqrt(100))^2
P = (4/100)*CF[1:51] # Solo se necesitan los (n/2)+1 valores de la FFT .
f=(0:50)/16 # Para crear las frecuencias armónicas de 1/100 en pasos de 0 a 0.5
plot(f,P,type="l") # gráfica del periodograma; tipo = “l” gráficos de línea.
0.0
0.5
1.0
1.5
2.0
2.5
3.0
0
2
4
6
8
f
P
Se puede calcular directamente el periodograma utilizando la transformada de Fourier con las funcion de R: “spec.pgram”: spec.pgram(x.1)
0.0
0.1
0.2
0.3
0.4
0.5
5e−02
5e−01
5e+00
5e+01
frequency
spectr
um
Series: x.1
Raw Periodogram
bandwidth = 0.00289
Realizamos la representación gráfica del periodograma a través de "cpgram$. cpgram(x.1)
0.0
0.1
0.2
0.3
0.4
0.5
0.0
0.2
0.4
0.6
0.8
1.0
frequency
Series: x.1
Cálculo del peridograma transformando la serie al dominio de la frecuencia.
Sea x un vector T x 1, el modelo transformado en el dominio de la frecuencia por la matriz ortogonal W , esta dado por:
˙x = W x
Transformado las series del dominio del tiempo al dominio de la frecuencia, puede obtenerse un estimador consistente del periodograma de x.
Denominando pn el ordinal del periodograma de x en la frecuencia λn= 2πjT , y ˙xn el enesimo elemento de ˙x :
p2n= ˙x22n+ ˙x22n+1 ∀n= 1, ...T −12 p2n= ˙x2 2n ∀n= T −1 2 p1= ˙x21
Las siguientes funciones R calculan y representan gráficamente el periodograma:
Función periodograma (a)
Calcula y presenta el espectro de la serie “a” periodograma <- function(y) {
# Author: Francisco Parra Rodríguez # Some ideas from Gretl
# http://econometria.wordpress.com/2013/08/21/estimation-of-time-varying-regression-coefficients/
cf <- gdf(y) n <- length(y)
if (n%%2==0) {
m1 <- c(0) m2 <- c() for(i in 1:n){
if(i%%2==0) m1 <-c(m1,cf[i]) else m2 <-c(m2,cf[i])} m2 <-c(m2,0) frecuencia <- seq(0:(n/2)) frecuencia <- frecuencia-1 omega <- pi*frecuencia/(n/2) periodos <- n/frecuencia densidad <- (m1^2+m2^2)/(4*pi)
tabla <- data.frame(omega,frecuencia, periodos,densidad) tabla$densidad[(n/2+1)] <- 4*tabla$densidad[(n/2+1)]
data.frame(tabla[2:(n/2+1),])}
else {m1 <- c(0) m2 <- c()
for(i in 1:(n-1)){
if(i%%2==0) m1 <-c(m1,cf[i]) else m2 <-c(m2,cf[i])} m2 <-c(m2,cf[n]) frecuencia <- seq(0:((n-1)/2)) frecuencia <- frecuencia-1 omega <- pi*frecuencia/(n/2) periodos <- n/frecuencia densidad <- (m1^2+m2^2)/(4*pi)
tabla <- data.frame(omega,frecuencia, periodos,densidad) data.frame(tabla[2:((n+1)/2),])}
}
Función gperiodograma (a)
Presenta gráficamente el espectro de la variable a gperiodograma <- function(y) {
# Author: Francisco Parra Rodr?guez # Some ideas from Gretl
# http://econometria.wordpress.com/2013/08/21/estimation-of-time-varying-regression-coefficients/
tabla <- periodograma(y)
plot(tabla$frecuencia,tabla$densidad, main = "Espectro",
ylab = "densidad",
xlab="frecuencia",type = "l",
col="#ff0000")}
Las funciones R para realizar el test de Durbin sobre el periodograma son:
Función td (y,significance)
El test de Durbin esta basado en el siguiente estadistico: sj=
Pj n=1pn PN n=1pn donde N = T 2 para T par y T −1 2 para T impar.
El estadístico sj ha en encontrarse entre unos límites inferior y superior de valores críticos que han sido
estadístico esto es, po= ˆv1= 0
En la función se utilizan las bandas de frecuencia de la función cpgram de B. D. Ripley. td <- function(y) {
# Author: Francisco Parra Rodríguez # Some ideas from:
#Harvey, A.C. (1978), Linear Regression in the Frequency Domain, International Economic Review, 19, 507-512.
# DURBIN, J., "Tests for Serial Correlation in Regression Analysis based on the Periodogram ofLeast-Squares Residuals," Biometrika, 56, (No. 1, 1969), 1-15. # Venables and Ripley, "Modern Applied Statistics with S" (4th edition, 2002).
# http://econometria.wordpress.com/2013/08/21/estimation-of-time-varying-regression-coefficients/
per <- periodograma(y)
p <- as.numeric(per$densidad)
n <- length(p) s <- p[1] t <- 1:n
for(i in 2:n) {s1 <-p[i]+s[(i-1)]
s <- c(s,s1) s2 <- s/s[n] } xm <- frequency(y)/2 c <- 1.358/(sqrt(n-1)+0.12+0.11/sqrt(n-1)) min <- -c+(t/length(p)) max <- c+(t/length(p)) data.frame(s2,min,max) } Función gtd (a)
Presenta gráficamente los resultados de la prueba de Durbin (Durbin; 1969) : gtd <- function (y) {
S <- td(y)
plot(ts(S), plot.type="single", lty=1:3,main = "Test Durbin", ylab = "densidad acumulada",
xlab="frecuencia") }
Ejemplo 4
Obtenemos el periodograma, su representación gráfica y el test de Durbin sobre el periodograma utilizando de la serie creada en del ejemplo2.
periodograma(x.1)
## omega frecuencia periodos densidad
## 2 0.06283185 1 100.000000 1.290630e+01 ## 3 0.12566371 2 50.000000 3.115596e+01 ## 4 0.18849556 3 33.333333 2.885842e+00 ## 5 0.25132741 4 25.000000 1.964813e+00 ## 6 0.31415927 5 20.000000 4.289539e-01 ## 7 0.37699112 6 16.666667 3.520685e+00 ## 8 0.43982297 7 14.285714 2.908662e+00 ## 9 0.50265482 8 12.500000 6.158519e-03
## 10 0.56548668 9 11.111111 1.490347e+00 ## 11 0.62831853 10 10.000000 7.335572e-01 ## 12 0.69115038 11 9.090909 7.806266e-02 ## 13 0.75398224 12 8.333333 2.658979e-02 ## 14 0.81681409 13 7.692308 1.730203e-01 ## 15 0.87964594 14 7.142857 2.997720e-01 ## 16 0.94247780 15 6.666667 1.309036e-01 ## 17 1.00530965 16 6.250000 6.939235e-02 ## 18 1.06814150 17 5.882353 2.881945e-01 ## 19 1.13097336 18 5.555556 2.148489e-02 ## 20 1.19380521 19 5.263158 4.214992e-01 ## 21 1.25663706 20 5.000000 1.504465e-01 ## 22 1.31946891 21 4.761905 1.798089e-01 ## 23 1.38230077 22 4.545455 1.673123e-02 ## 24 1.44513262 23 4.347826 5.822690e-01 ## 25 1.50796447 24 4.166667 1.364430e-01 ## 26 1.57079633 25 4.000000 1.932048e-01 ## 27 1.63362818 26 3.846154 5.732373e-03 ## 28 1.69646003 27 3.703704 8.312120e-02 ## 29 1.75929189 28 3.571429 1.134812e-01 ## 30 1.82212374 29 3.448276 1.975984e-02 ## 31 1.88495559 30 3.333333 2.045660e-02 ## 32 1.94778745 31 3.225806 1.900729e-02 ## 33 2.01061930 32 3.125000 7.589156e-02 ## 34 2.07345115 33 3.030303 7.107889e-02 ## 35 2.13628300 34 2.941176 8.303240e-02 ## 36 2.19911486 35 2.857143 1.216226e-01 ## 37 2.26194671 36 2.777778 4.915373e-02 ## 38 2.32477856 37 2.702703 4.859259e-02 ## 39 2.38761042 38 2.631579 2.036695e-02 ## 40 2.45044227 39 2.564103 5.476973e-03 ## 41 2.51327412 40 2.500000 1.581200e-02 ## 42 2.57610598 41 2.439024 5.910273e-02 ## 43 2.63893783 42 2.380952 1.466372e-01 ## 44 2.70176968 43 2.325581 7.117237e-04 ## 45 2.76460154 44 2.272727 2.598291e-02 ## 46 2.82743339 45 2.222222 1.473444e-01 ## 47 2.89026524 46 2.173913 7.863477e-02 ## 48 2.95309709 47 2.127660 7.153018e-02 ## 49 3.01592895 48 2.083333 2.445113e-02 ## 50 3.07876080 49 2.040816 1.296646e-01 ## 51 3.14159265 50 2.000000 2.956689e-01 gperiodograma(x.1)
0
10
20
30
40
50
0
5
10
15
20
25
30
Espectro
frecuencia
densidad
td(x.1) ## s2 min max ## 1 0.2064961 -0.17031031 0.2103103 ## 2 0.7049802 -0.15031031 0.2303103 ## 3 0.7511526 -0.13031031 0.2503103 ## 4 0.7825889 -0.11031031 0.2703103 ## 5 0.7894520 -0.09031031 0.2903103 ## 6 0.8457817 -0.07031031 0.3103103 ## 7 0.8923192 -0.05031031 0.3303103 ## 8 0.8924178 -0.03031031 0.3503103 ## 9 0.9162628 -0.01031031 0.3703103 ## 10 0.9279994 0.00968969 0.3903103 ## 11 0.9292484 0.02968969 0.4103103 ## 12 0.9296738 0.04968969 0.4303103 ## 13 0.9324421 0.06968969 0.4503103 ## 14 0.9372383 0.08968969 0.4703103 ## 15 0.9393327 0.10968969 0.4903103 ## 16 0.9404430 0.12968969 0.5103103 ## 17 0.9450540 0.14968969 0.5303103 ## 18 0.9453978 0.16968969 0.5503103 ## 19 0.9521416 0.18968969 0.5703103 ## 20 0.9545487 0.20968969 0.5903103 ## 21 0.9574256 0.22968969 0.6103103 ## 22 0.9576933 0.24968969 0.6303103 ## 23 0.9670093 0.26968969 0.6503103 ## 24 0.9691924 0.28968969 0.6703103 ## 25 0.9722836 0.30968969 0.6903103 ## 26 0.9723753 0.32968969 0.7103103 ## 27 0.9737052 0.34968969 0.7303103## 28 0.9755209 0.36968969 0.7503103 ## 29 0.9758370 0.38968969 0.7703103 ## 30 0.9761643 0.40968969 0.7903103 ## 31 0.9764684 0.42968969 0.8103103 ## 32 0.9776827 0.44968969 0.8303103 ## 33 0.9788199 0.46968969 0.8503103 ## 34 0.9801484 0.48968969 0.8703103 ## 35 0.9820943 0.50968969 0.8903103 ## 36 0.9828808 0.52968969 0.9103103 ## 37 0.9836582 0.54968969 0.9303103 ## 38 0.9839841 0.56968969 0.9503103 ## 39 0.9840717 0.58968969 0.9703103 ## 40 0.9843247 0.60968969 0.9903103 ## 41 0.9852703 0.62968969 1.0103103 ## 42 0.9876165 0.64968969 1.0303103 ## 43 0.9876278 0.66968969 1.0503103 ## 44 0.9880436 0.68968969 1.0703103 ## 45 0.9904010 0.70968969 1.0903103 ## 46 0.9916592 0.72968969 1.1103103 ## 47 0.9928036 0.74968969 1.1303103 ## 48 0.9931948 0.76968969 1.1503103 ## 49 0.9952694 0.78968969 1.1703103 ## 50 1.0000000 0.80968969 1.1903103 gtd(x.1)
Test Durbin
frecuencia
densidad acum
ulada
0
10
20
30
40
50
−0.2
0.2
0.6
1.0
Ventanas
Hasta ahora hemos supuesto que las frecuencias eran frecuencias de Fourier y por tanto w = wn= 2πnT , donde nindica el orden del armónico. Se y se interpreta como el número de veces que un sinusoide (un armónico) de
frecuencia wn ejecuta un ciclo completo en la muestra considerada. Es decir, si n = 4, la frecuencia asociada
al armónico (w4 = 2π4T ), determinara que este ejecute 4 ciclos completos a lo largo de T . A este tipo de
frecuencias se denominan frecuencias de Fourier.
Si suponemos que existe un armónico que se repite cuatro veces y media,dicha frecuencia no producirá ciclos enteros en la muestra y nos encontramos con una frecuencia que no es de Fourier. Estas frecuencias originan un problema que se denomina leakage o distorsión, que determina que los pesos significativos del periodograma se repartan entre frecuencias contiguas.
Una de las maneras de solucionar el leakage consiste en aplicar transformar la serie original multiplicándola por una expresión que se denominan Data Windows o taper, y obtener el periodograma a partir de la serie transformada. Así es estimador de la función de densidad espectral puede considerarse como:
ˆ
f(w) = I(w)ω
DoDonde ω es la función de pesos o ventana espectral y I(W ) es el periodograma.
Dado de que lo que se trata es de promediar algunos valores contiguos del periodograma, podría utilizarse una media móvil de amplitud m:
ωt= 1 m∀t= 0 ± 1 ± 2 ± ... ± m−1 2 0 Entre las ventanas más utilizadas citar:
a) Tukey
ωt= 1 − 2a + 2acos πt T
si a = 1
4 se denomina ventana de Tukey-Hammond
b) Parcen ωt= 1 − 6(t T) 2+ 6 | t T | 3∀t= 1, 2, ...,T 2 2(1− | t T |) 3∀t= T 2, ..., T c) Boxcar ωt= 1 2h1 − cos πt+12 m i ∀t= 1, 2, ..., m 1, m 1 2h1 − cos 2πt+1 2 m i ∀t= T − m + 1, ..., T donde m es arbitrario, si bien suele elegirse un valor de m tal que 2m
ANALISIS ARMONICO DE PROCESOS BIVARIANTES
Proceso bivariante
Un proceso bivariante z(t) es un par formado por dos procesos univariantes, x(t) y y(t), donde E[x(t)] = µx(t)
y E[y(t)] = µy(t).
La función de autocovarianza de x(t) será:
γx(t, τ) = E[(x(t) − µx(t))(x(t + τ) − µx(t + τ))]
en tanto que la función de autocovarianza de y(t) será:
γy(t, τ) = E[(y(t) − µy(t))(y(t + τ) − µy(t + τ))]
Se denomina función de cross-varianza o covarianza cruzada a:
γx,y(t, τ) = E[(x(t) − µx(t))(y(t + τ) − µy(t + τ))]
Hay que señalar que γx,y(t, τ) no es igual a γy,x(t, τ), pero existe una relación entre las dos funciones ya que: γx,y(t, τ) = γy,x(t + τ, −τ)
Señalar, por último; que la covarianza entre x(t) y y(t) sería γx,y(t, 0).
Si se asume la estacionariedad de x(t) y y(t), entonces E[x(t)] = µx y E[y(t)] = µy, y la función de
cross-varianza no dependerá más que del retardo τ.
Suponiendo que µx = µy = 0, se comprueba que γx,y, no depende mas que del retardo τ, es decir que γx,y(t, τ) = γx,y(τ):
γx,y(t, τ) = E[x(t)y(t + τ)] = E[x(t + s)y(t + s + τ)], ∀s, t
La función de correlación cruzada se define como:
ρxy(τ) = γx,y(τ) γx(0)γy(0)
Cuando t = 0 , γx,y(0) es la covarianza habitual y ρxy(0) =
γx,y(0) γx(0)γy(0)
sería el coeficiente de correlación de Pearson entre x(t) e y(t). Los estimadores de γx,y(τ) y ρx,y(τ) se calculan:
Cx,y(k) = ( 1 T PT −k t=1(x(t) − µx)(y(t + k) − µy) si k = 0, 1, ..., T − 1 1 T PT −k t=1(x(t + k) − µx)(y(t) − µy) si k = −1, −2, ..., −(T − 1) rxy(k) = Cx,y(k) pCx(0)Cy(0)
La función de autocovarianza que obtenemos en el dominio temporal, tiene también su correspondiente representación en el dominio frecuencial; esta es el cross-espectro o espectro cruzado. Así, si partimos de dos procesos estacionarios x(t) y y(t), con la siguiente representación espectral:
x(t) = Z π 0 cos(wt)dUx(w) + Z π 0 sin(wt)dVx(w) y(t) = Z π 0 cos(wt)dUy(w) + Z π 0 sin(wt)dVy(w)
donde Ui(w) e Vi(w), i = x, y son procesos estocásticos con dominio definido en (0, π), con media 0 y de
incrementos incorrelacionados.
Dado que dichos procesos son conjuntamente estacionarios en covarianza, se demuestra que:
E[dUx(w)dUy(w0)] = E[dVx(w)dVy(w0)] = E[dUx(w)dVy(w0)] = E[dVx(w)dUy(w0)] = 0, ∀w 6= w0 E[dUx(w)dUy(w)] = E[dVx(w)dVy(w)] = C(w)dw
E[dUx(w)dVy(w)] = E[dVx(w)dUy(w)] = q(w)dw
De manera que la notación de la cross-varianza quedaría como:
γx,y(τ) = Z π 0 cos(wt)C(w)dw + Z π 0 sin(wt)q(w)dw
Que implica que la covarianza entre x(t) e y(t) sea:
γx,y(0) =
Z π
0
C(w)dw
El cross-espectro se formula como:
fxy(w) = 1 π
∞
X
π=−∞
γxy(τ)e−iwτ,0 ≤ w ≤ π
Dado que en general el cross-espectro es complejo; se define el cross-espectro (C) como la parte real de cross-espectro y el espectro de cuadratura (Q) como la parte imaginaria, que además coinciden con C(w) y
q(w): fxy(w) = C(w) − iq(W ) Se deduce que: C(w) = 1 π ∞ X π=−∞ γxy(τ)cos(wτ) y q(w) = 1 π ∞ X π=−∞ γxy(τ)sin(wτ)
fxy(w) = αxy(w)eiφxi(w)
siendo
αxy(w) = pC2(w) + q2(w)
que se conoce como espectro de cross-amplitud.
φxy= artg
−q(w)
C(w)
que se denomina espectro de fase.
Del cross-espectro y de la función de densidad espectral individual de las dos series x(t) e y(t) se obtiene la función de coherencia:
R(w) =C
2(w) + q2(w) fx(w)fy(w)
El cross-espectro representa la aportación a la covarianza entre x(t) e y(t) de sus diversos componentes armónicos. Como su interpretación no es simple, se utilizan las funciones de espectro de fase y coherencia, ya que el espectro de fase revela el desfase o retardo que en el comportamiento cíclico sigue una serie respecto a la otra; y el análisis de la función de coherencia permite identificar si la correlación que se da entre las dos series se debe a que ambas siguen un comportamiento cíclico en determinados periodos, permitiendo identificar la duración o periodo de los armónicos que dominan en ambas series a la vez y que producen una alta correlación.
La construcción del cross-espectro cuando τ = 0 y γxy(0) es la covarianza habitual, da lugar a las siguientes
funciones C(w) y q(w) :
C(w) = γxy(0)
2π
q(w) = 0
Si E[x(t)] = µx = 0 y E[y(t)] = µy = 0, la covarianza entre x(t) = xt e y(t) = yt se reducuría a γxy(0) = PTt=1xtyt, y la parte real del cross-espectro se reduce a :
C(w) = 1 2π T X t=1 xtyt
Teorema de Plancharel
Sean A(x) y B(x) dos funciones continuas de periodo 2π cuyos desarrollos de Fourier son:
A(x) = ∞ X x=−∞ aneinx B(x) = ∞ X x=−∞ bneinx
∞ X n=−∞ anbn = 1 2π Z π −π A(x)B(X)dx
Si A(x) = B(x) se obtiene la identidad de Parseval:
∞ X n=−∞ |an|2= 1 2π Z π −π |A(x)|2dx
De igual manera que la identidad de Parseval estudia la distribución de la varianza de una serie desarrollada en sus armónicos, la de Plancharel estudia la covarianza entre dos series desarrolladas en sus armónicos. Partiendo de una serie armónica x(t) = Pk
n=1ancos(nw0t) + bnsin(nw0t) y otra y(t) = P k
n=1a∗ncos(nw0t) + b∗nsin(nw0t), en donde k = T2 si el numero de observaciones T es par, o k = T −12 si el numero de observaciones T es impar, la expresión de igualdad de plancharel sería:
1 2 T 2 X n=1 ana∗n+ bnb∗n= 1 T Z T2 −T 2 x(t)y(t)dx
El producto escalar de x(t) e y(t):
T X t=1 x(t)y(t) = T X t=1 ( k X n=1
[ancos(nw0t) + bnsin(nw0t)][a∗ncos(nw0t) + b∗nsin(nw0t)])
da como resultado:1 2
PT2
n=1(ana∗n+ bnb∗n), en base a la ortogonalidad de las series de seno y coseno.
Coeficiente de correlación de Pearson
Dado que la covarianza entre las series armónicas x(t) e y(t) se desarrolla a partir de los coeficientes de Fourier: σxy2 = 1 2 T 2 X n=1 ana∗n+ bnb∗n
cabe considerar a cada expresión ana∗n+bnb∗n
2 como la contribución del armónico n a la formación de la
covarianza, de manera que la representación de Cxy(wn) =
T (ana∗n+bnb∗n)
4π frente a los n armónicos permite
apreciar las frecuencias entre las que las series x(t) e y(t) covarían en sentido positivo o negativo. Se puede observar que un ciclo relevante en ambas series originará un valor alto en Cxy(wn), en tanto que un ciclo
poco relevante en alguna de las dos series dará lugar a un valor bajo en Cxy(wn).
En tanto que el coeficiente de correlación de pearson se obtendría a partir de:
ρxy(0) = PT2 n=1ana∗n+ bnb∗n q (PT2 n=1a2n+ b2n)(P T 2 n=1a∗2n + b∗2n )
Utilizando la definición alternativa de las series de fourier, tenemos que x(t) = C0+ Pkn=1Cn(cos(nw0t − θn)
e y(t) = C∗ 0+ P
k
n=1Cn∗(cos(nw0t − θ∗n), en donde C0= a20, Cn= pa2n+ b2m, y θn= arctanabnn; y C0∗= a∗0 2, Cn∗= pa∗2 n + b∗2n , y θn= arctan b∗n a∗ n.
Se aprecia entonces que en cada armónico n , θn determinara el ángulo de desfase en radianes de cada serie de
fourier, si queremos obtener el desfase en unidades de tiempo, hay que dividirlo por la frecuencia fundamental (w0), wθn0, entonces la diferencia wθn0 −
θ∗n w0 =
θn−θ∗n
wo determinara el desfase entre los armónicos n de las dos
series.
En definitiva, los coeficientes de Fourier también permiten analizar la covarianza cruzada y los desfases que se dan entre las frecuencias relevantes de dos series armónicas.
Ejemplo 5
Se realiza una representacion del cross-espectrum de las series datos anuales del PIB en Indices de Volumen y el consumo de energia final en España, correspondientes al periodo 1995-2018.
Se utiliza la función “crossSpectrum” de la libreria IRISSeismic, la función tiene una opción, spans, donde se puede incluir el vector de enteros impares que se utilizarán para suavizar el periodograma (anchos modificados de Daniels).
En el ejemplo se representan las funciones de espectro de fase y coherencia library(IRISSeismic)
library(vars)
## Loading required package: MASS
## Loading required package: strucchange ## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base': ##
## as.Date, as.Date.numeric ## Loading required package: sandwich ## Loading required package: urca ## Loading required package: lmtest
# Lectura de datos
energia <-read.csv("energia.csv",header=TRUE,sep=";") E=energia$CEEF
P=energia$PIB_IV
ts1=ts(P,frequency = 1, start = 1995) ts2=ts(E,frequency = 1, start = 1995)
# Calculate the cross spectrum
DF <- crossSpectrum(ts.union(ts1,ts2),spans=4)
# Calculate the transfer function
transferFunction <- DF$Pxy / DF$Pxx
transferAmp <- Mod(transferFunction)
# 2 rows
layout(matrix(seq(2)))
# Plot
plot(1/DF$freq,transferAmp,type='l',log='x', xlab="Period",
main="Transfer Function Amplitude") plot(1/DF$freq,transferPhase,type='l',log='x',
xlab="Periodo", ylab="degrees",
main="Transfer Function Phase")
2
5
10
20
200
Transfer Function Amplitude
Period
tr
ansf
erAmp
2
5
10
20
0
350
Transfer Function Phase
Periodo
degrees
Producto escalar de dos series armónicas.
El producto de dos series armónicas de diferente frecuencia: x(t) = [ajcos(ωj) + bjsin(ωj)] e y(t) =
[aicos(ωi) + bisin(ωi)]
da como resultado la siguiente suma:
ajaicos(ωj) cos(ωi) + ajbicos(ωj) sin(ωi)
+aibjsin(ωj) cos(ωi)bisin(ωi) + bjbisin(ωj) sin(ωi)
considerando las identidades del producto de senos y cosenos, quedaría:
ajai+bjbi 2 cos(ωj− ωi) + bjai−bjaj 2 sin(ωj− ωi) +ajai−bjbi 2 cos(ωj+ ωi) + bjai+bjai 2 sin(ωj+ ωi)
La circularidad de ω determina que la serie producto de dos series en t, resulte una nueva serie cuyos coeficientes de Fourier sean una combinación lineal de los coeficientes de Fourier de las series multiplos.
Partiendo de las dos series siguientes: yt= ηy+ ay0cos(ω0) + b y 0sin(ω0) + a y 1cos(ω1) + b y 1sin(ω1) + a y 2cos(ω2) + b y 2sin(ω2) + a y 3cos(ω3) xt= ηx+ ax0cos(ω0) + bx0sin(ω0) + ax1cos(ω1) + bx1sin(ω1) + ax2cos(ω2) + bx2sin(ω2) + ax3cos(ω3)
Dada una matriz Θx ˙˙x de tamaño 8x8 :
Θx ˙˙x= ηxI 8+ 1 2 0 ax 0 bx0 ax1 b1x ax2 bx2 2ax3 2ax 0 ax1 bx1 ax0+ ax2 b0x+ bx2 ax1+ 2ax3 bx1 2ax2 2bx 0 bx1 −ax1 −bx0+ bx2 ax0− ax2 −bx1 ax1− ax3 −2bx2 2ax 1 ax0+ ax2 −bx0+ bx2 2ax3 0 ax0+ ax2 bx0− bx2 2ax1 2bx 1 ax0+ bx2 −bx0− ax2 0 −2a3x −bx0+ bx2 ax0− ax2 −2bx1 2ax 2 ax1+ 2ax3 −bx1 ax0+ a2x −bx0− bx2 ax1 −bx1 2ax0 2bx 2 bx1 ax1−2ax3 bx0− b2x ax0− ax2 −bx1 −ax1 −2bx0 2ax 3 ax2 −bx2 ax1 −bx1 ax0 −bx0 0 Se demuestra que: ˙z = Θx ˙˙x˙y donde ˙y = W y, ˙x = W x, y ˙z = W z. En el dominio del tiempo:
zt= xtyt= WT˙xWT˙y = WTW xtWT˙y = xtInWT˙y WT˙z = x tInWT˙y ˙z = W xtInWT ˙y Entonces: Θx ˙˙x= WTx tInW
La matriz cuadrada Θx ˙˙x puede ser utilizada para obtener los resultados en el dominio de la frecuencia de
diversas funciones de series de tiempo . Por ejemplo, si se desea obtener el desarrollo de los coeficientes en fourier de zt= x2t, entonces:
˙z = W xtInWT˙x
En consecuencia, si zt= xnt
˙z = W xn−1 t InWT˙x
Si ahora queremos obtener el desarrollo en coeficientes de fourier de zt= xytt, entonces:
˙z = W [1 y t]InW
T˙x
Función cdf(a)
Obtiene la matriz auxiliar para operaciones con vectores en dominio de tiempo y dominio de la frecuencia, pre-multiplica un vector por la matriz ortogonal, W y por su transpuesta, Parra F. (2013)
cdf <- function(y) {
# Author: Francisco Parra Rodríguez
# http://econometria.wordpress.com/2013/08/21/estimation-of-time-varying-regression-coefficients/
a <- matrix(y, nrow=1) n <- length(y)
A <- MW(n) I<- diag(c(a)) B <- A%*%I
B%*%t(A)
}
Aproximación bivariada con series de Fourier: Forma Flexible de Fourier (FFF)
Gallant (1981;1982) introdujo una forma funcional con capacidades muy distintas a las propuestas hasta el momento; cuyas propiedades de flexibilidad eran en todos los casos locales. La forma de Fourier que utiliza Gallant posee la propiedad de flexibilidad global; es decir; permite aproximar arbitrariamente cerca tanto a la función como a sus derivadas sobre todo el dominio de definición de las mismas. La idea que subyace en este tipo de aproximaciones (que podrían denominarse semi-no-paramétricas) es ampliar el orden de la base de expansión; cuando el tamaño de la muestra aumenta; hasta conseguir la convergencia asintótica de la función aproximante a la verdadera función generadora de los datos y a sus derivadas.
Por tratarse de una forma Sobolev-flexible (frente a la Diewert-flexibilidad de las anteriores) es capaz de estimar consistentemente las elasticidades precio y renta sobre todo el espacio de datos (ElBadawi, Gallant y Souza; 1983); además; asintóticamente pueden conseguirse contrastes estadísticos insesgados (Gallant; 1981 y 1982) y la eliminación del problema de inferencias aumentadas provocado por la especificación de un determinado modelo. Por último; Gallant y Souza (1991) han mostrado la normalidad asintótica de las estimaciones derivadas de la forma de Fourier.
En la parte negativa, el modelo de Fourier puede conseguir la regularidad global, pero las restricciones paramétricas que ello implica son excesivamente fuertes (Gallant, 1981); sin embargo, existen condiciones más débiles (que no destruyen ni la flexibilidad ni la consistencia de los estimadores) con las que se puede conseguir la regularidad teórica al menos sobre un conjunto finito de puntos (Gallant y Golub, 1983); aunque la implementación de tales restricciones resulta compleja (McFadden; 1985). En cualquier caso, las simulaciones de Monte Carlo realizadas por Fleissig, Kastens y Terrell (1997) y Chalfant y Gallant (1985) han mostrado que la región de regularidad de la forma de Fourier libre -sin restricciones de ningún tipo- es mucho mayor que la correspondiente a las formas Leontief-Generalizada o Translog.
Un polinomio de Fourier viene dado por la expresión:
Xt= η + N X j=1 ajcos 2πf t n + bjsin 2πf t n (1)
donde η es la media de la serie, aj y bj son su amplitud,f son las frecuencias que del conjunto de las n
observaciones,t es un indice de tiempo que va de 1 a N, siendo N el numero de periodos para los cuales tenemos observaciones en el conjunto de datos, el cociente f t
n) convierte cada valor de t en escala de tiempo
en proporciones de 2n y rango j desde 1 hasta n siendo n = N
2 (es decir, 0,5 ciclos por intervalo de tiempo).
La dinámica de las altas frecuencias (los valores más altos de f) corresponden a los ciclos cortos en tanto que la dinámica de las bajas frecuencias (pequeños valores de f) van a corresponder con los ciclos largos. Si nosotros hacemos que f t
n = w la ecuación (1) quedaría, asi : Xt= η +
N
X
j=1
[ajcos(ωj) + bjsin(ωj)](2)
La aproximación a una función no periódica g(x) por una serie de expansión de Fourier se realiza en Gallant (1981) añadiendo es esta un término lineal y cuadrático. De esta forma que la aproximación univariada se
g(x/θ) = α + βx +1 2δx 2+ 2 J X j=1 [ajcos(jx) + bjsin(jx)](3)
El vector de parámetros es (θ) = (α, β, δ, a1, ..., aJ, b1, ...., bJ) de longitud K = 3 + 2J, siendo siendo J ≈√n.
La expresión de la primera y segunda derivada de la función (3) son las siguientes:
Dxg(x/θ) = β + δx + J
X
j=1
[−ajsin(jx) − bjcos(jx)]j
Dx2g(x/θ) = δ + J
X
j=1
[−ajcos(jx) + bjsin(jx)]j2
Dado que la variable exógena x no está expresada en forma periódica, debe de transformase o normalizarse en un intervalo de longitud menor que 2π;[0, 2π].
Función FFF(y,x)
La función realiza la aproximación de la expansión en series de fourier descrita en Gallant (1981) para una variable dependiente (y) y otra independiente (x).
# Funcion FFF
FFF=function(y,x){ z=2*pi*x/max(x)
n=3+2*abs(sqrt(length(x)))
X=data.frame(X=x,X2=(x^2)/2,X3=cos(z),X4=sin(z))
m=trunc((n-5)/2)
for(i in (1:m))
{X5=cos(2*i*z)
X6=sin(2*i*z)
X=cbind(X,X5,X6)}
list(fitted=lm(y~as.matrix(X))$fitted,X=X,residuals=lm(y~as.matrix(X))$residuals)}
Ejemplo 6
A continuación va a realizarse una FFF con datos anuales del PIB en Indices de Volumen y el consumo de energia final en España, correspondientes al periodo 1995-2018.
Dado que la longitud de los datos del ejemplo son 24, la expansión considera que K = 3 + 2 ∗ 5 = 13 energia <-read.csv("energia.csv",header=TRUE,sep=";")
E=energia$CEEF
P=energia$PIB_IV
fff.E=FFF(E,P)
plot(ts(E,frequency = 1, start = 1995),type="l",main="Consumo Energia Final (Ktep).España",ylab="") lines(ts(lm(E~P)$fitted, frequency = 1, start = 1995), type="l", col=2)
lines(ts(fff.E$fitted, frequency = 1, start = 1995), type="l", col=3)
Consumo Energia Final (Ktep).España
Time
1995
2000
2005
2010
2015
12000
16000
20000
CEF Estimado LM Estimado FFF
Aproximación FFF multivariada:
La aproximación multivariada se describe en Gallant (1984):
g(x/θ) = u0+ b0x+1 2x0Cx+ A X α=1 u0α+ 2 J X j=1 mjαcos(jkα0z) + njαsin(jk0αz)
Donde, x es un vector de Nx1 variables, b es un vector de Nx1 coeficientes, C es una matriz simétrica de de NxN coeficientes, z es un vector Nx1 de valores transformados de x ; mjα y njα son coeficientes, k0α= [kx1, kx2, ..., kxN] son multi-índices; vectores de 1xN elementos que representan a la derivadas parciales
de una función de producción de Fourier para los diferentes tipos de expansión.
Dado que las variable exógenas no están expresada en forma periódica, deben de transformase o normalizarse en un intervalo de longitud menor que 2π. Fulginiti et all (2003) sugieren transformar el vector de variables x definiendo:
li= log(ai) + log(xi); i = 1, 2, ..., N
siendo ai= Min[log(xi)] + 10−5
Entonces el valor de las variable transformada sería:
zit= jλk0α[log(at) + log(xt)]
siendo λ = 2π− max(li)
donde es valor positivo arbitrario y pequeño, si bien se recomienda escoger: 2π − = 6. La forma flexible que aproxima a una ecuación con tres variables exógenas, y j = 1 sería: