Dados

library(astsa)
n = length(star)
par(mfrow=c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0))
plot(star, ylab="Magnitude da Estrela", xlab="Dias")
grid()

Periodograma

Per = Mod(fft(star-mean(star)))^2/n
u = which.max(Per[1:50]) # 22 freq=21/600=.035 ciclos/dia
uu = which.max(Per[1:50][-u]) # 25 freq=25/600=.041 ciclos/dia
Freq = (1:n-1)/n
1/Freq[22]; 1/Freq[26] # periodo = dias/ciclo
## [1] 28.57143
## [1] 24

Encontrandoos valores extremos

plot(Freq[1:50], Per[1:50], type='h', lwd=3, ylab="Periodograma", xlab="Frequência")
grid()
text(.05, 7000, "ciclo de 24 dias"); text(.027, 9000, "ciclo de 29 dias")

### outra maneira de encontrar os dois picos é ordenar Per
y = cbind(1:50, Freq[1:50], Per[1:50]); y[order(y[,3]),]
##       [,1]        [,2]         [,3]
##  [1,]    1 0.000000000 9.443191e-29
##  [2,]    2 0.001666667 4.507982e-01
##  [3,]    3 0.003333333 6.383881e-01
##  [4,]    4 0.005000000 6.520257e-01
##  [5,]   42 0.068333333 8.665436e-01
##  [6,]    5 0.006666667 9.562050e-01
##  [7,]    6 0.008333333 1.102173e+00
##  [8,]    7 0.010000000 1.571938e+00
##  [9,]    8 0.011666667 1.919698e+00
## [10,]    9 0.013333333 2.660354e+00
## [11,]   50 0.081666667 2.716201e+00
## [12,]   49 0.080000000 2.950864e+00
## [13,]   48 0.078333333 3.131141e+00
## [14,]   10 0.015000000 3.360490e+00
## [15,]   41 0.066666667 3.434992e+00
## [16,]   47 0.076666667 3.436210e+00
## [17,]   46 0.075000000 3.727665e+00
## [18,]   45 0.073333333 4.217734e+00
## [19,]   40 0.065000000 4.333342e+00
## [20,]   11 0.016666667 4.602068e+00
## [21,]   44 0.071666667 4.961120e+00
## [22,]   39 0.063333333 5.104726e+00
## [23,]   38 0.061666667 5.787418e+00
## [24,]   12 0.018333333 6.000647e+00
## [25,]   37 0.060000000 6.609014e+00
## [26,]   36 0.058333333 7.479905e+00
## [27,]   43 0.070000000 7.759837e+00
## [28,]   13 0.020000000 8.299324e+00
## [29,]   35 0.056666667 8.579677e+00
## [30,]   34 0.055000000 9.855970e+00
## [31,]   14 0.021666667 1.130510e+01
## [32,]   33 0.053333333 1.149882e+01
## [33,]   32 0.051666667 1.354988e+01
## [34,]   15 0.023333333 1.626158e+01
## [35,]   31 0.050000000 1.627495e+01
## [36,]   30 0.048333333 1.994590e+01
## [37,]   16 0.025000000 2.384928e+01
## [38,]   29 0.046666667 2.512683e+01
## [39,]   28 0.045000000 3.282879e+01
## [40,]   17 0.026666667 3.760709e+01
## [41,]   27 0.043333333 4.499063e+01
## [42,]   18 0.028333333 6.410010e+01
## [43,]   25 0.040000000 1.085316e+02
## [44,]   19 0.030000000 1.276647e+02
## [45,]   24 0.038333333 2.152119e+02
## [46,]   20 0.031666667 3.395142e+02
## [47,]   23 0.036666667 6.436224e+02
## [48,]   21 0.033333333 2.136963e+03
## [49,]   26 0.041666667 9.011002e+03
## [50,]   22 0.035000000 1.102080e+04

Representação aproximada

