numpy коррелирует, не коррелирует (взаимная корреляция) - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть не понятная проблема с numpy кросс-корреляцией и, возможно, корреляцией в целом.

У меня 3 набора данных.

  • 1-й (сравнить) является эталонным
  • 2-й (a_ok) почти такой же, как 1-й
  • 3-й (a_fail) похож (но, безусловно, далеко от совпадения) до 1-го

Проблема здесь в том, что 1-й и 2-й, почти идентичные, дают корреляцию 0,58. Это первая проблема

Более серьезная проблема заключается в том, что третий набор данных, который является наименее похожим, безусловно, далек от идентичности, дает 0,60, что уже является довольно хорошей корреляцией, а также дает более высокую корреляцию, чем идентичный. .

Я использовал нормализацию для всех наборов данных.

Вот результат смещения набора данных a_ok на основе наибольшей корреляции с сравнение

Сравнить с a_ok: corr = 0.5872677724052872

enter image description here

Сравнить с a_fail: corr = 0.6322867993735025

Вот результат смещения a_fail набор данных на основе наибольшей корреляции с сравнение enter image description here

Вот воспроизводимое код с наборами данных

import numpy as np
import matplotlib.pyplot as plt
def normalize(K1, K2):
    K1_cor = (K1 - np.mean(K1)) / (np.std(K1) * K1.shape[0])
    K2_cor = (K2 - np.mean(K2)) / (np.std(K2))
    return K1_cor, K2_cor

compare_original = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 393.9098881724093, 391.60183860651114, 389.1015291668744, 386.9431482789171, 383.09920386239384, 377.87431773011514, 372.3237838226293, 366.61969396092184, 361.292125571538, 355.4855833926321, 349.11602655850675, 343.1981934684389, 336.3762774037432, 332.58081724597406, 325.92330386150667, 321.45917314645106, 315.90030072793536, 310.84562084739105, 305.447213115458, 296.5434200922354, 292.6585040623286, 284.9087573241651, 279.72307734614964, 274.75807540452746, 272.96336750560505, 266.2573942635209, 258.8010819142764, 253.07113624433742, 250.2039168358481, 244.6160256401857, 239.10248848558643, 233.66856870362346, 229.0785891348207, 224.5551157288562, 220.10224896624752, 216.44860821913363, 212.84031572989173, 211.43556938225885, 205.1389772812568, 201.73497465734593, 196.23710148695125, 192.96113598338914, 190.3943276465977, 187.25650856512306, 184.8053029542172, 182.40888136272312, 176.4652940382329, 171.96802028284213, 169.7439247808298, 168.11900546934007, 166.5322791533221, 162.24672569885655, 160.75136080294934, 159.29846201391902, 154.30489298787643, 152.9477034806342, 149.40214188558343, 148.14182393908885, 143.7810835958611, 142.61837188805654, 141.50971698084905, 138.57849761056005, 137.8985134075056, 136.92698784388708, 134.1044369139217, 133.24038426843418, 132.69890730522238, 129.0310040261642, 128.5496013218244, 125.92855117089213, 125.51493934986385, 124.95199078045935, 122.64175471673585, 122.3315167894194, 121.92620719107111, 118.71394189394942, 118.51160280748886, 118.3427226321923, 116.21101496846157, 116.1077086157504, 114.0175425099138, 114.0, 111.01801655587259, 111.07204868912791, 111.11255554616679, 109.29318368498559, 109.45775440780794, 109.65856099730654, 107.91200118615167, 108.04628637764465, 108.34205093129813, 105.72133181151285, 106.09901036296239, 106.30145812734649, 104.78549517943789, 105.26157893552613, 103.32473082471591, 103.16006979447037, 103.74005976477939, 102.7861858422619, 102.7861858422619, 103.46496991735899, 102.52804494381037, 102.69371937952194, 103.46980235798269, 102.55242561733974, 101.55294185792945, 100.17983829094555, 100.62305898749054, 99.76472322419383, 100.72239075796404, 101.21264743103995, 99.64436762808022, 100.70253224224304, 101.24228365658294, 100.68763578513501, 101.83319694480774, 101.01980003939822, 102.00490184299969, 101.21264743103995, 100.89598604503551, 102.17631819555841, 101.41498903022176, 102.6498904042279, 101.91172650877817, 103.24727599312246, 103.9471019317037, 103.24727599312246, 104.00480758118829, 103.39245620450265, 104.1393297462587, 103.71113729971339, 104.48444860360799, 104.80935072788114, 104.20172743289815, 105.20931517693668, 104.04326023342406, 105.94810050208545, 105.6882207249228, 108.2266141020775, 108.04628637764465, 109.77249200050075, 108.78419002777932, 110.05907504608605, 110.90987332063814, 110.92339699089638, 114.54256850621083, 114.12712210513327, 116.0775602776006, 117.17508267545622, 119.03780911962384, 118.92854997854805, 120.81390648431164, 123.96773773849388, 126.24183141890805, 125.96031120952345, 125.41929676090518, 126.84636376341263, 128.3199127181748, 129.634100452003, 131.21356637177422, 132.83448347473634, 134.80726983364065, 136.33048081775402, 136.06616037795732, 137.81872151489435, 140.51334456200237, 142.35167719419397, 144.1700384962146, 147.08500943332058, 149.03019828209315, 151.00331122197287, 156.05127362504928, 156.11534197509224, 158.25612152457168, 161.4465855941215, 163.68872899500442, 169.07099100673656, 169.43435306926398, 171.82840277439584, 175.2512482123879, 177.9016582272352, 180.62391868188442, 184.17654573804992, 189.1877374461675, 193.06216615380654, 196.02295783912658, 199.04019694524018, 203.364205306637, 204.2841158778626, 210.95260131128984, 214.5367101453735, 215.96759016111653, 222.84748147555987, 226.6362724719942, 230.4886114323222, 235.73289969794203, 240.15411718311222, 244.1986895951737, 250.12197024651792, 254.77244748991205, 259.4937378820537, 266.1766330841233, 271.0461215365385, 277.90825824361536, 283.47133893923035, 286.9006796785257, 293.20982248212624, 301.01494979485653, 305.32114240582814, 309.7256850827842, 316.3953223421611, 321.6364407215078, 326.31426570102633, 331.76045575083236, 337.30846416892655, 343.6655350773481, 349.4137948049561, 356.72117963473937, 363.40748478808194, 367.37174632788515, 375.022665981671, 377.00397875884545, 380.82541931966676, 384.6062922002187, 386.6497122719736, 391.934943581202, 391.3693907295255, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
compare_original = np.array(compare_original)

