Interpolação de Fourier / trigonométrica


9

fundo

Em um artigo de Epstein (1991): Ao obter valores climatológicos diários a partir de médias mensais , são dadas a formulação e um algoritmo para calcular a interpolação de Fourier para valores periódicos e com espaçamento uniforme.

No artigo, o objetivo é obter valores diários de médias mensais por interpolação.

Em resumo, supõe-se que valores diários desconhecidos possam ser representados pela soma dos componentes harmônicos: No artigo (time) é expresso em meses. t

y(t)=a0+j[ajcos(2πjt/12)+bjsin(2πjt/12)]
t

Após algumas desvios, é mostrado que os termos podem ser calculados por: Onde indica as médias mensais e o mês. YTT

a0=TYT/12aj=[(πj/12)/sin(πj/12)]×T[YTcos(2πjT/12)/6]       j=1,,5bj=[(πj/12)/sin(πj/12)]×T[YTsin(2πjT/12)/6]       j=1,,5a6=[(πj/12)/sin(πj/12)]×T[YTcos(πT)/12]b6=0
YTT

Harzallah (1995) resume essa abordagem da seguinte maneira: "A interpolação é realizada adicionando zeros aos coeficientes espectrais dos dados e executando uma transformação inversa de Fourier aos coeficientes estendidos resultantes. O método é equivalente à aplicação de um filtro retangular aos coeficientes de Fourier. . "


Questões

Meu objetivo é usar a metodologia acima para interpolação de meios semanais para obter dados diários (veja minha pergunta anterior ). Em resumo, tenho 835 dados semanais de médias de contagem (veja o exemplo de conjunto de dados na parte inferior da pergunta). Existem algumas coisas que não entendo antes de poder aplicar a abordagem descrita acima:

  1. Como as fórmulas precisariam ser alteradas para minha situação (valores semanais em vez de mensais)?
  2. Como poderia o tempo ser expressa? Eu assumi (ou com pontos de dados em geral), está correto?t / 835 t / n ntt/835t/nn
  3. Por que o autor calcula 7 termos (ou seja, )? Quantos termos eu teria que considerar?0j6
  4. Entendo que a questão provavelmente possa ser resolvida usando uma abordagem de regressão e usando as previsões de interpolação (graças a Nick). Ainda assim, algumas coisas não estão claras para mim: quantos termos de harmônicos devem ser incluídos na regressão? E que período devo levar? Como a regressão pode ser feita para garantir que as médias semanais sejam preservadas (como não quero um ajuste harmônico exato para os dados)?

Usando a abordagem de regressão (que também é explicada neste artigo ), consegui obter um ajuste harmônico exato para os dados (o no meu exemplo seria executado em , portanto, ajustei 417 termos). Como pode esta abordagem ser modificado - se possível - para alcançar a conservação dos meios semanais? Talvez aplicando fatores de correção a cada termo de regressão?1 , , 417j1,,417  

O gráfico do ajuste harmônico exato é:

Ajuste harmônico exato

EDITAR

Usando o pacote de sinais e a interp1função, eis o que consegui fazer usando o exemplo de conjunto de dados abaixo (muito obrigado a @noumenal). Eu uso q=7como temos dados semanais:

# Set up the time scale

daily.ts <- seq(from=as.Date("1995-01-01"), to=as.Date("2010-12-31"), by="day")

# Set up data frame 

ts.frame <- data.frame(daily.ts=daily.ts, wdayno=as.POSIXlt(daily.ts)$wday,
                       yearday = 1:5844,
                       no.influ.cases=NA)

# Add the data from the example dataset called "my.dat"

ts.frame$no.influ.cases[ts.frame$wdayno==3] <- my.dat$case

# Interpolation

case.interp1 <- interp1(x=ts.frame$yearday[!is.na(ts.frame$no.influ.case)],y=(ts.frame$no.influ.cases[!is.na(ts.frame$no.influ.case)]),xi=ts.frame$yearday, method = c("cubic"))

# Plot subset for better interpretation
par(bg="white", cex=1.2, las=1)
plot((ts.frame$no.influ.cases)~ts.frame$yearday, pch=20,
     col=grey(0.4),
     cex=1, las=1,xlim=c(0,400), xlab="Day", ylab="Influenza cases")
lines(case.interp1, col="steelblue", lwd=1)

