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

