下面的代碼是this artical的等效R代碼,用matlab實例。您可以使用應用pnorm()
和cut()
到列得到相關的離散隨機變量
# parameters
nrows <- 10
# The desired correlation matrix
(M <- matrix(c(1.0,0.6,0.3,
0.6,1.0,0.5,
0.3,0.5,1.0),byrow=T,ncol=3))
#> [,1] [,2] [,3]
#> [1,] 1.0 0.6 0.3
#> [2,] 0.6 1.0 0.5
#> [3,] 0.3 0.5 1.0
(U = chol(M))
#> [,1] [,2] [,3]
#> [1,] 1 0.6 0.3000000
#> [2,] 0 0.8 0.4000000
#> [3,] 0 0.0 0.8660254
# generate a random matrix where columns have the desired correlatoin structure
matrix(rnorm(nrows*ncol(M)),ncol=ncol(M))%*%U
#> -0.4326 -0.4089 0.0505
#> -1.6656 -0.4187 -1.3665
#> 0.1253 -0.3955 0.4209
#> 0.2877 1.9192 2.3656
#> -1.1465 -0.7970 -0.9976
#> 1.1909 0.8057 1.1459
#> 1.1892 1.5669 1.8695
#> -0.0376 0.0248 -1.3678
#> 0.3273 0.1199 -1.1880
#> 0.1746 -0.5611 0.2141
# check that this works
cor(matrix(rnorm(1000000*ncol(M)),ncol=ncol(M))%*%U)
#> [,1] [,2] [,3]
#> [1,] 1.0000000 0.5988445 0.2987633
#> [2,] 0.5988445 1.0000000 0.4992603
#> [3,] 0.2987633 0.4992603 1.0000000
你要正確對待A和B作爲連續計算相關性時?或者你想用什麼樣的相關度量來處理離散/分類數據?你是否假設序數據? – MrFlick
只是假設皮爾遜的相關性。 –
只需自己定義聯合概率矩陣即可。從那裏,抽樣非常簡單。 – Frank