Cubicinterpo

Há duas questões aqui:

  1. A curva parece se encaixar "muito boa": ela passa por todos os pontos
  2. Os meios semanais não são conservados

Conjunto de dados de exemplo

structure(list(date = structure(c(9134, 9141, 9148, 9155, 9162, 
9169, 9176, 9183, 9190, 9197, 9204, 9211, 9218, 9225, 9232, 9239, 
9246, 9253, 9260, 9267, 9274, 9281, 9288, 9295, 9302, 9309, 9316, 
9323, 9330, 9337, 9344, 9351, 9358, 9365, 9372, 9379, 9386, 9393, 
9400, 9407, 9414, 9421, 9428, 9435, 9442, 9449, 9456, 9463, 9470, 
9477, 9484, 9491, 9498, 9505, 9512, 9519, 9526, 9533, 9540, 9547, 
9554, 9561, 9568, 9575, 9582, 9589, 9596, 9603, 9610, 9617, 9624, 
9631, 9638, 9645, 9652, 9659, 9666, 9673, 9680, 9687, 9694, 9701, 
9708, 9715, 9722, 9729, 9736, 9743, 9750, 9757, 9764, 9771, 9778, 
9785, 9792, 9799, 9806, 9813, 9820, 9827, 9834, 9841, 9848, 9855, 
9862, 9869, 9876, 9883, 9890, 9897, 9904, 9911, 9918, 9925, 9932, 
9939, 9946, 9953, 9960, 9967, 9974, 9981, 9988, 9995, 10002, 
10009, 10016, 10023, 10030, 10037, 10044, 10051, 10058, 10065, 
10072, 10079, 10086, 10093, 10100, 10107, 10114, 10121, 10128, 
10135, 10142, 10149, 10156, 10163, 10170, 10177, 10184, 10191, 
10198, 10205, 10212, 10219, 10226, 10233, 10240, 10247, 10254, 
10261, 10268, 10275, 10282, 10289, 10296, 10303, 10310, 10317, 
10324, 10331, 10338, 10345, 10352, 10359, 10366, 10373, 10380, 
10387, 10394, 10401, 10408, 10415, 10422, 10429, 10436, 10443, 
10450, 10457, 10464, 10471, 10478, 10485, 10492, 10499, 10506, 
10513, 10520, 10527, 10534, 10541, 10548, 10555, 10562, 10569, 
10576, 10583, 10590, 10597, 10604, 10611, 10618, 10625, 10632, 
10639, 10646, 10653, 10660, 10667, 10674, 10681, 10688, 10695, 
10702, 10709, 10716, 10723, 10730, 10737, 10744, 10751, 10758, 
10765, 10772, 10779, 10786, 10793, 10800, 10807, 10814, 10821, 
10828, 10835, 10842, 10849, 10856, 10863, 10870, 10877, 10884, 
10891, 10898, 10905, 10912, 10919, 10926, 10933, 10940, 10947, 
10954, 10961, 10968, 10975, 10982, 10989, 10996, 11003, 11010, 
11017, 11024, 11031, 11038, 11045, 11052, 11059, 11066, 11073, 
11080, 11087, 11094, 11101, 11108, 11115, 11122, 11129, 11136, 
11143, 11150, 11157, 11164, 11171, 11178, 11185, 11192, 11199, 
11206, 11213, 11220, 11227, 11234, 11241, 11248, 11255, 11262, 
11269, 11276, 11283, 11290, 11297, 11304, 11311, 11318, 11325, 
11332, 11339, 11346, 11353, 11360, 11367, 11374, 11381, 11388, 
11395, 11402, 11409, 11416, 11423, 11430, 11437, 11444, 11451, 
11458, 11465, 11472, 11479, 11486, 11493, 11500, 11507, 11514, 
11521, 11528, 11535, 11542, 11549, 11556, 11563, 11570, 11577, 
11584, 11591, 11598, 11605, 11612, 11619, 11626, 11633, 11640, 
11647, 11654, 11661, 11668, 11675, 11682, 11689, 11696, 11703, 
11710, 11717, 11724, 11731, 11738, 11745, 11752, 11759, 11766, 
11773, 11780, 11787, 11794, 11801, 11808, 11815, 11822, 11829, 
11836, 11843, 11850, 11857, 11864, 11871, 11878, 11885, 11892, 
11899, 11906, 11913, 11920, 11927, 11934, 11941, 11948, 11955, 
11962, 11969, 11976, 11983, 11990, 11997, 12004, 12011, 12018, 
12025, 12032, 12039, 12046, 12053, 12060, 12067, 12074, 12081, 
12088, 12095, 12102, 12109, 12116, 12123, 12130, 12137, 12144, 
12151, 12158, 12165, 12172, 12179, 12186, 12193, 12200, 12207, 
12214, 12221, 12228, 12235, 12242, 12249, 12256, 12263, 12270, 
12277, 12284, 12291, 12298, 12305, 12312, 12319, 12326, 12333, 
12340, 12347, 12354, 12361, 12368, 12375, 12382, 12389, 12396, 
12403, 12410, 12417, 12424, 12431, 12438, 12445, 12452, 12459, 
12466, 12473, 12480, 12487, 12494, 12501, 12508, 12515, 12522, 
12529, 12536, 12543, 12550, 12557, 12564, 12571, 12578, 12585, 
12592, 12599, 12606, 12613, 12620, 12627, 12634, 12641, 12648, 
12655, 12662, 12669, 12676, 12683, 12690, 12697, 12704, 12711, 
12718, 12725, 12732, 12739, 12746, 12753, 12760, 12767, 12774, 
12781, 12788, 12795, 12802, 12809, 12816, 12823, 12830, 12837, 
12844, 12851, 12858, 12865, 12872, 12879, 12886, 12893, 12900, 
12907, 12914, 12921, 12928, 12935, 12942, 12949, 12956, 12963, 
12970, 12977, 12984, 12991, 12998, 13005, 13012, 13019, 13026, 
13033, 13040, 13047, 13054, 13061, 13068, 13075, 13082, 13089, 
13096, 13103, 13110, 13117, 13124, 13131, 13138, 13145, 13152, 
13159, 13166, 13173, 13180, 13187, 13194, 13201, 13208, 13215, 
13222, 13229, 13236, 13243, 13250, 13257, 13264, 13271, 13278, 
13285, 13292, 13299, 13306, 13313, 13320, 13327, 13334, 13341, 
13348, 13355, 13362, 13369, 13376, 13383, 13390, 13397, 13404, 
13411, 13418, 13425, 13432, 13439, 13446, 13453, 13460, 13467, 
13474, 13481, 13488, 13495, 13502, 13509, 13516, 13523, 13530, 
13537, 13544, 13551, 13558, 13565, 13572, 13579, 13586, 13593, 
13600, 13607, 13614, 13621, 13628, 13635, 13642, 13649, 13656, 
13663, 13670, 13677, 13684, 13691, 13698, 13705, 13712, 13719, 
13726, 13733, 13740, 13747, 13754, 13761, 13768, 13775, 13782, 
13789, 13796, 13803, 13810, 13817, 13824, 13831, 13838, 13845, 
13852, 13859, 13866, 13873, 13880, 13887, 13894, 13901, 13908, 
13915, 13922, 13929, 13936, 13943, 13950, 13957, 13964, 13971, 
13978, 13985, 13992, 13999, 14006, 14013, 14020, 14027, 14034, 
14041, 14048, 14055, 14062, 14069, 14076, 14083, 14090, 14097, 
14104, 14111, 14118, 14125, 14132, 14139, 14146, 14153, 14160, 
14167, 14174, 14181, 14188, 14195, 14202, 14209, 14216, 14223, 
14230, 14237, 14244, 14251, 14258, 14265, 14272, 14279, 14286, 
14293, 14300, 14307, 14314, 14321, 14328, 14335, 14342, 14349, 
14356, 14363, 14370, 14377, 14384, 14391, 14398, 14405, 14412, 
14419, 14426, 14433, 14440, 14447, 14454, 14461, 14468, 14475, 
14482, 14489, 14496, 14503, 14510, 14517, 14524, 14531, 14538, 
14545, 14552, 14559, 14566, 14573, 14580, 14587, 14594, 14601, 
14608, 14615, 14622, 14629, 14636, 14643, 14650, 14657, 14664, 
14671, 14678, 14685, 14692, 14699, 14706, 14713, 14720, 14727, 
14734, 14741, 14748, 14755, 14762, 14769, 14776, 14783, 14790, 
14797, 14804, 14811, 14818, 14825, 14832, 14839, 14846, 14853, 
14860, 14867, 14874, 14881, 14888, 14895, 14902, 14909, 14916, 
14923, 14930, 14937, 14944, 14951, 14958, 14965, 14972), class = "Date"), 
    cases = c(168L, 199L, 214L, 230L, 267L, 373L, 387L, 443L, 
    579L, 821L, 1229L, 1014L, 831L, 648L, 257L, 203L, 137L, 78L, 
    82L, 69L, 45L, 51L, 45L, 63L, 55L, 54L, 52L, 27L, 24L, 12L, 
    10L, 22L, 42L, 32L, 52L, 82L, 95L, 91L, 104L, 143L, 114L, 
    100L, 83L, 113L, 145L, 175L, 222L, 258L, 384L, 755L, 976L, 
    879L, 846L, 1004L, 801L, 799L, 680L, 530L, 410L, 302L, 288L, 
    234L, 269L, 245L, 240L, 176L, 188L, 128L, 96L, 59L, 63L, 
    44L, 52L, 39L, 50L, 36L, 40L, 48L, 32L, 39L, 28L, 29L, 16L, 
    20L, 25L, 25L, 48L, 57L, 76L, 117L, 107L, 91L, 90L, 83L, 
    76L, 86L, 104L, 101L, 116L, 120L, 185L, 290L, 537L, 485L, 
    561L, 1142L, 1213L, 1235L, 1085L, 1052L, 987L, 918L, 746L, 
    620L, 396L, 280L, 214L, 148L, 148L, 94L, 107L, 69L, 55L, 
    69L, 47L, 43L, 49L, 30L, 42L, 51L, 41L, 39L, 40L, 38L, 22L, 
    37L, 26L, 40L, 56L, 54L, 74L, 99L, 114L, 114L, 120L, 114L, 
    123L, 131L, 170L, 147L, 163L, 163L, 160L, 158L, 163L, 124L, 
    115L, 176L, 171L, 214L, 320L, 507L, 902L, 1190L, 1272L, 1282L, 
    1146L, 896L, 597L, 434L, 216L, 141L, 101L, 86L, 65L, 55L, 
    35L, 49L, 29L, 55L, 53L, 57L, 34L, 43L, 42L, 13L, 17L, 20L, 
    27L, 36L, 47L, 64L, 77L, 82L, 82L, 95L, 107L, 96L, 106L, 
    93L, 114L, 102L, 116L, 128L, 123L, 212L, 203L, 165L, 267L, 
    550L, 761L, 998L, 1308L, 1613L, 1704L, 1669L, 1296L, 975L, 
    600L, 337L, 259L, 145L, 91L, 70L, 79L, 63L, 58L, 51L, 53L, 
    39L, 49L, 33L, 47L, 56L, 32L, 43L, 47L, 19L, 32L, 18L, 34L, 
    39L, 63L, 57L, 55L, 69L, 76L, 103L, 99L, 108L, 131L, 113L, 
    106L, 122L, 138L, 136L, 175L, 207L, 324L, 499L, 985L, 1674L, 
    1753L, 1419L, 1105L, 821L, 466L, 274L, 180L, 143L, 82L, 101L, 
    72L, 55L, 71L, 50L, 33L, 26L, 25L, 27L, 21L, 24L, 24L, 20L, 
    18L, 18L, 25L, 23L, 13L, 10L, 16L, 9L, 12L, 16L, 25L, 31L, 
    36L, 40L, 36L, 47L, 32L, 46L, 75L, 63L, 49L, 90L, 83L, 101L, 
    78L, 79L, 98L, 131L, 83L, 122L, 179L, 334L, 544L, 656L, 718L, 
    570L, 323L, 220L, 194L, 125L, 95L, 77L, 46L, 42L, 29L, 35L, 
    21L, 29L, 16L, 14L, 19L, 15L, 19L, 18L, 21L, 10L, 14L, 7L, 
    7L, 5L, 9L, 14L, 11L, 18L, 22L, 39L, 36L, 46L, 44L, 37L, 
    30L, 39L, 37L, 45L, 71L, 59L, 57L, 80L, 68L, 88L, 72L, 74L, 
    208L, 357L, 621L, 839L, 964L, 835L, 735L, 651L, 400L, 292L, 
    198L, 85L, 64L, 41L, 40L, 23L, 18L, 14L, 22L, 9L, 19L, 8L, 
    14L, 12L, 15L, 14L, 4L, 6L, 7L, 7L, 8L, 13L, 10L, 19L, 17L, 
    20L, 22L, 40L, 37L, 45L, 34L, 26L, 35L, 67L, 49L, 77L, 82L, 
    80L, 104L, 88L, 49L, 73L, 113L, 142L, 152L, 206L, 293L, 513L, 
    657L, 919L, 930L, 793L, 603L, 323L, 202L, 112L, 55L, 31L, 
    27L, 15L, 15L, 6L, 13L, 21L, 10L, 11L, 9L, 8L, 11L, 7L, 5L, 
    1L, 4L, 7L, 2L, 6L, 12L, 14L, 21L, 29L, 32L, 26L, 22L, 44L, 
    39L, 47L, 44L, 93L, 145L, 289L, 456L, 685L, 548L, 687L, 773L, 
    575L, 355L, 248L, 179L, 129L, 122L, 103L, 72L, 72L, 36L, 
    26L, 31L, 12L, 14L, 14L, 14L, 7L, 8L, 2L, 7L, 8L, 9L, 26L, 
    10L, 13L, 13L, 5L, 5L, 3L, 6L, 1L, 10L, 6L, 7L, 17L, 12L, 
    21L, 32L, 29L, 18L, 22L, 24L, 38L, 52L, 53L, 73L, 49L, 52L, 
    70L, 77L, 95L, 135L, 163L, 303L, 473L, 823L, 1126L, 1052L, 
    794L, 459L, 314L, 252L, 111L, 55L, 35L, 14L, 30L, 21L, 16L, 
    9L, 11L, 6L, 6L, 8L, 9L, 9L, 10L, 15L, 15L, 11L, 6L, 3L, 
    8L, 4L, 7L, 7L, 13L, 10L, 23L, 24L, 36L, 25L, 34L, 37L, 46L, 
    39L, 37L, 55L, 65L, 54L, 60L, 82L, 55L, 53L, 61L, 52L, 75L, 
    92L, 121L, 170L, 199L, 231L, 259L, 331L, 357L, 262L, 154L, 
    77L, 34L, 41L, 21L, 17L, 16L, 7L, 15L, 11L, 7L, 5L, 6L, 13L, 
    7L, 6L, 8L, 7L, 1L, 11L, 9L, 3L, 9L, 9L, 8L, 15L, 19L, 16L, 
    10L, 12L, 26L, 35L, 35L, 41L, 34L, 30L, 36L, 43L, 23L, 55L, 
    107L, 141L, 217L, 381L, 736L, 782L, 663L, 398L, 182L, 137L, 
    79L, 28L, 26L, 16L, 14L, 8L, 4L, 4L, 6L, 6L, 11L, 4L, 5L, 
    7L, 7L, 6L, 8L, 2L, 3L, 3L, 1L, 1L, 3L, 3L, 2L, 8L, 8L, 11L, 
    10L, 11L, 8L, 24L, 25L, 25L, 33L, 36L, 51L, 61L, 74L, 92L, 
    89L, 123L, 402L, 602L, 524L, 494L, 406L, 344L, 329L, 225L, 
    136L, 136L, 84L, 55L, 55L, 42L, 19L, 28L, 8L, 7L, 2L, 7L, 
    6L, 4L, 3L, 5L, 3L, 3L, 0L, 1L, 2L, 3L, 2L, 1L, 2L, 2L, 9L, 
    4L, 9L, 10L, 18L, 15L, 13L, 12L, 10L, 19L, 15L, 22L, 23L, 
    34L, 43L, 53L, 47L, 57L, 328L, 552L, 787L, 736L, 578L, 374L, 
    228L, 161L, 121L, 96L, 58L, 50L, 37L, 14L, 9L, 6L, 15L, 12L, 
    9L, 1L, 6L, 4L, 7L, 7L, 3L, 6L, 9L, 15L, 22L, 28L, 34L, 62L, 
    54L, 75L, 65L, 58L, 57L, 60L, 37L, 47L, 60L, 89L, 90L, 193L, 
    364L, 553L, 543L, 676L, 550L, 403L, 252L, 140L, 125L, 99L, 
    63L, 63L, 76L, 85L, 68L, 67L, 38L, 25L, 24L, 11L, 9L, 9L, 
    4L, 8L, 4L, 6L, 5L, 2L, 6L, 4L, 4L, 1L, 5L, 4L, 1L, 2L, 2L, 
    2L, 2L, 3L, 4L, 4L, 7L, 5L, 2L, 10L, 11L, 17L, 11L, 16L, 
    15L, 11L, 12L, 21L, 20L, 25L, 46L, 51L, 90L, 123L)), .Names = c("date", 
"cases"), row.names = c(NA, -835L), class = "data.frame")

