'''協方差、相關矩陣、相關係數----評估兩組樣本相似度
---若相關係數越接近於1,表示兩組樣本正相關性越強;
---若相關係數越接近於-1,表示兩組樣本負相關性越強;
---若相關係數越接近於0,表示兩組樣本越不相關;
相關矩陣:相關係數矩陣,numpy提供了相關api,可以方便的獲取兩組資料的相關係數
---np.corrcoef(a,b):可以計算兩組樣本的相關係數,但是返回的是2*2的矩陣
'''import
matplotlib.pyplot as mp
import
numpy as np
import
datetime as dt
import
matplotlib.dates as md
#日期轉化函式
defdmy2ymd(dmy):
#把dmy格式的字串轉化成ymd格式的字串
dmy = str(dmy, encoding='
utf-8')
d = dt.datetime.strptime(dmy, '
%d-%m-%y')
d =d.date()
ymd = d.strftime('
%y-%m-%d')
return
ymddates, bhp_closing_prices =\
np.loadtxt(
'./da_data/bhp.csv
', delimiter='
,', usecols=(1, 6), unpack=true,
dtype='
m8[d], f8
', converters=) #
converters為轉換器,執行時先執行,其中1表示時間所在的列索引號
vale_closing_prices =\
np.loadtxt(
'./da_data/vale.csv
', delimiter='
,', usecols=(6,), unpack=true,
dtype='f8'
)#繪製**價折線圖
mp.figure('
cov', facecolor='
lightgray')
mp.title(
'cov
', fontsize=18)
mp.xlabel(
'date
', fontsize=12)
mp.ylabel(
'closing price
', fontsize=12)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':'
)#設定x軸的刻度定位器,使之更適合顯示日期資料
ax =mp.gca()
#以周一作為主刻度
ma_loc = md.weekdaylocator(byweekday=md.mo)
#次刻度,除周一外的日期
mi_loc =md.daylocator()
ax.xaxis.set_major_locator(ma_loc)
ax.xaxis.set_major_formatter(md.dateformatter(
'%y-%m-%d'))
ax.xaxis.set_minor_locator(mi_loc)
#日期資料型別轉換,更適合繪圖
dates =dates.astype(md.datetime.datetime)
#繪製兩支**的**曲線
mp.plot(dates, bhp_closing_prices, color='
dodgerblue
', label='
bhp'
)mp.plot(dates, vale_closing_prices, color='
orangered
', label='
vale')
#通過計算協方差,輸出兩支**的相似情況
bhp_mean =np.mean(bhp_closing_prices)
vale_mean =np.mean(vale_closing_prices)
bhp_dev = bhp_closing_prices -bhp_mean
vale_dev = vale_closing_prices -vale_mean
cov_ab = np.mean(bhp_dev *vale_dev)
print(cov_ab.round(2))
#輸出兩組樣本的相關係數
k = cov_ab / (np.std(bhp_closing_prices) *np.std(vale_closing_prices))
print(k.round(4))
#輸出相關矩陣
m =np.corrcoef(bhp_closing_prices,vale_closing_prices)
print(m.round(4))
#輸出協方差陣
covm =np.cov(bhp_closing_prices,vale_closing_prices)
print(covm.round(2))
mp.tight_layout()
mp.legend()
#自動格式化x軸日期的顯示格式(以最合適的方式顯示)
MatrixTransform之相關矩陣運算
最近在學習matrixtransform,發現對之前學的矩陣乘法竟然忘的一乾二淨,下面就是這個基礎知識的整理。通常的矩陣加法被定義在兩個相同大小的矩陣。兩個m n矩陣a和b的和,標記為a b,一樣是個m n矩陣,其內的各元素為其相對應元素相加後的值。例如 也可以做矩陣的減法,只要其大小相同的話。a ...
MATLAB矩陣分列自相關矩陣
假設有矩陣 a 1 2 3 4 5 6 為了求矩陣a的每一列和該列自身的自相關矩陣,並存在乙個資料結構中,可以採用三維矩陣,並迴圈計算。然而,這樣計算時,一方面三維矩陣在matlab中的操作並不如二維矩陣那麼方便,另一方面,迴圈計算的效率很低。為了方便計算,可以將每一列的自相關矩陣組合存到乙個大的二...
相關矩陣視覺化包ggcorrplot
基於ggplot2包以及corrplot包的相關矩陣視覺化包ggcorrplot,ggcorrplot包提供對相關矩陣重排序以及在相關圖中展示顯著性水平的方法,同時也能計算相關性p value library ggcorrplot 計算相關矩陣 cor 計算結果不提供p value 用ggcorrp...