a_ok = [136.0036764208968, 134.03357788255897, 134.09325113517085, 134.13426109685773, 130.24592124131948, 127.56566936288148, 127.66362050325849, 124.90396310766124, 121.19818480488888, 118.53269591129698, 118.69709347747316, 117.08543888972702, 115.52056094046635, 113.03096920755833, 113.26517558367179, 111.8257573191436, 109.48059188732951, 109.7679370308106, 106.25441167311595, 106.56922632730333, 104.4030650891055, 102.88342918079665, 103.61949623502326, 102.15674231297707, 102.55242561733974, 100.64790112068906, 99.74467404327912, 100.18482919085105, 99.29753269845128, 96.25487000666512, 96.74709297958259, 96.04165762834376, 95.1892851112981, 92.64987857520376, 92.91393867445294, 93.47726996441435, 93.00537618869137, 92.20086767487604, 91.8313671900838, 92.45539465060976, 90.9065454189081, 90.68627239003708, 89.9388681271896, 89.1403387922662, 89.8276126811795, 89.80534505250787, 90.52071586106685, 89.1403387922662, 87.78382538941898, 88.61715409558128, 87.96590248499699, 88.86506625215557, 88.40814442120137, 90.0, 89.40357934669059, 89.87213138676528, 89.30845424706443, 88.20430828479978, 89.35882720806042, 88.83692925805124, 87.8179936004006, 87.70974860299168, 89.47066558375433, 89.00561780022652, 88.10221336606703, 89.05054744357274, 88.63972021616495, 88.23831367382311, 87.46427842267951, 88.95504482602435, 88.60022573334675, 87.92041856133307, 90.44335243676011, 90.13878188659973, 89.56003573022959, 90.95603333479313, 90.70832376358854, 90.47098982546837, 90.02777349240623, 92.76313923105448, 92.39588735436226, 92.22797840135064, 93.90420650854784, 95.63472172804185, 95.524865872714, 95.42536350467836, 98.18350166906862, 98.12746812182611, 98.08159868191383, 100.0199980003999, 100.0, 100.0199980003999, 102.07840124139877, 102.17631819555841, 102.3132444994293, 105.47511554864494, 105.57461816175325, 105.80170130957252, 108.04628637764465, 108.34205093129813, 108.67382389517726, 111.19802156513397, 111.61093136427094, 112.05802068571441, 112.53888216967503, 116.21101496846157, 116.76043850551436, 119.25183436744275, 120.16655108639841, 123.03251602726817, 123.71337841963576, 127.58134659894448, 128.69343417595164, 129.46814279968643, 130.6789960169575, 133.75350462698165, 135.05924625881784, 135.95955280891445, 140.9432509913121, 142.3938200906205, 143.8923208513922, 147.6651617681029, 149.25146565444507, 150.88074761214565, 154.76756766196203, 157.05094714773293, 162.40997506310995, 167.60966559241146, 169.45205811674285, 171.95929750961417, 177.341478509682, 179.96110690924303, 182.6307750626931, 186.03494295427404, 193.05180651835403, 196.5807722031837, 200.1724256734678, 203.82345301755635, 207.53072061745462, 212.04952251773642, 216.640254800441, 221.29844102478444, 226.01991062736045, 231.60310878742538, 237.26145915424192, 242.98971171636055, 249.61570463414355, 256.3201123595259, 263.9488586828896, 269.94073423623934, 273.6220020393097, 280.60826787534256, 287.60041724587256, 297.397041007472, 303.70544940781025, 308.22394455979565, 315.27289766169247, 323.6927555568706, 329.98484813700156, 335.7930910545957, 340.64204085814185, 351.33032889290956, 355.4855833926321, 362.5382738415353, 372.6674120445736, 379.09629383574827, 386.855270094644, 392.5366224952775, 398.32273347123936, 405.80413994931104, 407.87865842674336, 410.7067080046295, 413.3775513982345, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 412.3311775745317, 412.9116128180461, 407.0012284993744, 405.0308630215727, 397.6191645280695, 394.0977036218303, 387.98066962156764, 379.68407920269715, 373.0, 365.68975922221284, 359.2213802100315, 352.8639964632266, 343.0699637100281, 337.6166465090251, 332.26645933647893, 324.20518194501454, 316.9006153354708, 308.9142275778181, 304.6128690649822, 298.2096577912929, 291.89895511974686, 282.64642223102703, 275.68822970885066, 270.20177645604036, 261.1991577321795, 256.40007800310826, 251.17722826721374, 245.65219315121126, 241.07467722678797, 236.57768280207665, 229.0261993746567, 225.10886255321003, 219.93862780330335, 216.15735009478627, 211.51359294381058, 207.8677464158401, 201.4671189052943, 196.06121493043952, 194.83326204732086, 188.6001060445089, 185.58555978308226, 179.47701802737865, 176.81911661356077, 173.0028901492689, 167.28717822953436, 166.7213243709394, 164.23458831805192, 158.67577004697347, 156.28499608087785, 153.9415473483361, 150.65191668213185, 148.4082207965583, 143.22360140703069, 143.1258187749506, 138.03260484392808]
a_ok = np.array(a_ok)