2
A literatura mais antiga costuma se deliciar com fórmulas de complexidade rococó para esse tipo de coisa. Na prática, eu me inclinaria para trás para pensar nisso como um problema de regressão, de modo que os valores interpolados sejam apenas os valores previstos a partir da regressão. Veja, por exemplo, stats.stackexchange.com/questions/60500/… O princípio principal é que o ciclo principal se repita uma vez por ano.
Nick Cox

11
Na prática, você deseja um ajuste muito próximo aos dados porque deseja uma suavização local. Isso pode precisar de vários pares de Fourier, mas retornos decrescentes são definidos muito rapidamente, para que cada novo par de termos logo adicione muito pouco. Você apenas tem que chupar e ver. Traçar tudo torna mais claro.
Nick Cox

11
Eu tentei isso brevemente com seus dados (usando Stata, não R). Resumidamente, embora exista uma sazonalidade acentuada em seus dados, não é regular o suficiente para que essa abordagem funcione bem: por exemplo, não apenas o tempo dos picos varia muito, mas também o número de casos no pico; em alguns anos, mas nem todos, há um pico secundário no final do ano civil. Além disso, a sazonalidade é composta por acentuada tendência de longo prazo. Meu palpite é que, para obter casos diários, você deve recorrer a alguma interpolação ou suavização estritamente local da série semanal expandida sete vezes.
Nick Cox

