Fourier / trigonometrik enterpolasyon


9

Arka fon

Epstein'dan (1991) bir makalede: Aylık ortalamalardan günlük klimatolojik değerler elde edildiğinde, periyodik ve eşit aralıklı değerler için Fourier enterpolasyonunun hesaplanması için formülasyon ve bir algoritma verilmektedir.

Bu makalede amaç, enterpolasyon yoluyla aylık ortalama değerlerden günlük değerler elde etmektir .

Kısacası, bilinmeyen günlük değerlerin harmonik bileşenlerin toplamı ile temsil edilebileceği varsayılmaktadır: Gazetede (süre) ay cinsinden ifade edilmiştir.

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

Bazı derviasyonlardan sonra, terimlerin şu şekilde hesaplanabileceği gösterilmiştir: Burada , aylık araçları ve T'yi gösterir .

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) bu yaklaşımı şu şekilde özetlemektedir: "İnterpolasyon, spektral veri katsayılarına sıfırlar eklenerek ve ortaya çıkan genişletilmiş katsayılara ters bir Fourier dönüşümü gerçekleştirilerek gerçekleştirilir. Yöntem, Fourier katsayılarına dikdörtgen bir filtre uygulanmasına eşdeğerdir. ."


Sorular

Amacım, günlük verileri elde etmek için haftalık yöntemlerin enterpolasyonu için yukarıdaki yöntemi kullanmaktır ( önceki soruma bakın ). Özetle, 835 haftalık sayım verisi var (sorunun altındaki örnek veri kümesine bakın). Yukarıda özetlenen yaklaşımı uygulamadan önce anlamadığım birkaç şey var:

  1. Durumum için formüllerin nasıl değiştirilmesi gerekir (aylık değerler yerine haftalık)?
  2. Zaman nasıl ifade edilebilir? (ya da genel olarak veri noktası olan ) olduğunu düşündüm , doğru mu?tt/835t/nn
  3. Yazar neden 7 terim hesaplıyor (yani )? Kaç terimi dikkate almalıyım?0j6
  4. Sorunun muhtemelen bir regresyon yaklaşımı ve enterpolasyon için tahminler kullanılarak çözülebileceğini anlıyorum (Nick sayesinde). Yine de bazı şeyler benim için belirsiz: Regresyona kaç harmonik terimi dahil edilmelidir? Ve hangi dönemi almalıyım? Haftalık araçların korunmasını sağlamak için regresyon nasıl yapılabilir (verilere tam bir uyum sağlamak istemediğim için)?

Regresyon yaklaşımını kullanarak ( bu makalede de açıklanmıştır ), verilere tam bir uyum uyumu elde etmeyi başardım ( , ile çalışacaktır , bu yüzden 417 terim yerleştirdim). - Nasıl bu yaklaşım değiştirilebilir mümkünse haftalık araçlarının korunmasını sağlamak için -? Belki her regresyon terimine düzeltme faktörleri uygulayarak?j1,,417  

Tam harmonik uyumun planı:

Tam harmonik uyum

DÜZENLE

Kullanılması sinyal paketi ve interp1işlevini burada (@noumenal çok teşekkür) aşağıdan set örnek verileri kullanarak yapmayı başardı buydu. Kullandığım q=7biz haftalık veriye sahip olarak:

# 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

Burada iki sorun var:

  1. Eğri "çok iyi" gibi görünüyor: her noktadan geçiyor
  2. Haftalık araçlar korunmaz

Örnek veri kümesi

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
Eski edebiyatlar genellikle bu tür şeyler için rokoko karmaşıklığı formüllerini sevindirir. Uygulamada, bunu bir regresyon problemi olarak düşünmeye geriye doğru eğilirim, böylece enterpolasyonlu değerler sadece regresyondan tahmin edilen değerler olur. Örneğin bkz . Stats.stackexchange.com/questions/60500/… Temel prensip, ana döngünün yılda bir kez tekrarlanmasıdır.
Nick Cox

1
Pratikte yerel düzleme istediğiniz için verilere çok yakın bir uyum istersiniz. Bunun birkaç Fourier çiftine ihtiyacı olabilir, ancak azalan geri dönüşler çok hızlı bir şekilde ayarlanır, böylece her yeni terim yakında çok az ekler. Sadece emmek ve görmek zorundasın. Her şeyi çizmek daha net hale getirir.
Nick Cox

