Interpolazione di Fourier / trigonometrica


9

sfondo

In un articolo di Epstein (1991): sull'ottenimento di valori climatici giornalieri da medie mensili , vengono forniti la formulazione e un algoritmo per il calcolo dell'interpolazione di Fourier per valori periodici e spaziati.

Nel documento, l'obiettivo è quello di ottenere valori giornalieri da mezzi mensili per interpolazione.

In breve, si presume che i valori giornalieri sconosciuti possano essere rappresentati dalla somma dei componenti armonici: Nel documento (tempo) è espresso in mesi. t

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

Dopo un po 'di derviazione, viene mostrato che i termini possono essere calcolati da: Dove indica la media mensile e il mese. 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) riassume questo approccio nel modo seguente: "L'interpolazione viene eseguita aggiungendo zeri ai coefficienti spettrali dei dati ed eseguendo una trasformata inversa di Fourier ai coefficienti estesi risultanti. Il metodo equivale ad applicare un filtro rettangolare ai coefficienti di Fourier ".


Domande

Il mio obiettivo è quello di utilizzare la metodologia di cui sopra per l'interpolazione di mezzi settimanali per ottenere dati giornalieri (vedi la mia domanda precedente ). In breve, ho 835 dati settimanali di conteggio dei dati (vedi il set di dati di esempio in fondo alla domanda). Ci sono alcune cose che non capisco prima di poter applicare l'approccio sopra descritto:

  1. Come dovrebbero essere cambiate le formule per la mia situazione (valori settimanali anziché mensili)?
  2. Come si può esprimere il tempo ? Ho assunto (o con punti dati in generale), è corretto?t / 835 t / n ntt/835t/nn
  3. Perché l'autore calcola 7 termini (ovvero )? Quanti termini dovrei considerare?0j6
  4. Capisco che la domanda può probabilmente essere risolta utilizzando un approccio di regressione e utilizzando le previsioni per l'interpolazione (grazie a Nick). Tuttavia, alcune cose non sono chiare per me: quanti termini di armoniche dovrebbero essere inclusi nella regressione? E che periodo dovrei prendere? Come si può fare la regressione per garantire che i mezzi settimanali siano preservati (dato che non voglio un adattamento armonico esatto ai dati)?

Usando l' approccio di regressione (che è anche spiegato in questo documento ), sono riuscito a ottenere un adattamento armonico esatto ai dati (la nel mio esempio avrebbe attraversato , quindi ho inserito 417 termini). Come può essere modificato questo approccio - se possibile - per ottenere la conservazione dei mezzi settimanali? Forse applicando i fattori di correzione a ciascun termine di regressione?1 , , 417j1,,417  

La trama dell'esatta misura armonica è:

Vestibilità armonica esatta

MODIFICARE

Usando il pacchetto di segnali e la interp1funzione, ecco cosa sono riuscito a fare usando il set di dati di esempio dal basso (molte grazie a @noumenal). Uso q=7come abbiamo dati settimanali:

# 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

Ci sono due problemi qui:

  1. La curva sembra adattarsi "troppo bene": attraversa ogni punto
  2. I mezzi settimanali non sono conservati

Set di dati di esempio

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
La letteratura precedente spesso si diletta nelle formule della complessità rococò per questo tipo di cose. In pratica, mi sporgerei all'indietro nel considerare questo come un problema di regressione, in modo che i valori interpolati siano solo i valori previsti dalla regressione. Vedi ad esempio stats.stackexchange.com/questions/60500/… Il principio chiave è che il ciclo principale si ripete una volta all'anno.
Nick Cox,

1
In pratica, vuoi un adattamento molto vicino ai dati perché vuoi un livellamento locale. Ciò potrebbe richiedere diverse coppie di Fourier, ma i rendimenti decrescenti si attivano molto rapidamente, quindi ogni nuova coppia di termini aggiunge presto molto poco. Devi solo succhiarlo e vedere. Tracciare tutto lo rende più chiaro.
Nick Cox,