11
Na engenharia de sistemas de controle, o critério Nyquist é usado como piso para a taxa de amostragem. Diz amostra com mais que o dobro da frequência mais alta nos seus dados. Na prática, é mais convencional amostrar acima de 5x a frequência mais alta que você espera resolver. Se sua entrada for um dado semanal, Nyquist sugere que a maior frequência resolvível é da ordem de 2 semanas. Seria melhor se você tivesse outras estatísticas semanais para informar a amostragem e reforçar a média. en.wikipedia.org/wiki/Nyquist-Shannon_sampling_theorem
EngrStudent

+1 Excelente pergunta! Você sabe por acaso como detectar sinal no ruído (de preferência em R), desde que você tenha várias distribuições, onde o ruído é um gaussiano e o sinal é um gaussiano e outra parte? Eu olhei para muitos pacotes e funções (sinal, fft () etc.) e até joguei com dados, tentando aplicar a transformação de Fourier e até medidas de entropia, mas sem sucesso até agora. Eu estava tentando responder a uma pergunta (não a minha) e aprender algo novo ao longo do caminho, pois acho o tópico bastante interessante.
Aleksandr Blekh 31/01

Respostas:


4

Não sou especialista em transformadas de Fourier, mas ...

O intervalo total da amostra de Epstein foi de 24 meses, com uma taxa de amostragem mensal: 1/12 anos. Seu intervalo de amostra é de 835 semanas. Se seu objetivo é estimar a média de um ano com dados de ~ 16 anos com base em dados diários, você precisará de uma taxa de amostragem de 1/365 anos. Portanto, substitua 52 por 12, mas primeiro padronize as unidades e expanda suas 835 semanas para 835 * 7 = 5845 dias. No entanto, se você tiver apenas pontos de dados semanais, sugiro uma taxa de amostra de 52 com profundidade de bits de 16 ou 17 para análise de pico, alternativamente 32 ou 33 para comparação par / ímpar. Portanto, as opções de entrada padrão incluem: 1) usar as médias semanais (ou desvio absoluto médio, MAD ou algo nesse sentido) ou 2) usar os valores diários, que fornecem uma resolução mais alta.

