Programa Spectra versiones 1 y 2
(para DOS, Windows)
2 de abril, 1998 - 21 de diciembre 2002 (version 2).
(Dpto. Astronomía, Instituto de Física ,
Facultad de Ciencias)
(Observatorio Astronómico Los Molinos
, M.E.C.)
Espectro de potencia
La búsqueda de periodicidades en una serie temporal es un problema clásico y cotidiano en astronomía.
La serie puede ser equiespaciada (caso de integraciones numéricas) o no equiespaciada (caso de
observaciones). Para una serie equiespaciada existe el poderoso método FFT. No obstante este método
tiene la importante limitación de que únicamente se evalua la potencia del espectro en determinadas
frecuencias (las frecuencias de Fourier) que pueden no ser las que interesan.
Más precisamente, es una descomposición de la serie temporal en una base ortonormal definida
por un número finito N/2 de frecuencias, donde N es el número de datos.
El método además es definitivamente inútil
para evaluar bajas frecuencias. A pesar de que a menudo es utilizada, la FFT no debe aplicarse a
observaciones no equiespaciadas puesto que no se cumple la hipótesis fundamental (datos equiespaciados).
Peor aún, suele utilizarse la FFT para evaluar la potencia en frecuencias que no son las de Fourier, alegando
de que se esta trabajando con la transformada continua. Todo esto hace que la potencia evaluada
mediante FFT sea incorrecta y por lo tanto se identifiquen mal las línes espectrales.
El primer intento serio de resolver este problema lo hizo Ferraz-Mello (1981, Astron. Journal 86(4), 619)
continuado luego por
Horne & Baliunas (1986, Astroph.J., 302, 757) y por
Foster en una sucesión de memorables trabajos en 1995 (Ast.J. 109(4), 1889) y 1996
(Ast.J. 111(1), 541 y Ast.J. 111(1), 555).
Existen muchos métodos para la obtención de espectros o periodogramas. Existen tantos buenos como
malos. Obviamente el nuestro pertenece a los primeros.......
Si bien la eficiencia de los métodos depende de nuestro objetivo y del tipo de datos de que disponemos, en general las ideas de Foster
están a la vanguardia.
Aqui presentamos un método basado en las ideas de Ferraz-Mello y Foster y cuyos detalles pueden encontrarse
en Gallardo & Ferraz-Mello (1997, Astr.J. 113(2), 863). Básicamente se trata de ajustar los datos (t,x) a la
función modelo
Y = C1 + C2*cos(2pi*f*t) + C3*sen(2pi*f*t)
Para valores tentativos de la frecuencia f se calculan las constantes Ci y el Coeficiente de Correlación Espectral
(Ferraz-Mello 1981, Foster 1996a) que es un número menor a 1 y está asociado a la
probabilidad de que la frecuencia f sea real y no producto del azar. Los máximos en la gráfica CCE(f) indican la
presencia de líneas y los correspondientes Ci definen amplitud, fase y nivel cero. Lógicamente, el poder del método radica
en la definición del CCE, para lo cual sugerimos ver el programa fuente
spectra1.for
en lenguaje Fortran.
Instrucciones para usar spectra1.exe (para DOS)
- Guardar con el nombre datos.dat el archivo conteniendo la serie temporal en dos columnas (t,x) ordenadas
cronológicamente. Colocar en un mismo directorio spectra1.exe y datos.dat.
- Al ejecutar spectra1.exe se indican una serie de informaciones, en especial el ancho que tendrá
cada línea espectral en unidades de frecuencia (ciclos por unidad de tiempo utilizada).
- Luego se piden los límites entre los que se desea calcular el espectro.
Aquí es conveniente tener presente que si los tiempos, t, son múltiplos
de un intervalo T, no tendrá sentido evaluar el espectro en frecuencias
fuera del rango ( 0 , 1/2T ). En el caso de series equiespaciadas, T es
el step y en el caso de datos observacionales será la
precisión con que se conocen los tiempos. El programa preguntará también
el numero de puntos
que tendrá la gráfica CCE(f). Cuanto mayor sea el número de puntos, mejor definición de los máximos
en el espectro, pero si se utilizan varios miles de puntos el programa puede demorar una eternidad.
- Una vez finalizado, los resultados estarán en el archivo spectra1.dat con el formato:
frecuencia, CCE, C1, C2, C3.
Las posibles líneas espectrales quedaran definidas por los máximos de CCE, la amplitud será
sqrt(C2^2+C3^2)
y el nivel cero o constante aditiva, C1.
De esta forma se obtiene el espectro. Si las líneas están suficientemente separadas (varias veces el ancho)
no habrá acople (leakage) entre ellas y los máximos de CCE las definiran. Pero si las líneas están a distancias
menores al ancho entonces habrá acople y su determinación precisa requiere un trabajo extra
que no está contemplado en este programa. Una cosa es la obtención del espectro, CCE(f), y otra es
la determinación precisa de las líneas. Para separar líneas próximas existen varios métodos, y
recomendamos enfáticamente Foster (1995).
Bajas frecuencias
spectra1.exe es especialmente preciso para bajas frecuencias, es decir, cuando intentamos
determinar períodos disponiendo de observaciones que cubren sólo una fracción del mismo. Por ejemplo,
una sinusoide pura (sin ruido) es detectada satisfactoriamente teniendo únicamente 1/6 de su período, cosa
impensable en los métodos tradicionales basados en la Transformada de Fourier , en donde el
espectro resulta completamente espúreo en las bajas frecuencias (por no ortogonalidad de la base en la que se proyectan los datos
para calcular la potencia).
Por más bondades del
metodo remitirse a los papers ya mencionados.
Mas sobre series temporales puede encontrarse en
http://www.astro.psu.edu/statcodes/sc_timeser.html.
Y en la pagina de software de
AAVSO
estan los programas implementados por Foster (CLEANEST y Wavelets).
Descargar spectra1
El archivo spc.zip de 103KB contiene:
spectra1.exe (ejecutable para DOS, Windows)
spectra1.for
spectra1.html (esta página!)
Version 2
Diciembre 2002.
Utilizando la excelente libreria grafica DISLIN (Max Planck Institut fuer
Aeronomie) la version 2 de Spectra muestra en pantalla el periodograma
y lo imprime en bmp, tif, ps o pdf. Spectra2 ademas permite optar entre
usar una ventana Hanning (como en Spectra1) o una cuadrada (todos los
pesos son iguales). La ventana Hanning elimina los lobulos secundarios de
las lineas espectrales pero su ancho se duplica. La ventana cuadrada
mantiene el ancho natural de las lineas pero los lobulos secundarios
son notorios. Los datos de entrada, al igual que en Spectra1, deben
estar en datos.dat en 2 columnas.
Ejemplo:
0.1327113 22.11715
0.1612296 20.84067
0.1752147 24.70366
0.2149058 29.58211
...... .....
Se agradece reportar sugerencias y bugs a gallardo@fisica.edu.uy