1
Bunu verilerinizle kısaca denedim (R yerine Stata kullanarak). Kısacası, verilerinizde belirgin bir mevsimsellik olmasına rağmen, bu yaklaşımın iyi çalışması için yeterince düzenli değildir: örneğin, zirvelerin zamanlaması çok değişmekle kalmaz, aynı zamanda zirvedeki vakaların sayısı da değişir; bazı yıllarda ancak hepsi değil, takvim yılının sonunda ikincil bir zirve var. Ayrıca, mevsimsellik belirgin uzun vadeli eğilim ile birleştirilir. Benim tahminim günlük vakaları almak için kesinlikle yerel enterpolasyon veya haftalık serilerin yedi kat genişletilmiş düzeltmesine başvurmanız gerektiğidir.
Nick Cox

1
Kontrol sistemleri mühendisliğinde Nyquist kriteri örnekleme oranı için bir zemin olarak kullanılır. Örnek, verilerinizdeki en yüksek frekansın iki katından daha yüksek olduğunu söylüyor. Uygulamada, çözmeyi umduğunuz en yüksek frekansın 5 katının üzerinde örnekleme yapmak daha gelenekseldir. Girişiniz haftalık veri ise, Nyquist en yüksek çözülebilir frekansın 2 hafta civarında olduğunu önerir. Örneklemeyi bilgilendirmek ve ortalamayı desteklemek için başka haftalık istatistikleriniz varsa daha iyi olabilir. en.wikipedia.org/wiki/Nyquist-Shannon_sampling_theorem
EngrStudent

+1 Mükemmel soru! Gürültünün bir Gauss ve sinyalin bir Gauss artı başka bir bölüm olduğu bir dizi dağılımınız olması koşuluyla, gürültüdeki (tercihen R cinsinden) sinyali nasıl tespit edeceğinizi biliyor musunuz? Birçok pakete ve işleve (sinyal, fft () vb.) Baktım ve hatta Fourier dönüşümü ve hatta entropi önlemleri uygulamaya çalışarak veri ile oynadım, ancak şimdiye kadar boşuna. Bir soruyu cevaplamaya çalıştım (benim değil) ve konuyu oldukça ilginç bulduğum için yol boyunca yeni bir şeyler öğrenmeye çalışıyordum.
Aleksandr Blekh

Yanıtlar:


4

Fourier dönüşümleri konusunda uzman değilim, ama ...

Epstein'ın toplam örnek aralığı 24 ay olup, aylık örnekleme oranı: 1/12 yıldır. Örnek aralığınız 835 haftadır. Hedefiniz günlük verilere göre ~ 16 yıllık verilerle bir yıllık ortalamayı tahmin etmekse, 1/365 yıllık örnekleme oranına ihtiyacınız vardır. Yani 12 yerine 52 koyun, ancak önce birimleri standartlaştırın ve 835 haftanızı 835 * 7 = 5845 güne genişletin. Bununla birlikte, sadece haftalık veri noktalarınız varsa, tepe analizi için 16 veya 17 bit derinliğine sahip 52'lik bir örnekleme oranını, çift / tek karşılaştırma için alternatif olarak 32 veya 33'ü öneririm. Bu nedenle varsayılan giriş seçenekleri şunları içerir: 1) daha yüksek çözünürlük sağlayan günlük değerleri kullanmak için haftalık araçları (veya ortalama mutlak sapmayı, MAD'yi veya bu ölçüde bir şeyi) kullanmak için veya 2).

Liebman ve diğ. kesme noktası jmax = 2'yi seçin. Bu nedenle, Şekil 3 daha az kısmi içerir ve bu nedenle sinüsün tepesinde Şekil 2'ye kıyasla daha simetriktir. (Taban frekansındaki tek bir kısmi saf sinüs dalgasına neden olur. ) Epstein daha yüksek bir çözünürlük seçseydi (örn. Jmax = 12), dönüşüm muhtemelen ek bileşenlerle sadece küçük dalgalanmalar üretecekti, ya da belki de hesaplama gücünden yoksundu.

Verilerinizin görsel muayenesi ile 16-17 tepe noktasına sahip gibi görünüyorsunuz. Ben jmax veya "bit derinliği" 6, 11, 16 veya 17 (bkz. Şekle) ayarlamak ve çıkışları karşılaştırmak öneririz. Tepeler ne kadar yüksek olursa, orijinal karmaşık dalga formuna daha fazla katkıda bulunurlar. Bu nedenle, 17 bant çözünürlüğü veya bit derinliği varsayarsak, 17. kısmi, 6. zirveye kıyasla orijinal dalga formu modeline minimum düzeyde katkıda bulunur. Bununla birlikte, 34 bant çözünürlüğüyle, oldukça sabit vadiler tarafından önerilen çift ve tek zirveler arasında bir fark tespit edersiniz. Bit derinliği araştırma sorunuza, sadece zirvelere mi, yoksa hem zirve hem de vadilere mi ilgi duyduğunuza, aynı zamanda orijinal seriye tam olarak ne kadar yaklaşmak istediğinize bağlıdır.