Liebman et al. escolheu o ponto de corte jmax = 2. Portanto, a Figura 3. contém menos parciais e, portanto, é mais simétrica na parte superior do seno em comparação com a Figura 2. (Uma única parcial na frequência base resultaria em uma onda senoidal pura. ) Se Epstein tivesse selecionado uma resolução mais alta (por exemplo, jmax = 12), a transformação provavelmente produziria apenas pequenas flutuações nos componentes adicionais, ou talvez ele não tivesse o poder computacional.

Através da inspeção visual de seus dados, você parece ter 16 a 17 picos. Eu sugiro que você defina jmax ou a "profundidade de bits" para 6, 11, 16 ou 17 (veja a figura) e compare as saídas. Quanto mais altos os picos, mais eles contribuem para a forma de onda complexa original. Assim, assumindo uma resolução de 17 bandas ou profundidade de bits, a 17ª parcial contribui minimamente para o padrão de forma de onda original em comparação com o sexto pico. No entanto, com uma resolução de 34 bandas, você detectaria uma diferença entre picos pares e ímpares, conforme sugerido pelos vales razoavelmente constantes. A profundidade dos bits depende da sua pergunta de pesquisa, se você está interessado apenas nos picos ou nos picos e vales, mas também em como exatamente deseja aproximar a série original.