1
L'ho provato brevemente con i tuoi dati (usando Stata, non R). In breve, sebbene vi sia una marcata stagionalità nei dati, non è abbastanza regolare per far funzionare bene questo approccio: ad esempio, non solo i tempi dei picchi variano molto, ma anche il numero di casi al picco; in alcuni anni, ma non tutti, c'è un picco secondario alla fine dell'anno civile. Inoltre, la stagionalità è aggravata da una marcata tendenza a lungo termine. La mia ipotesi è che per ottenere casi quotidiani dovresti ricorrere a qualche interpolazione o livellamento strettamente locale della serie settimanale espansa di sette volte.
Nick Cox,

1
Nell'ingegneria dei sistemi di controllo il criterio di Nyquist viene utilizzato come base per la frequenza di campionamento. Dice il campione con una frequenza maggiore del doppio rispetto ai dati. In pratica è più convenzionale campionare oltre 5 volte la frequenza più alta che speri di risolvere. Se i dati immessi sono dati settimanali, Nyquist suggerisce che la frequenza massima risolvibile è dell'ordine di 2 settimane. Potrebbe essere meglio se tu avessi altre statistiche settimanali per informare il campionamento e sostenere la media. en.wikipedia.org/wiki/Nyquist-Shannon_sampling_theorem
EngrStudent

+1 Ottima domanda! Sai per caso come rilevare il segnale nel rumore (preferibilmente in R), a condizione che tu abbia un numero di distribuzioni, dove il rumore è un gaussiano e il segnale è un gaussiano più un'altra parte? Ho esaminato molti pacchetti e funzioni (signal, fft (), ecc.) E ho persino giocato con i dati, cercando di applicare la trasformazione di Fourier e persino misure di entropia, ma finora senza risultati. Stavo cercando di rispondere a una domanda (non alla mia) e di imparare qualcosa di nuovo lungo la strada, poiché trovo l'argomento piuttosto interessante.
Aleksandr Blekh,

Risposte:


4

Non sono un esperto di trasformazioni di Fourier, ma ...

L'intervallo di campionamento totale di Epstein era di 24 mesi con una frequenza di campionamento mensile: 1/12 anni. L'intervallo di campionamento è di 835 settimane. Se il tuo obiettivo è stimare la media per un anno con dati di ~ 16 anni basati su dati giornalieri, hai bisogno di una frequenza di campionamento di 1/365 anni. Quindi sostituisci 52 con 12, ma prima standardizza le unità ed espandi le tue 835 settimane a 835 * 7 = 5845 giorni. Tuttavia, se si hanno solo punti di dati settimanali, suggerisco una frequenza di campionamento di 52 con una profondità di bit di 16 o 17 per l'analisi del picco, in alternativa 32 o 33 per il confronto pari / dispari. Quindi le opzioni di input predefinite includono: 1) per utilizzare la media settimanale (o la deviazione assoluta mediana, MAD o qualcosa del genere) o 2) per utilizzare i valori giornalieri, che forniscono una risoluzione più elevata.