a_fail = [254.00787389370433, 254.07085625864295, 254.23807739990482, 254.4425278918601, 254.70963860835735, 254.86663179004034, 246.48326515201796, 247.08095839218367, 247.63077353188558, 248.2438317461282, 249.09837414162303, 249.85195616604645, 250.88044961694405, 251.7717220022932, 265.33940529065785, 266.62708039507163, 268.00186566514793, 269.462427807663, 270.69170655932555, 272.63528751795866, 274.3446737226732, 276.1340254296815, 278.0017985553331, 279.94642344563005, 282.3791777026061, 284.48725806264156, 287.1114766079545, 289.3751889848195, 292.18145047213386, 295.0830391601659, 298.0771712157776, 301.16108646370634, 301.6836091006603, 304.53242848668845, 307.8830946966722, 311.8926097232828, 315.41242841714404, 319.6122650963195, 324.530430006186, 328.9331239021087, 333.4246541574273, 338.6620734596657, 344.0058139043583, 350.1385440079398, 355.69228273888655, 362.04972034238614, 365.68975922221284, 373.0, 379.68407920269715, 387.98066962156764, 395.63746030930895, 404.1781785302121, 413.62785206027894, 423.2068052382901, 433.7199557318063, 444.3647150708526, 455.96491093065487, 468.53921927625225, 482.1047603996459, 494.9545433673682, 506.9329344203235, 519.1579721048305, 517.7200015452368, 533.0787934255122, 564.0301410385796, 573.6209549868275, 572.3722564904766, 595.3855893452578, 615.958602505071, 615.5923976138756, 611.657583947097, 607.5631654404339, 603.9950330921605, 595.3855893452578, 597.4027117447661, 594.3845556539975, 591.8048664889467, 589.1502355087367, 583.7602247498539, 581.4851674806504, 579.5903725908497, 577.8624403783309, 648.5938636774172, 652.9195968877026, 652.0989188765766, 650.959292122019, 654.2239677663912, 764.8954176879347, 764.7123642259226, 764.2617352713663, 764.0235598461608, 764.2617352713663, 764.7123642259226, 765.3835639729925, 766.3523993568494, 767.479641423797, 768.9375787409534, 770.5167097474266, 772.4584131200851, 773.0588593373728, 773.9521949061195, 776.425785249305, 779.3234245164199, 780.4165554369025, 728.1236158785127, 678.6376057956116, 670.4841534294453, 673.9829374694882, 676.4236837958883, 674.8407219485202, 643.9518615548836, 613.881095978692, 585.8754133772811, 561.7704157393837, 533.376039956802, 513.281599124691, 494.2519600365789, 477.1771159642927, 461.1398920067532, 439.42689949524026, 426.31091940038317, 413.32311815334015, 401.32779619657543, 390.3088520646182, 380.248602890267, 370.3039292257105, 361.2976612157903, 352.40459701882435, 341.62113517755307, 333.7439138021846, 326.75372989454917, 319.8640336142843, 313.8295715830489, 307.14817271147814, 302.03476621077914, 296.2853354454115, 291.3417237540823, 286.483856438718, 281.71616922001476, 277.7048793233565, 273.11719096387907, 269.2675249635574, 265.4976459405996, 259.61509971494337, 256.00781238079435, 252.4915840181609, 249.63373169505758, 246.84408034222736, 244.12496799794977, 241.4787775354182, 238.90793205751876, 236.4148895480147, 234.00213674238105, 232.13142829009604, 229.8695282111137, 228.12277396174193, 226.01991062736045, 224.4036541591959, 222.84748147555987, 221.35265979879256, 219.92044015961773, 218.22007240398395, 216.9331694324314, 215.7127719909046, 214.84180226389836, 213.74049686477292, 212.70872102478543, 211.74749113035554, 210.85777196963835, 207.09901013766338, 206.34437234875102, 205.6647757881743, 205.20477577288497, 204.65825172711703, 204.29880077964236, 203.8872237291979, 203.55343278854326, 203.35437049643167, 203.15757431117353, 203.0615670184784, 203.00246303924493, 203.0615670184784, 203.15757431117353, 203.35437049643167, 203.55343278854326, 203.8872237291979, 204.29880077964236, 204.65825172711703, 205.20477577288497, 205.6647757881743, 206.34437234875102, 207.09901013766338, 207.92787210953705, 208.5976989326584, 209.55428890862626, 210.58252539087852, 211.68136431911054, 212.8497122384712, 213.77090541044166, 215.05813167606567, 216.0671192014185, 215.96759016111653, 217.46264046957583, 219.02054698132775, 220.6399782451041, 222.31958978011812, 224.50167037240502, 226.31173190977086, 228.65257488163127, 230.58620947489467, 233.0772404161333, 235.64804263986576, 238.29603437741048, 241.0186714758838, 243.81345327934633, 246.6779276708802, 249.6096953245206, 253.21334877924585, 256.28499761008254, 260.049995193232, 263.89770745499095, 267.8245694479877, 272.5013761433142, 276.58814146669414, 277.2760357477725, 282.14358046923553, 287.17242207426534, 293.0187707297947, 298.21636440678435, 304.2449670906653, 311.1334118991401, 317.34523787194286, 325.2199255888237, 332.4048736104812, 340.4893537248999, 349.4967811010568, 358.6153928653928, 366.9945503682582, 374.40219016453415, 385.5385843206877, 397.6581446418519, 409.8975481751507, 424.01886750473733, 439.16397848639633, 454.440315112997, 472.56322328340366, 486.3661172409114, 506.6162255593478, 528.8667128870941, 553.1365111796545, 580.3834939072613, 601.149731764059, 634.4336056672912, 671.7268790215261, 706.74040495786, 754.0696254325591, 772.2408950580124, 771.2976079309465, 768.1510268169925, 763.2876259969108, 760.6234285111128, 758.3725997159971, 756.191113409831, 754.3924708001797, 750.7143264917754, 749.3710696310607, 748.2512946864844, 747.3560061978494, 746.6860116541625, 746.2419178791821, 746.0241282961296, 746.2419178791821, 746.6860116541625, 747.3560061978494, 748.2512946864844, 749.3710696310607, 750.7143264917754, 750.826877515716, 750.523150875441, 747.5894595297609, 653.9793574723899, 609.1387362497971, 611.4188417116371, 613.8876118639307, 616.5427803486145, 619.3819500114611, 621.2833492054974, 622.8009312774026, 621.13444599378, 621.0829252201352, 618.6582255171267, 615.5201052768301, 610.5735008989499, 603.0008291868262, 596.534156607985, 585.7798221174916, 568.5015391359992, 548.7312639170472, 515.2601284788102, 483.72099396242874, 448.26443088873333, 427.2154023440634, 401.32779619657543, 375.88961145527816, 358.6153928653928, 340.07205118915607, 328.28341414089135, 312.40518561637225, 301.62393804205925, 287.51695602172754, 277.71388153997634, 267.36678926149375, 259.268200904006, 249.83394485137524, 241.89667215569543, 237.59208741033444, 231.23364807051763, 227.0704736419951, 223.66492796144863, 216.08563117431015, 212.8097742116184, 209.60200380721554, 206.4654934849889, 204.00980368599937, 201.00995000248122, 198.66806487203723, 196.3797341886377, 194.1468516355596, 191.9713520294109, 189.85520798756087, 187.8004259846074, 185.80904176062046, 181.64801127455263, 180.24705268048075, 178.44046626256053, 177.13271860387624, 175.45369759569047, 174.24408167854654, 173.07801709055948, 171.95638982020995, 170.53152201279386, 169.51696080333673, 168.5496959356498, 167.6305461424021, 212.77687844312408, 227.26416347501865, 243.7580767892625, 246.22144504490262, 245.78242410717655, 244.75293665245368, 244.0, 243.3105012119288, 242.53865671269807, 241.99380157351138, 241.51397475094478, 241.09956449566639, 240.67405344157896, 240.40798655618744, 240.20824298928628, 252.01785651020842]
a_fail = np.array(a_fail)

compare, a_ok_norm = normalize(compare_original,a_ok)
corr = np.correlate(compare,a_ok_norm,mode='full')
a_ok_shift = np.roll(a_ok, shift = np.argmax(corr))
print('Compare Vs a_ok',corr.max())
plt.plot(compare_original)
plt.plot(a_ok_shift)
plt.show()



compare, a_fail_norm = normalize(compare_original,a_fail)
corr = np.correlate(compare,a_fail_norm,mode='full')
a_fail_shift = np.roll(a_fail, shift = np.argmax(corr))
print('Compare Vs a_fail',corr.max())
plt.plot(compare_original)
plt.plot(a_fail_shift)
plt.show()

Есть идеи, в чем проблема?

...