A análise de Fourier reduz seus pontos de dados. Se você inverter a função a uma certa profundidade de bits usando uma transformação de Fourier, provavelmente poderá verificar se as novas estimativas médias correspondem às suas médias originais. Portanto, para responder à sua quarta pergunta: os parâmetros de regressão que você mencionou dependem da sensibilidade e resolução necessárias. Se você não deseja um ajuste exato, basta inserir os meios semanais na transformação. No entanto, cuidado com a menor profundidade de bits também reduz os dados. Por exemplo, observe como a sobreposição harmônica de Epstein na análise de Lieberman e colegas perde o ponto médio da função step, com uma curva inclinada levemente para a direita (ou seja, a temperatura está muito alta), em dezembro na Figura 3.


Parâmetros de Liebman e dos colegas:

  • Profundidade de bits: 2

Parâmetros de Epstein:

  • Taxa da amostra: 12 [todos os meses]
  • Intervalo da amostra: 24 meses
  • Profundidade de bits: 6

Seus parâmetros:

  • Taxa de amostragem: 365 [todos os dias]

  • Intervalo de amostra: 5845 dias

Abordagem exata da profundidade de bits

Ajuste exato com base na inspeção visual. (Se você tem poder, basta ver o que acontece em comparação com profundidades de bits mais baixas.)

  • Espectro total (picos): 17
  • Espectro total (par / ímpar): 34

