mk檢驗:時間序列進行檢測,並找出突變點,本文參考網上的matlab程式改寫為python**如下:
importnumpy as np
import
pandas as pd
import
matplotlib.pyplot as plt
#讀取時間序列資料
data = pd.read_csv('')#
定義時間和徑流資料列
x =list(range(len(data)))
y =data.to_list
#獲取樣本資料
n =len(y)
#正序計算
#定義累計量序列sk,長度n,初始值為0
sk =np.zeros(n)
ufk =np.zeros(n)
#定義sk序列元素s
s =0
#i從2開始,根據統計量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 += 1sk[i] =s
e = i * (i - 1)/4var = i * (i - 1) * (2 * i + 5)/72ufk[i] = (sk[i] - e)/np.sqrt(var)
#逆序計算,構造逆序列y2,長度為n,初值為0
#定義逆累計量序列sk2,長度n,初始值為0
#定義逆統計量序列sk2,長度n,初始值為0
y2 =np.zeros(n)
sk2 =np.zeros(n)
ubk =np.zeros(n)
#s歸零
s =0
#按時間序列逆轉樣本
y2 = y[::-1]
#i從2開始,根據統計量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 += 1sk2[i] =s
e = i * (i - 1) / 4var = i * (i - 1) * (2 * i + 5) / 72ubk[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假設檢驗的實現
這裡以熟悉的鳶尾花資料集舉例 from sklearn.datasets import load iris data load iris df pd.dataframe data data 100 df target data.target 100 df 0 mean z檢驗 import stat...
曼 惠特尼U檢驗以及Python實現
曼 惠特尼u檢驗又稱 曼 惠特尼秩和檢驗 英文 mann whitney u test 是由h.b.mann和d.r.whitney於1947年提出的。它假設兩個樣本分別來自除了總體均值以外完全相同的兩個總體,目的是檢驗這兩個總體的均值是否有顯著的差別,簡單來說就是ab小樣本 樣本數不一定相等 分別...
IP報頭檢驗和演算法的python實現
ip校驗和字段是用來檢驗資料傳輸正確性的。在傳送資料時,為了計算 ip資料報的校驗和,按如下步驟 1 把ip 資料報的校驗和字段置為0 2 把首部看成以 16位為單位的數字組成,依次進行二進位制反碼求和 3 把得到的結果存入校驗和字段中。在接收方,要驗證資料的正確性,按如下步驟 1 把首部看成以 1...