Liebman et al. ha scelto il punto di taglio jmax = 2. Quindi, la figura 3. contiene meno parziali ed è quindi più simmetrica nella parte superiore del seno rispetto alla figura 2. (Un singolo parziale alla frequenza di base provocherebbe un'onda sinusoidale pura. ) Se Epstein avesse selezionato una risoluzione più elevata (ad es. Jmax = 12), la trasformazione avrebbe presumibilmente solo lievi fluttuazioni con i componenti aggiuntivi, o forse gli mancava la potenza computazionale.

Attraverso l'ispezione visiva dei tuoi dati sembra che tu abbia 16-17 picchi. Vorrei suggerire di impostare jmax o la "profondità di bit" su 6, 11, 16 o 17 (vedere la figura) e confrontare le uscite. Più alte sono le cime, più contribuiscono alla forma d'onda complessa originale. Quindi, ipotizzando una risoluzione a 17 bande o una profondità in bit, la diciassettesima parziale contribuisce minimamente al modello di forma d'onda originale rispetto al sesto picco. Tuttavia, con una risoluzione di banda di 34 rileveresti una differenza tra picchi pari e dispari, come suggerito dalle valli abbastanza costanti. La profondità del bit dipende dalla domanda di ricerca, se si è interessati solo ai picchi o sia ai picchi che alle valli, ma anche a come esattamente si desidera approssimare la serie originale.

L'analisi di Fourier riduce i punti dati. Se dovessi invertire la funzione a una certa profondità di bit usando una trasformata di Fourier, probabilmente potresti verificare se le nuove stime medie corrispondono alla tua media originale. Quindi, per rispondere alla tua quarta domanda: i parametri di regressione menzionati dipendono dalla sensibilità e dalla risoluzione richieste. Se non desideri un adattamento esatto, inserisci semplicemente i mezzi settimanali nella trasformazione. Tuttavia, attenzione che una profondità di bit inferiore riduce anche i dati. Ad esempio, si noti come la sovrapposizione armonica di Epstein su Lieberman e l'analisi dei colleghi non raggiunga il punto centrale della funzione di passaggio, con una curva inclinata leggermente a destra (cioè la temperatura è troppo alta), a dicembre in Figura 3.


Parametri di Liebman e colleghi:

  • Profondità bit: 2

Parametri di Epstein:

  • Frequenza di campionamento: 12 [ogni mese]
  • Gamma del campione: 24 mesi
  • Profondità bit: 6

I tuoi parametri:

  • Frequenza di campionamento: 365 [ogni giorno]

  • Gamma del campione: 5845 giorni

Esatto approccio alla profondità di bit

Vestibilità esatta basata sull'ispezione visiva. (Se hai la potenza, vedi cosa succede rispetto alle profondità di bit inferiori.)

  • Spettro completo (picchi): 17
  • Spettro completo (pari / dispari): 34

Approccio a profondità di bit variabile

Questo è probabilmente ciò che desideri fare:

  • Confronta solo picchi: 6, 11, 16, 17
  • Confronta pari / dispari: 12, 22, 32, 34
  • Risincronizza e confronta i mezzi

Questo approccio produrrebbe qualcosa di simile al confronto di Figure in Epstein se si inverte nuovamente la trasformazione, cioè sintetizzi i parziali in un'approssimazione delle serie storiche originali. Potresti anche confrontare i punti discreti delle curve resintetizzate con i valori medi, forse anche testare differenze significative per indicare la sensibilità della tua scelta della profondità di bit.


AGGIORNAMENTO 1:

Profondità di bit

Un bit - abbreviazione di cifra binaria - è 0 o 1. I bit 010101 descrivono un'onda quadra. La profondità di bit è 1 bit. Per descrivere un'onda di sega sono necessari più bit: 0123210. Più un'onda è complessa, più bit sono necessari:

Questa è una spiegazione in qualche modo semplificata, ma più complessa è una serie temporale, più bit sono necessari per modellarla. In realtà, "1" è un componente sinusoidale e non un'onda quadra (un'onda quadra è più simile a 3 2 1 0 - vedere la figura allegata). 0 bit sarebbe una linea piatta. Le informazioni si perdono con la riduzione della profondità di bit. Ad esempio, l'audio di qualità CD è generalmente di 16 bit, ma l'audio di qualità del telefono fisso è spesso di circa 8 bit.

Si prega di leggere questa immagine da sinistra a destra, concentrandosi sui grafici:

FFT

In realtà hai appena completato un'analisi dello spettro di potenza (sebbene ad alta risoluzione nella tua figura). Il tuo prossimo obiettivo sarebbe capire: di quanti componenti ho bisogno nello spettro di potenza per catturare accuratamente i mezzi delle serie temporali?

AGGIORNAMENTO 2


Filtrare o non filtrare

Non sono del tutto sicuro di come introdurre il vincolo nella regressione poiché ho familiarità solo con i vincoli di intervallo, ma forse DSP è la soluzione. Questo è quello che ho immaginato finora:

  • Passaggio 1. Suddividere la serie in componenti sinusali tramite la funzione di Fourier sul set di dati completo (in giorni)

  • Passaggio 2. Ricreare le serie storiche attraverso una trasformata inversa di Fourier, con il vincolo medio aggiuntivo accoppiato ai dati originali: le deviazioni delle interpolazioni dai mezzi originali dovrebbero annullarsi a vicenda (Harzallah, 1995).