Abordagem de profundidade de bits variável

Provavelmente é isso que você deseja fazer:

  • Comparar apenas os picos: 6, 11, 16, 17
  • Comparar par / ímpar: 12, 22, 32, 34
  • Ressintetizar e comparar meios

Essa abordagem produziria algo semelhante à comparação das figuras em Epstein se você inverter novamente a transformação, ou seja, sintetizar as parciais em uma aproximação da série temporal original. Você também pode comparar os pontos discretos das curvas ressintetizadas com os valores médios, talvez até testar diferenças significativas para indicar a sensibilidade da sua escolha de profundidade de bits.


ATUALIZAÇÃO 1:

Profundidade de bits

Um bit - abreviação de dígito binário - é 0 ou 1. Os bits 010101 descreveriam uma onda quadrada. A profundidade do bit é 1 bit. Para descrever uma onda de serra, você precisaria de mais bits: 0123210. Quanto mais complexa uma onda obtiver, mais bits você precisará:

Essa é uma explicação um tanto simplificada, mas quanto mais complexa é uma série temporal, mais bits são necessários para modelá-la. Na verdade, "1" é um componente de onda senoidal e não uma onda quadrada (uma onda quadrada é mais parecida com 3 2 1 0 - veja a figura em anexo). 0 bits seria uma linha plana. As informações são perdidas com a redução da profundidade de bits. Por exemplo, o áudio com qualidade de CD geralmente é de 16 bits, mas o áudio com qualidade de telefone fixo geralmente fica em torno de 8 bits.

Leia esta imagem da esquerda para a direita, concentrando-se nos gráficos:

FFT

Você acabou de concluir uma análise do espectro de potência (embora em alta resolução na sua figura). Seu próximo objetivo seria descobrir: Quantos componentes eu preciso no espectro de potência para capturar com precisão os meios da série temporal?