Fourier analizi veri noktalarınızı azaltır. Bir Fourier dönüşümü kullanarak işlevi belirli bir bit derinliğinde tersine çevirirseniz, yeni ortalama tahminlerin orijinal araçlarınıza karşılık gelip gelmediğini muhtemelen kontrol edebilirsiniz. Dördüncü sorunuza cevap vermek için: bahsettiğiniz regresyon parametreleri, ihtiyacınız olan hassasiyet ve çözünürlüğe bağlıdır. Kesin bir uyum istemiyorsanız, elbette dönüşüm için haftalık araçları girin. Ancak, daha düşük bit derinliğinin de verileri azalttığına dikkat edin. Örneğin, Epstein'ın Lieberman ve meslektaşlarının analizi üzerindeki harmonik örtüsünün, Şekil 3'te Aralık ayında, biraz sağa doğru eğik bir eğri (yani sıcaklık tahmini çok yüksek) ile adım işlevinin orta noktasını nasıl kaçırdığını not edin.


Liebman ve Meslektaşlarının Parametreleri:

  • Bit Derinliği: 2

Epstein'ın Parametreleri:

  • Örnek Oranı: 12 [her ay]
  • Numune Aralığı: 24 ay
  • Bit Derinliği: 6

Parametreleriniz:

  • Örnek Oranı: 365 [her gün]

  • Örnekleme Aralığı: 5845 gün

Tam Bit Derinliği Yaklaşımı

Görsel incelemeye göre tam uyum. (Gücünüz varsa, daha düşük bit derinliklerine kıyasla neler olduğunu görün.)

  • Tam Spektrum (tepeler): 17
  • Tam Spektrum (çift / tek): 34

Değişken Bit Derinliği Yaklaşımı

Muhtemelen yapmak istediğiniz şey budur:

  • Sadece Zirveleri Karşılaştır: 6, 11, 16, 17
  • Çift / Tek: 12, 22, 32, 34
  • Araçları yeniden sentezleme ve karşılaştırma

Bu yaklaşım, dönüşümü tekrar ters çevirirseniz, yani kısmi orijinal zaman serisinin bir yaklaşımına sentezlerseniz, Epstein'daki Şekillerin karşılaştırılmasına benzer bir şey verir. Ayrıca, yeniden sentezlenen eğrilerin ayrık noktalarını ortalama değerlerle karşılaştırabilir, hatta belki de bit derinliği seçiminizin hassasiyetini göstermek için önemli farklılıkları test edebilirsiniz.


GÜNCELLEME 1:

Bit Derinliği

İkili basamak için bir bit - kısa - 0 veya 1'dir. 010101 bitleri bir kare dalgayı tanımlar. Bit derinliği 1 bittir. Bir testere dalgasını tanımlamak için daha fazla bite ihtiyacınız olacaktır: 0123210. Bir dalga ne kadar karmaşıksa ihtiyacınız olan bitleri alır:

Bu biraz basitleştirilmiş bir açıklamadır, ancak bir zaman serisi ne kadar karmaşıksa, modellemek için daha fazla bit gerekir. Aslında, "1" bir kare dalga değil sinüs dalgası bileşenidir (kare dalga daha çok 3 2 1 0 gibidir - bakınız ekli şekil). 0 bit düz bir çizgi olur. Bit derinliğinin azalmasıyla bilgi kaybolur. Örneğin, CD kalitesinde ses genellikle 16 bit, ancak sabit hat kalitesinde ses genellikle 8 bit civarındadır.

Lütfen grafiklere odaklanarak bu görüntüyü soldan sağa doğru okuyun:

FFT

Aslında bir güç spektrumu analizini tamamladınız (şeklin yüksek çözünürlükte olmasına rağmen). Bir sonraki hedefiniz şunu bulmak olacaktır: Zaman serisinin araçlarını doğru bir şekilde yakalamak için güç spektrumunda kaç bileşene ihtiyacım var?

GÜNCELLEME 2


Filtrelemek veya Filtrelememek

Sadece aralık kısıtlamalarına aşina olduğum için regresyondaki kısıtlamayı nasıl tanıtacağınızdan tam olarak emin değilim, ama belki de DSP sizin çözümünüzdür. Şimdiye kadar düşündüm:

  • Adım 1. Tüm veri setindeki Fourier işlevi ile seriyi sinüs bileşenlerine ayırın (gün olarak)

  • Adım 2. Zaman serisini ters bir Fourier dönüşümü ile yeniden oluşturun, ek ortalama-kısıtlama orijinal verilere bağlanmıştır: enterpolasyonların orijinal araçlardan sapmaları birbirini iptal etmelidir (Harzallah, 1995).

En iyi tahminim Harzallah'ı (1995, Şekil 2) doğru anlarsam otoregresyonu tanıtmak zorunda kalacağınızdır. Yani bu muhtemelen sonsuz tepki filtresine (IIR) karşılık gelir mi?

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

Özetle:

  1. Ham verilerden araçlar türetme
  2. Fourier Transform Raw verileri
  3. Fourier Ters Dönüşüm dönüştürülmüş Veri.
  4. IIR kullanarak sonucu filtreleyin

Belki de Fourier analizinden geçmeden bir IIR filtresi kullanabilirsiniz? Gördüğüm gibi Fourier analizinin tek avantajı, hangi örüntülerin etkili olduğunu ve ne sıklıkta yeniden meydana geldiklerini (yani osilasyon) izole etmek ve belirlemektir. Daha sonra, daha az katkıda bulunanları filtrelemeye karar verebilirsiniz, örneğin en az katkıda bulunan zirvede dar bir çentik filtresi kullanarak (veya kendi kriterlerinize göre filtre). Yeni başlayanlar için, "sinyal" de daha çok gürültü gibi görünen daha az katkıda bulunan tuhaf vadileri filtreleyebilirsiniz. Gürültü, çok az vaka ile karakterize edilir ve desen yoktur. Tek bir frekans bileşenindeki bir tarak filtresi gürültüyü azaltabilir - orada bir desen bulamazsanız.

İşte bazı açıklayıcı binning (yalnızca açıklama amaçlı): Vadideki gürültüyü görebiliyor musunuz?

Hata! Bunun için bir R işlevi var !?

Bir IIR filtresi ararken, R paketinin Sinyal paketinde enterpolat olduğunu keşfettim . Bu noktaya kadar söylediğim her şeyi unut. İnterpolasyonlar Harzallah'ınki gibi çalışmalıdır: http://cran.r-project.org/web/packages/signal/signal.pdf

Fonksiyonlarla oynayın. Hile yapmalı.


GÜNCELLEME 3

interp1 interp değil

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

Xi'yi orijinal haftalık ortalamaya ayarlayın.


Bu cevap için çok teşekkür ederim! Araştırma hedefim basit: Haftalık araçlara sahibim ve günlük tahminler almak istiyorum ve bir hafta boyunca (enterpolasyonlu) günlük tahminlerin ortalaması haftalık ortalamaya eşit olmalıdır (yani orijinal veri noktası). Bunun mümkün olduğunu düşünüyor musunuz? Ayrıca, "bit derinliği" ve "tepe analizi" nin ne anlama geldiğini anlamıyorum (Fourier dönüşümleri ile ilgili hiçbir deneyimim yok).
COOLSerdash

1
@COOLSerdash güncellememi gör. Evet mümkün! Ancak, yeniden sentezlenen zaman serisinden tahmini araçları, orijinal zaman serisinin orijinal araçlarıyla karşılaştırmanın en iyi yolunu bulmanız gerekir.
noumenal

(Btw: Yarın +1, bugün oy kullanamıyorum). Güncelleme için çok teşekkürler, şimdi daha net. Aşağıdaki prosedür hakkında düşündüm: 1) regresyon ile haftalık araçlara fourier fonksiyonu sığdırmak, 2) regresyon tahminlerini haftalık değerler arasındaki boşlukları doldurmak (yani günlük değerleri almak için) 3) her hafta, tüm günlük değerlerin ortalamasını hesaplayın ve bu ortalama orijinal değere eşit olmalıdır. Makalede Epstein, işlevi istenen özelliklere sahip olmaya zorlamak için bir tür "düzeltme" faktörü kullandı, ancak yine de bunu regresyon ile nasıl yapacağımdan emin değilim.
COOLSerdash

@COOLSerdash Bkz. Güncelleme 2! Son paragrafa atlayın.
noumenal

Kesinlikle harika! Araştırma için çok teşekkür ederim. Harzallah'ın yaklaşımını spline (doğrusal ve kübik) kullanarak uygulamayı başardığımı unutmayın . Sanırım ihtiyacım var interp. Sorumu düzenledim. Çok teşekkürler.
COOLSerdash
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.