La mia ipotesi migliore è che dovresti introdurre l'autoregressione se capisco correttamente Harzallah (1995, Fig. 2). Quindi ciò corrisponderebbe probabilmente a un filtro a risposta infinita (IIR)?

IIR http://paulbourke.net/miscellaneous/ar/

In sintesi:

  1. Derivare significa dai dati grezzi
  2. Trasformata di Fourier Dati grezzi
  3. Trasformata inversa di Fourier Trasformato i dati.
  4. Filtra il risultato usando IIR

Forse potresti usare un filtro IIR senza passare attraverso l'analisi di Fourier? L'unico vantaggio dell'analisi di Fourier per come la vedo io è isolare e determinare quali schemi sono influenti e con quale frequenza si ripetono (cioè oscillano). Potresti quindi decidere di filtrare quelli che contribuiscono di meno, ad esempio utilizzando un filtro a tacca stretta al picco meno contributivo (o filtro basato sui tuoi criteri). Per cominciare, potresti filtrare le valli dispari che contribuiscono meno che appaiono più come rumore nel "segnale". Il rumore è caratterizzato da pochissimi casi e nessun motivo. Un filtro a pettine con componenti a frequenza dispari potrebbe ridurre il rumore, a meno che non si trovi uno schema lì.

Ecco alcuni binning arbitrari, a solo scopo esplicativo: Riesci a vedere il rumore nelle valli?

Oops - C'è una funzione R per quello !?

Quando cerco un filtro IIR mi capita di scoprire le funzioni R interpolate nel pacchetto Signal. Dimentica tutto ciò che ho detto fino a questo punto. Le interpolazioni dovrebbero funzionare come quelle di Harzallah: http://cran.r-project.org/web/packages/signal/signal.pdf

Gioca con le funzioni. Dovrebbe fare il trucco.


AGGIORNAMENTO 3

interp1 non 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"))

Impostare xi sui mezzi settimanali originali.


Grazie mille per questa risposta! Il mio obiettivo di ricerca è semplice: ho mezzi settimanali e desidero ottenere stime giornaliere e la media delle stime (interpolate) giornaliere per una settimana dovrebbe essere uguale alla media settimanale (cioè il punto dati originale). Pensi che sia possibile? Inoltre, non capisco cosa significano "profondità in bit" e "analisi di picco" (non ho alcuna esperienza con le trasformazioni di Fourier).
COOLSerdash,

1
@COOLSerdash guarda il mio aggiornamento. Sì, è possibile! Ma avresti bisogno di capire il modo migliore per confrontare i mezzi stimati dalle serie storiche resintesi con i mezzi originali delle serie storiche originali.
noumenal

(A proposito: +1 domani, non posso più votare oggi). Grazie mille per l'aggiornamento, ora è più chiaro. Ho pensato alla seguente procedura: 1) adatta una funzione di Fourier ai mezzi settimanali per regressione, 2) usa le previsioni della regressione per "riempire" gli spazi tra i valori settimanali (cioè per ottenere i valori giornalieri) 3) per ogni settimana, calcola la media di tutti i valori giornalieri e questa media dovrebbe essere uguale al valore originale. Nel documento, Epstein ha usato una sorta di fattore di "correzione" per forzare la funzione ad avere le proprietà desiderate, ma non sono ancora sicuro di come farlo con la regressione.
COOLSerdash,

@COOLSerdash Vedi aggiornamento 2! Passa al paragrafo finale.
noumenal

Assolutamente fantastico! Grazie mille per la ricerca. Nota che sono riuscito a implementare l'approccio di Harzallah usando le spline (lineari e cubiche). Quindi immagino che ne avrei bisogno interp. Ho modificato la mia domanda. Grazie ancora.
COOLSerdash l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.