a.soma = 0; for(t in 1:n) {a.soma = a.soma + star[t]*cos(2*pi*t*20/n)}
a.20 = (2/n)*a.soma
b.soma = 0; for(t in 1:n) {b.soma = b.soma + star[t]*sin(2*pi*t*20/n)}
b.20 = (2/n)*b.soma
a.soma = 0; for(t in 1:n) {a.soma = a.soma + star[t]*cos(2*pi*t*21/n)}
a.21 = (2/n)*a.soma
b.soma = 0; for(t in 1:n) {b.soma = b.soma + star[t]*sin(2*pi*t*21/n)}
b.21 = (2/n)*b.soma
a.soma = 0; for(t in 1:n) {a.soma = a.soma + star[t]*cos(2*pi*t*22/n)}
a.22 = (2/n)*a.soma
b.soma = 0; for(t in 1:n) {b.soma = b.soma + star[t]*sin(2*pi*t*22/n)}
b.22 = (2/n)*b.soma
a.soma = 0; for(t in 1:n) {a.soma = a.soma + star[t]*cos(2*pi*t*23/n)}
a.23 = (2/n)*a.soma
b.soma = 0; for(t in 1:n) {b.soma = b.soma + star[t]*sin(2*pi*t*23/n)}
b.23 = (2/n)*b.soma
a.soma = 0; for(t in 1:n) {a.soma = a.soma + star[t]*cos(2*pi*t*24/n)}
a.24 = (2/n)*a.soma
b.soma = 0; for(t in 1:n) {b.soma = b.soma + star[t]*sin(2*pi*t*24/n)}
b.24 = (2/n)*b.soma
a.soma = 0; for(t in 1:n) {a.soma = a.soma + star[t]*cos(2*pi*t*26/n)}
a.26 = (2/n)*a.soma
b.soma = 0; for(t in 1:n) {b.soma = b.soma + star[t]*sin(2*pi*t*26/n)}
b.26 = (2/n)*b.soma

… com dois coeficientes

star_aprox = rep(0,n)
for(t in 1:n) {star_aprox[t] = mean(star)+
  a.22*cos(2*pi*t*22/n)+b.22*sin(2*pi*t*22/n)+
  a.26*cos(2*pi*t*26/n)+b.26*sin(2*pi*t*26/n)}
par(mfrow=c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0))
plot(star, ylab="Magnitude da Estrela", xlab="Dias")
lines(star_aprox, col = "blue")
grid()

… com três coeficientes

star_aprox = rep(0,n)
for(t in 1:n) {star_aprox[t] = mean(star)+
  a.21*cos(2*pi*t*21/n)+b.21*sin(2*pi*t*21/n)+
  a.22*cos(2*pi*t*22/n)+b.22*sin(2*pi*t*22/n)+
  a.26*cos(2*pi*t*26/n)+b.26*sin(2*pi*t*26/n)}
par(mfrow=c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0))
plot(star, ylab="Magnitude da Estrela", xlab="Dias")
lines(star_aprox, col = "blue")
grid()

… com quatro coeficientes

star_aprox = rep(0,n)
for(t in 1:n) {star_aprox[t] = mean(star)+
  a.20*cos(2*pi*t*20/n)+b.20*sin(2*pi*t*20/n)+
  a.21*cos(2*pi*t*21/n)+b.21*sin(2*pi*t*21/n)+
  a.22*cos(2*pi*t*22/n)+b.22*sin(2*pi*t*22/n)+
  a.26*cos(2*pi*t*26/n)+b.26*sin(2*pi*t*26/n)}
par(mfrow=c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0))
plot(star, ylab="Magnitude da Estrela", xlab="Dias")
lines(star_aprox, col = "blue")
grid()

… com cinco coeficientes

star_aprox = rep(0,n)
for(t in 1:n) {star_aprox[t] = mean(star)+
  a.20*cos(2*pi*t*20/n)+b.20*sin(2*pi*t*20/n)+
  a.21*cos(2*pi*t*21/n)+b.21*sin(2*pi*t*21/n)+
  a.22*cos(2*pi*t*22/n)+b.22*sin(2*pi*t*22/n)+
  a.23*cos(2*pi*t*23/n)+b.23*sin(2*pi*t*23/n)+
  a.26*cos(2*pi*t*26/n)+b.26*sin(2*pi*t*26/n)}
par(mfrow=c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0))
plot(star, ylab="Magnitude da Estrela", xlab="Dias")
lines(star_aprox, col = "blue")
grid()

… com seis coeficientes

star_aprox = rep(0,n)
for(t in 1:n) {star_aprox[t] = mean(star)+
  a.20*cos(2*pi*t*20/n)+b.20*sin(2*pi*t*20/n)+
  a.21*cos(2*pi*t*21/n)+b.21*sin(2*pi*t*21/n)+
  a.22*cos(2*pi*t*22/n)+b.22*sin(2*pi*t*22/n)+
  a.23*cos(2*pi*t*23/n)+b.23*sin(2*pi*t*23/n)+
  a.24*cos(2*pi*t*24/n)+b.24*sin(2*pi*t*24/n)+
  a.26*cos(2*pi*t*26/n)+b.26*sin(2*pi*t*26/n)}
par(mfrow=c(1,1), mar=c(3,3,1,1), mgp=c(1.6,.6,0))
plot(star, ylab="Magnitude da Estrela", xlab="Dias")
lines(star_aprox, col = "blue")
grid()