#r #time-series #wavelet #wavelet-transform
#r #временные ряды #вейвлет #вейвлет-преобразование
Вопрос:
Во-первых, вот dput моих данных:
WaveletSite1Oxygen2 <- structure(list(Date = structure(c(741830400, 746668800, 749088000,
751507200, 753926400, 756345600, 759369600, 761788800, 764208000,
766627200, 770256000, 773366400, 778118400, 780537600, 782956800,
785462400, 790819200, 793238400, 795657600, 798681600, 801100800,
803865600, 807148800, 809568000, 812073600, 814406400, 817257600,
822873600, 825897600, 828316800, 831340800, 838598400, 841017600,
843436800, 846460800, 848880000, 851904000, 854323200, 855619200,
859334400, 864864000, 868320000, 872208000, 875491200, 877910400,
879379200, 883353600, 885772800, 888192000, 890611200, 893289600,
900028800, 904521600, 906940800, 909360000, 911779200, 912988800,
916617600, 919382400, 921456000, 925084800, 928108800, 930268800,
933292800, 935712000, 938131200, 941155200, 942364800, 949017600,
951436800, 953856000, 955065600, 964137600, 966556800, 970185600,
972604800, 973814400, 977443200, 979862400, 982800000, 985910400,
987984000, 990748800, 993168000, 994377600, 998092800, 1000512000,
1005350400, 1007769600, 1013817600, 1016236800, 1019260800, 1020297600,
1025308800, 1027728000, 1030147200, 1032566400, 1034985600, 1038614400,
1039824000, 1043452800, 1045872000, 1048291200, 1050624000, 1053129600,
1056758400, 1059177600, 1060387200, 1064016000, 1066435200, 1070064000,
1071273600, 1074902400, 1077321600, 1079740800, 1083024000, 1084579200,
1087948800, 1091232000, 1093651200, 1096070400, 1098489600, 1100908800,
1103328000, 1106352000, 1108771200, 1111190400, 1114819200, 1116028800,
1117843200, 1122076800, 1124496000, 1128038400, 1130544000, 1133222400,
1135123200, 1138665600, 1140566400, 1143244800, 1145577600, 1147996800,
1151107200, 1154131200, 1156550400, 1158883200, 1161388800, 1163808000,
1166140800, 1169164800, 1171670400, 1175299200, 1177632000, 1180051200,
1183161600, 1185580800, 1.188e 09, 1190419200, 1191628800, 1196294400,
1197676800, 1200614400, 1203120000, 1206748800, 1209168000, 1210377600,
1214006400, 1215129600, 1220054400, 1222473600, 1224892800, 1227312000,
1229731200, 1232755200, 1235174400, 1236384000, 1240012800, 1242432000,
1248480000, 1250553600, 1253318400, 1256947200, 1259280000, 1260576000,
1262995200, 1266710400, 1269043200, 1272326400, 1275091200, 1280534400,
1282953600, 1285372800, 1287792000, 1290211200, 1292544000, 1295568000,
1298073600, 1299283200, 1304035200, 1306454400, 1307664000, 1311638400,
1314057600, 1316476800, 1318809600, 1322611200, 1323820800, 1326499200,
1330473600, 1332892800, 1335312000, 1337731200, 1340064000, 1342569600,
1346112000, 1348531200, 1350950400, 1353542400, 1355788800, 1358985600,
1360022400, 1363392000, 1366070400, 1369699200, 1374710400, 1377216000,
1379030400, 1382054400, 1384473600, 1386892800, 1391126400, 1395360000,
1397779200, 1401235200, 1406246400, 1408579200, 1410998400, 1414713600,
1417046400, 1418428800, 1421712000, 1424044800, 1426723200, 1430352000,
1432944000, 1435276800, 1437523200, 1440028800, 1443398400, 1444867200,
1447372800, 1449619200, 1451952000, 1454976000, 1459382400, 1461715200,
1463011200, 1466726400, 1472601600, 1479168000, 1481155200, 1484179200,
1487721600, 1488931200, 1491350400, 1493769600, 1498780800, 1501027200,
1503446400, 1508544000, 1513296000, 1516060800, 1519171200, 1520812800,
1522886400, 1525219200), tclass = "Date", class = c("POSIXct",
"POSIXt")), AverageOxygen = c(4.11230769230769, 3.80128205128205,
3.64576923076923, 5.76538461538462, 5.23153846153846, 5.14807692307692,
4.26590909090909, 3.71666666666667, 4.35884615384615, 3.25769230769231,
4.85288461538462, 5.61923076923077, 4.35576923076923, 5.72884615384615,
7.22692307692308, 2, 4.21923076923077, 4.67211538461538, 5.125,
4.74230769230769, 4.28846153846154, 5.10384615384615, 6.06346153846154,
3.24230769230769, 6.07884615384615, 5.89615384615385, 4.54807692307692,
5.21442307692308, 5.48461538461538, 6.70769230769231, 5.36538461538461,
5.17483974358974, 5.95, 5.55384615384615, 5.67153846153846, 5.53769230769231,
5.78307692307692, 6.57307692307692, 6.49192307692308, 6.36153846153846,
6.71992307692308, 6.51936923076923, 6.41, 7.14782608695652, 6.11307692307692,
6.20961538461538, 6.85277777777778, 6.82277777777778, 6.82846153846154,
6.35384615384615, 5.15769230769231, 6.64, 6.39384615384615, 6.88179487179487,
6.44153846153846, 6.82192307692308, 7.45923076923077, 7.03730769230769,
7.01214285714286, 6.99326923076923, 6.83269230769231, 7.20188461538462,
5.94901602564103, 4.195, 5.11826923076923, 6.94230769230769,
6, 9.515, 7.95634615384615, 7.645, 6.72096153846154, 6.09538461538462,
6.65636639676113, 6.80596153846154, 6.19564102564103, 7.03442307692308,
6.52769230769231, 7.48740384615385, 7.22692307692308, 7.05307692307692,
6.06953846153846, 5.41384615384615, 7.17278846153846, 7.47373076923077,
7.1822792022792, 6.80788461538462, 7.24076923076923, 7.54961538461538,
5.55653846153846, 8.41923076923077, 6.75423076923077, 7.13653846153846,
7.00192307692308, 7.09538461538462, 7.29730769230769, 7.42903846153846,
5.87115384615385, 5.94153846153846, 6.42153846153846, 6.74269230769231,
5.88730769230769, 6.41692307692308, 6.82653846153846, 6.34096153846154,
6.19807692307692, 6.79384615384615, 6.56230769230769, 4.40576923076923,
6.54115384615385, 6.02884615384615, 5.75666666666667, 5.01076923076923,
5.55115384615385, 7.14961538461538, 5.77942307692308, 6.22141025641026,
6.66192307692308, 6.06788461538462, 5.91153846153846, 5.37692307692308,
5.61346153846154, 5.40192307692308, 6.41019230769231, 5.07961538461538,
5.09391025641026, 2.42012820512821, 1.75173076923077, 4.14705128205128,
4.44538461538462, 4.42269230769231, 2.94395833333333, 4.88153846153846,
5.15941483516484, 5.35596153846154, 5.26211538461538, 4.02961538461538,
2.60641254578755, 1.14916666666667, 4.67846153846154, 4.47653846153846,
3.97942307692308, 2.27812937062937, 1.98057692307692, 1.92730769230769,
4.65846153846154, 4.47173076923077, 5.02192307692308, 5.22423076923077,
4.07393162393162, 3.72826923076923, 3.01666666666667, 3.96634615384615,
4.85800480769231, 6.00442307692308, 6.44865384615385, 6.33692307692308,
5.90365384615385, 6.57846153846154, 5.57615384615385, 6.25384615384615,
5.31096153846154, 5.13022435897436, 4.98307692307692, 5.95038461538462,
4.89730769230769, 5.2225, 5.805, 5.91642081447964, 5.97115384615385,
5.25051282051282, 6.03519230769231, 5.66884615384615, 5.87538461538461,
6.06269230769231, 5.81807692307692, 5.94423076923077, 6.19153846153846,
5.54194762684124, 5.31923076923077, 6.35384615384615, 6.92051282051282,
7.19038461538462, 3.90384615384615, 7.64230769230769, 6.03589743589744,
6.51538461538462, 6.92820512820513, 6.81153846153846, 6.55897435897436,
6.36192307692308, 7.22307692307692, 6.10961538461538, 5.93653846153846,
6.85, 6.66538461538462, 5.12307692307692, 6.06153846153846, 6.42179487179487,
6.32051282051282, 5.85384615384615, 6.27307692307692, 7.02692307692308,
7.025, 6.02307692307692, 6.33173076923077, 6.47692307692308,
5.37884615384615, 2.38644688644689, 5.91538461538462, 5.31730769230769,
4.83461538461538, 1.25149572649573, 1.75757936507937, 2.47307692307692,
4.47115384615385, 4.81548717948718, 4.43502747252747, 5.33873626373626,
5.19423076923077, 5.90384615384615, 4.84038461538462, 5.45769230769231,
5.89487179487179, 1.63846153846154, 5.35576923076923, 7.03846153846154,
5.59230769230769, 5.84230769230769, 6.024, 3.81153846153846,
3.83846153846154, 5.7, 6.10769230769231, 5.32307692307692, 5.59423076923077,
6.86923076923077, 6.69028286528286, 6.57792022792023, 5.83846153846154,
3.90384615384615, 0.761111111111111, 3.08098290598291, 4.68205128205128,
4.51730769230769, 5.82692307692308, 1.52692307692308, 2.55769230769231,
2.41410256410256, 2.32142697881828, 2.16333333333333, 0.778571428571429,
1.40384615384615, 2.93846153846154, 2.74326923076923, 5.20769230769231,
3.86269230769231, 4.02076923076923, 2.32545833333333, 4.35038461538462,
5.60307692307692, 3.755, 5.00961538461539, 4.36307692307692,
3.245, 4.38769230769231, 3.26269230769231, 4.00121082621083,
4.79653846153846, 4.46518518518519, 5.34461538461538, 0.555384615384615,
2.92332867132867, 4.17307692307692, 4.87461538461538, 5.50230769230769
)), row.names = c(NA, -275L), class = "data.frame")
Я использую пакет под названием WaveletComp для создания вейвлет-графиков моих временных рядов. Проблема в том, что после того, как я преобразовал свой временной ряд в функцию анализа вейвлетов, приведенную ниже, и построил график, я не могу изменить временной масштаб.
try <- analyze.wavelet(transform(WaveletSite1Oxygen2, date=Date), my.series="AverageOxygen", loess.span = 1/25,
dt = 1, dj = 1/250,
lowerPeriod = 2,
upperPeriod = 16,
make.pval = TRUE, method = "white.noise", params = NULL,
n.sim = 10,
verbose = TRUE)
#code for analyzing function
wt.image(try, periodlab = "periods",
legend.params = list(lab = "wavelet power levels"),
label.time.axis = TRUE,
show.date = TRUE, date.format = "%Y-%m")
# code for graph
В документации говорится, что как только столбец даты будет в формате POSIXct, вы сможете управлять им с помощью команды date.format. Однако на графике показаны годы только с интервалом в пять лет. Значит, он должен считывать столбец в некоторой степени, но не полностью?
Буду признателен за любую помощь!
Ответ №1:
Мне кажется, это небольшая ошибка, потому что я не смог найти решение.
Но вы можете сделать это:
Первый:
1- Использовать trace(wt.image, edit=T)
2-перейдите к строке 395 кода и вставьте туда:
plot(my.date, seq(min(axis.2),
max(axis.2), length.out = WT$nc), xlim = my.xlim,
ylim = my.ylim, type = "n", xaxs = "i", yaxs = "i",
yaxt = "n", xlab = "", ylab = "", lwd = lwd.axis,
tck = timetck, tcl = timetcl, mgp = par()$mgp -
c(0, 0.5, 0), font = par()$font.axis, cex.axis = par()$cex.axis,
axes = F)
axis(2, labels = F)
axis.POSIXct(1, at = seq(as.Date("1995-01-01",
format = "%Y-%m-%d", origin = as.Date("1970-01-01",
format = "%Y-%m-%d")), as.Date("2015-01-01",
, format = "%Y-%m-%d", origin = as.Date("1970-01-01",
format = "%Y-%m-%d")), length.out = WT$nc/5),
format = "%Y-%m", cex.axis = 1, las = 2)
Затем нажмите сохранить.
Если вы выполните
wt.image(try, periodlab = "periods", n.levels = 200,
legend.params = list(lab = "wavelet power levels"),
label.time.axis = T,timelab = "",
show.date = T, date.format = "%Y-%m" )
Вы получите это:
Вы можете изменить размер шрифта надписей, изменив cex.axis
, количество отображаемых надписей будет изменяться length.out
и las
1 для вертикальных и 2 для горизонтальных надписей
Для полных тиков x-label:
plot(my.date, seq(min(axis.2),
max(axis.2), length.out = WT$nc), xlim = my.xlim,
ylim = my.ylim, type = "n", xaxs = "i", yaxs = "i",
yaxt = "n", xlab = "", ylab = "", lwd = lwd.axis,
tck = timetck, tcl = timetcl, mgp = par()$mgp -
c(0, 0.5, 0), font = par()$font.axis, cex.axis = par()$cex.axis,
axes = F)
axis(2, labels = F)
axis.POSIXct(1, at = seq(as.Date("1993-07-01",
format = "%Y-%m-%d", origin = as.Date("1970-01-01",
format = "%Y-%m-%d")), as.Date("2018-05-01",
, format = "%Y-%m-%d", origin = as.Date("1970-01-01",
format = "%Y-%m-%d")), length.out = WT$nc/5),
format = "%Y-%m", cex.axis = 1, las = 2)
К сожалению, я не могу предложить вам более чистое решение!
Лучшие
Комментарии:
1. Вау, это потрясающе! Мне придется сообщить об ошибке или отправить электронное письмо людям, чтобы узнать, действительно ли это ошибка. Можно ли как-нибудь увеличить расстояние между метками, чтобы оно заполнило всю ось x ?
2. Конечно! Измените «1995-01-01» на «1993-07-01» и «2015-01-01» на «2018-05-01». Если это ошибка, я буду рад помочь! Лучший! Найдите прикрепленный результат в моем отредактированном ответе.
3. Это очень любезно с вашей стороны! И спасибо, что отредактировали это так быстро! Я сообщу, если это действительно так.