簡體   English   中英

如何使用大熊貓創建多元正態分布的相關矩陣?

[英]how to use pandas to create correlation matrix of multivariate normal distribution?

在R中,我們可以這樣創建相關矩陣:

makecov <- function(rho,n) {
    m <- matrix(nrow=n,ncol=n)
    m <- ifelse(row(m)==col(m),1,rho)
    return(m)
}

我們知道相關性,結果將是:

makecov(0.2,3)
#     [,1] [,2] [,3]
#[1,]  1.0  0.2  0.2
#[2,]  0.2  1.0  0.2
#[3,]  0.2  0.2  1.0

但是在大熊貓中,我們如何有效地創建相同的矩陣? 這是我的解決方案:

def makecov(rho,n):
    m=[rho/2]*n*n
    m=np.array(m).reshape([n,n])
    return m+m.T-np.diag([rho]*n)+np.diag([1]*n)

結果將是:

In [21]:makecov(0.2,3)
Out[21]: 
array([[ 1. ,  0.2,  0.2],
       [ 0.2,  1. ,  0.2],
       [ 0.2,  0.2,  1. ]])

還有一些更優雅的方法可以對付大熊貓嗎?

我建議您改用numpy的協方差矩陣方法: http : //docs.scipy.org/doc/numpy/reference/generation/numpy.cov.html

根據我的經驗,熊貓最好用於數據清理之類的東西。 我通常讓numpy做繁重的統計工作。

看起來你可以做

def makecov(rho, n):
    out = numpy.eye(n) + rho
    numpy.fill_diagonal(out, 1)
    return out

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM