我想在R中创建两个矩阵,以使矩阵x的元素对任何分布均应是随机的,然后我计算此2 * 2矩阵的colSums和rowSums,然后,我想从诸如此类的任何分布中生成矩阵y第一个子集2 * 2元素是随机的,然后第三行和列是行和列元素的总和,然后第四行和列是随机的,其方式是3:4的rowSums和colSums等于第一个矩阵x的colSums和row Sums。如何在R中使用这些属性创建两个随机矩阵?
x=matrix(c(100, 50, 0, 250), nrow=2)
csum1=colSums(x)
rsum1=rowSums(x)
y=matrix(c(15, 60, 75, 25,60, 25, 85, 215, 75, 85, 160, 240,
75, 165, 240, 0), ncol=4) 1
csum2=colSums(y[3:4,c(-3,-4)])
rsum2=rowSums(y[c(-3,-4),3:4])
> x
[,1] [,2]
[1,] 100 0
[2,] 50 250
> y
[,1] [,2] [,3] [,4]
[1,] 15 60 75 75
[2,] 60 25 85 165
[3,] 75 85 160 240
[4,] 25 215 240 0
我正在尝试使用来自正态分布的随机数。使用MASS包中的mvrnorm()进行相同操作。
library(MASS)
mu1 = 2 #mean for first distribution
mu2 = 3 #mean for second distribution
covm = matrix(c(2,1,1,1), ncol = 2) # covariance matrix
set.seed(1000)
x = mvrnorm(n = 2, mu = c(2,3), Sigma = covm)
colsumx = colSums(x)
rowsumx = rowSums(x)
set.seed(2000)
y = mvrnorm(n = 2, mu = c(2,3), Sigma = matrix(c(2,1,1,1), ncol = 2))
y = cbind(y, rowSums(y))
y = rbind(y, colSums(y))
y = rbind(y, c(colsumx - y[3,1:2], sum(colsumx) - y[3,3]))
y = cbind(y, c(rowsumx - y[1:2,3], sum(rowsumx) - y[3,3], 0))
# > x
# [,1] [,2]
# [1,] 2.626924 3.357580
# [2,] 3.867469 3.689616
# > y
# [,1] [,2] [,3] [,4]
# [1,] 3.46444151 3.258343 6.722785 -0.7382805
# [2,] 3.05148893 2.384737 5.436226 2.1208596
# [3,] 6.51593044 5.643080 12.159011 1.3825791
# [4,] -0.02153748 1.404117 1.382579 0.0000000
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句