我正在使用R中的数据集“ mtcars”。我有以下两列,我想一起模拟(双变量模拟)。
mpg hp
[1,] 21.0 110
[2,] 21.0 110
[3,] 22.8 93
[4,] 21.4 110
[5,] 18.7 175
[6,] 18.1 105
[7,] 14.3 245
[8,] 24.4 62
[9,] 22.8 95
[10,] 19.2 123
[11,] 17.8 123
[12,] 16.4 180
[13,] 17.3 180
[14,] 15.2 180
[15,] 10.4 205
[16,] 10.4 215
[17,] 14.7 230
[18,] 32.4 66
[19,] 30.4 52
[20,] 33.9 65
[21,] 21.5 97
[22,] 15.5 150
[23,] 15.2 150
[24,] 13.3 245
[25,] 19.2 175
[26,] 27.3 66
[27,] 26.0 91
[28,] 30.4 113
[29,] 15.8 264
[30,] 19.7 175
[31,] 15.0 335
[32,] 21.4 109
我尝试自己绘制每个图,发现它们都不是正态分布的,我也将它们相对绘制,它们也不呈正态分布。我是模拟数据的新手,到目前为止,我只知道用于模拟双变量数据的函数mvnorm
。
我的代码如下:
sigma=matrix(c(var(mtcars$hp),var(mtcars$mpg)*var(mtcars$hp)*cor(mtcars$mpg,mtcars$hp),var(mtcars$mpg)*var(mtcars$hp)*cor(mtcars$mpg,mtcars$hp),var(mtcars$mpg),2)
simulation = mvrnorm(length(mtcars$hp),c(mean(mtcars$hp),mean(mtcars$mpg)),matrix(c(4700,-132505.7,-132505.7,36.3241),2))
我收到一个错误:
Error in mvrnorm(length(mtcars$hp), c(mean(mtcars$hp), mean(mtcars$mpg)), matrix(c(4700, :
'Sigma' is not positive definite
老实说,我不确定如何以双变量方式模拟它们,任何建议都将不胜感激。
这样的东西?您的sigma函数缺少)
,可以用cov
代替。
library(MASS)
dd <- mtcars
mvrnorm(n = nrow(dd),
mu = c(mean(dd$hp), mean(dd$mpg)),
cov(dd[c("hp", "mpg")]))