2014-10-12 31 views
1

如果我有以下聯合分佈,其中最上面一行是Y的值,左邊第一列是X的值,那麼最有效/最乾淨的方式是什麼?去計算X和Y之間的協方差和相關性?我正在考慮加載每一行到一個新的變量,只是做了必要的計算,然後運行cov()和cor()函數,但我知道必須有更好的方法嗎?對R中聯合分佈進行計算的有效方法

謝謝!


| | 14 | 22 | 30 | 40 | 65 | 
|---|-----|-----|-----|-----|-----| 
| 1 | .02 | .05 | .10 | .03 | .01 | 
| 5 | .17 | .15 | .05 | .02 | .01 | 
| 8 | .02 | .03 | .15 | .10 | .09 | 

+0

看看圖書館(mvtnorm)和圖書館(sos) – KFB 2014-10-12 02:50:36

回答

1

你最應該使用的矩陣乘法得到的結果。以下可能不是大多數有效的方式,但它以直接方式使用公式。

# input data 
yvec <- c(14, 22, 30, 40, 65) 
xvec <- c(1, 5, 8) 
jp <- matrix(c(.02, .05, .10, .03, .01, 
       .17, .15, .05, .02, .01, 
       .02, .03, .15, .10, .09), 
       nrow=length(xvec), ncol=length(yvec), TRUE) 

Ex <- rowSums(jp) %*% xvec ## E(X) 
Ex2 <- rowSums(jp) %*% xvec^2 ## E(X^2) 
Vx <- Ex2 - (Ex)^2   ## Var(X) 
Ey <- colSums(jp) %*% yvec ## E(Y) 
Ey2 <- colSums(jp) %*% yvec^2 ## E(Y^2) 
Vy <- Ey2 - (Ey)^2   ## Var(Y) 
Exy <- xvec %*% jp %*% yvec ## E(XY) 

(Cxy <- Exy - Ex*Ey)   ## covariance 
(Rxy <- Cxy /sqrt(Vx * Vy)) ## correlation 
相關問題