ATUALIZAÇÃO 2


Para filtrar ou não para filtrar

Não tenho muita certeza de como você introduziria a restrição na regressão, pois estou familiarizado apenas com restrições de intervalo, mas talvez o DSP seja sua solução. Isto é o que eu imaginei até agora:

  • Etapa 1. Divida a série em componentes do seio através da função de Fourier no conjunto de dados completo (em dias)

  • Etapa 2. Recrie a série temporal por meio de uma transformação inversa de Fourier, com a restrição média adicional acoplada aos dados originais: os desvios das interpolações da média original devem se anular (Harzallah, 1995).

Meu melhor palpite é que você teria que introduzir a auto-regressão se eu entender Harzallah (1995, Fig. 2) corretamente. Então isso provavelmente corresponderia a um filtro de resposta infinita (IIR)?

IIR http://paulbourke.net/misc Miscellaneous/ar/

Em suma:

  1. Derivar meios de dados brutos
  2. Dados brutos da transformação de Fourier
  3. Dados transformados de Transformação Inversa de Fourier.
  4. Filtre o resultado usando IIR

Talvez você possa usar um filtro IIR sem passar pela análise de Fourier? A única vantagem da análise de Fourier, como eu a vejo, é isolar e determinar quais padrões são influentes e com que frequência eles ocorrem novamente (ou seja, oscilam). Você pode optar por filtrar os que contribuem menos, por exemplo, usando um filtro de entalhe estreito no pico de menor contribuição (ou filtro com base em seus próprios critérios). Para iniciantes, você pode filtrar os vales ímpares menos contribuintes que parecem mais com ruído no "sinal". O ruído é caracterizado por muito poucos casos e sem padrão. Um filtro de pente em componentes de frequência ímpares pode reduzir o ruído - a menos que você encontre um padrão lá.

Aqui estão algumas opções arbitrárias - apenas para fins explicativos: Você pode ver o barulho nos vales?

Ops - Existe uma função R para isso !?

Ao procurar um filtro IIR, descobri que as funções R interpolam no pacote Signal. Esqueça tudo o que eu disse até agora. As interpolações devem funcionar como as de Harzallah: http://cran.r-project.org/web/packages/signal/signal.pdf

Brinque com as funções. Deve fazer o truque.


ATUALIZAÇÃO 3

interp1 não interp

case.interp1 <- interp1(x=(ts.frame$no.influ.cases[!is.na(ts.frame$no.influ.case)]),y=ts.frame$yearday[!is.na(ts.frame$no.influ.case)],xi=mean(WEEKLYMEANSTABLE),method = c("cubic"))

Defina xi como a média semanal original.


Muito obrigado por esta resposta! Meu objetivo de pesquisa é simples: tenho médias semanais e quero obter estimativas diárias e a média das estimativas diárias (interpoladas) em uma semana deve ser igual à média semanal (ou seja, o ponto de dados original). Você acha que isso é possível? Além disso, não entendo o que significa "profundidade de bits" e "análise de pico" (não tenho nenhuma experiência com transformações de Fourier).
COOLSerdash

11
@COOLSerdash ver minha atualização. Sim, é possível! Mas você precisaria descobrir a melhor maneira de comparar as médias estimadas da série temporal ressintetizada com as médias originais da série temporal original.
Noumenal

(Btw: +1 amanhã, não posso mais votar hoje). Muito obrigado pela atualização, agora está mais claro. Pensei no seguinte procedimento: 1) ajuste uma função de fourier aos meios semanais por regressão, 2) use as previsões da regressão para "preencher" as lacunas entre os valores semanais (ou seja, para obter os valores diários) 3) para a cada semana, calcule a média de todos os valores diários e essa média deve ser igual ao valor original. No artigo, Epstein usou algum tipo de fator de "correção" para forçar a função a ter as propriedades desejadas, mas ainda não tenho certeza de como fazer isso com a regressão.
amigos estão dizendo sobre lucas

@COOLSerdash Ver atualização 2! Pule para o parágrafo final.
Noumenal

Absolutamente fantástico! Muito obrigado pela pesquisa. Observe que eu consegui implementar a abordagem de Harzallah usando splines (lineares e cúbicos). Então eu acho que eu precisaria interp. Eu editei minha pergunta. Muito obrigado novamente.
amigos estão dizendo sobre lucas
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.