Python實(shí)現(xiàn)?MK檢驗(yàn)示例代碼
MK檢驗(yàn):時(shí)間序列進(jìn)行檢測(cè),并找出突變點(diǎn),本文參考網(wǎng)上的matlab程序改寫(xiě)為python代碼如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#讀取時(shí)間序列數(shù)據(jù)
data = pd.read_csv('')
#定義時(shí)間和徑流數(shù)據(jù)列
x = list(range(len(data)))
y = data.to_list
#獲取樣本數(shù)據(jù)
n = len(y)
#正序計(jì)算
#定義累計(jì)量序列Sk,長(zhǎng)度n,初始值為0
Sk = np.zeros(n)
UFk = np.zeros(n)
#定義Sk序列元素s
s = 0
#i從2開(kāi)始,根據(jù)統(tǒng)計(jì)量UFk公式,i=1時(shí),Sk(1)、E(1)、Var(1)均為0,此時(shí)UFk無(wú)意義,因此公式中,令UFk(1) = 0
for i in range(2,n):
for j in range(1,i):
if y[i]>y[j]:
s += 1
Sk[i] = s
E = i * (i - 1)/4
Var = i * (i - 1) * (2 * i + 5)/72
UFk[i] = (Sk[i] - E)/np.sqrt(Var)
#逆序計(jì)算,構(gòu)造逆序列y2,長(zhǎng)度為n,初值為0
#定義逆累計(jì)量序列Sk2,長(zhǎng)度n,初始值為0
#定義逆統(tǒng)計(jì)量序列Sk2,長(zhǎng)度n,初始值為0
y2 = np.zeros(n)
Sk2 = np.zeros(n)
UBk = np.zeros(n)
#s歸零
s = 0
#按時(shí)間序列逆轉(zhuǎn)樣本
y2 = y[::-1]
# i從2開(kāi)始,根據(jù)統(tǒng)計(jì)量UBk公式,i=1時(shí),Sk(1)、E(1)、Var(1)均為0,此時(shí)UFk無(wú)意義,因此公式中,令UBk(1) = 0
for i in range(2, n):
for j in range(1, i):
if y2[i] > y2[j]:
s += 1
Sk2[i] = s
E = i * (i - 1) / 4
Var = i * (i - 1) * (2 * i + 5) / 72
UBk[i] = -(Sk2[i] - E) / np.sqrt(Var)
#逆轉(zhuǎn)逆序列
UBk2 = UBk[::-1]
#畫(huà)圖
plt.figure(figsize=(10,5))
plt.plot(range(1 ,n+1),UFk,label = 'UFk',color = 'orange')
plt.plot(range(1 ,n+1),UBk2,label = 'UBk',color = 'cornflowerblue')
plt.ylabel('UFk-UBk')
x_lim = plt.xlim()
plt.plot(x_lim,[-1.96,-1.96],'m--',color = 'r')
plt.plot(x_lim, [0,0],'m--')
plt.plot(x_lim,[1.96,1.96],'m--',color = 'r')
plt.show()
到此這篇關(guān)于Python實(shí)現(xiàn)?MK檢驗(yàn)的文章就介紹到這了,更多相關(guān)Python?MK檢驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能
這篇文章主要介紹了基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
python Flask實(shí)現(xiàn)restful api service
本篇文章主要介紹了python Flask實(shí)現(xiàn)restful api service,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
Python使用wxPython和PyMuPDF實(shí)現(xiàn)合并PDF文檔
處理大量的PDF文檔可能會(huì)變得復(fù)雜和耗時(shí),但是,使用Python編程和一些強(qiáng)大的庫(kù),可以使這個(gè)任務(wù)變得簡(jiǎn)單而高效,下面我們就來(lái)看看Python如何使用wxPython和PyMuPDF合并PDF文檔并自動(dòng)復(fù)制到剪貼板吧2023-11-11
python中查找excel某一列的重復(fù)數(shù)據(jù) 剔除之后打印
python查找excel某一列的重復(fù)數(shù)據(jù),剔除之后打印,供大家學(xué)習(xí)參考2013-02-02
PyTorch函數(shù)torch.cat與torch.stac的區(qū)別小結(jié)
Pytorch中常用的兩個(gè)拼接函數(shù)torch.cat() 和 torch.stack(),本文主要介紹了這兩個(gè)函數(shù)的用法加區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Windows下Pycharm遠(yuǎn)程連接虛擬機(jī)中Centos下的Python環(huán)境(圖文教程詳解)
由于最近學(xué)習(xí)tensorflow的需要,tensorflow是在Linux環(huán)境下,使用的是Python。為了方便程序的調(diào)試,嘗試在Windows下的Pycharm遠(yuǎn)程連接到虛擬機(jī)中Centos下的Python環(huán)境,感興趣的朋友跟隨小編看看吧2020-03-03
詳解Python如何利用Shelve進(jìn)行數(shù)據(jù)存儲(chǔ)
Shelve是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)持久化,本文將詳細(xì)介紹Shelve模塊的功能和用法,并提供豐富的示例代碼,希望對(duì)大家有所幫助2023-11-11
Python判斷值是否在list或set中的性能對(duì)比分析
這篇文章主要介紹了Python判斷值是否在list或set中的性能對(duì)比分析,結(jié)合實(shí)例形式對(duì)比分析了使用list與set循環(huán)的執(zhí)行效率,需要的朋友可以參考下2016-04-04

