现在在做一个程序,要用到dmvnorm(x,n,Sigma)这个函数,要求Sigma是对称矩阵,但是遇到了这种情况
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 6.6374143 4.962369 -2.3153074 -0.5919525 -4.0075043 -1.5443823 -2.0129990 -1.3462416 -2.8998950 -1.7886974 23.881760
[2,] 4.9623694 4.442595 -2.0299875 -0.5298630 -3.5390446 -1.3691175 -1.8021512 -1.2052321 -2.5961510 -1.6013436 20.870953
[3,] -2.3153074 -2.029988 1.4122368 0.2421631 1.6446589 0.6332350 0.8234701 0.5507155 1.1862782 0.7317136 -9.824725
[4,] -0.5919525 -0.529863 0.2421631 0.7098677 0.4221533 0.1633084 0.2149404 0.1437466 0.3096398 0.1909903 -2.489836
[5,] -4.0075043 -3.539045 1.6446589 0.4221533 3.1927357 1.0993468 1.4356233 0.9601077 2.0681366 1.2756567 -16.953745
[6,] -1.5443823 -1.369118 0.6332350 0.1633084 1.0993468 1.3881403 0.5553863 0.3714280 0.8000809 0.4935015 -6.522841
[7,] -2.0129990 -1.802151 0.8234701 0.2149404 1.4356234 0.5553863 0.7310477 0.4889058 1.0531359 0.6495895 -8.466360
[8,] -1.3462416 -1.205232 0.5507155 0.1437466 0.9601077 0.3714280 0.4889058 0.3269675 0.7043100 0.4344286 -5.662083
[9,] -2.8998950 -2.596151 1.1862782 0.3096398 2.0681366 0.8000809 1.0531359 0.7043100 1.5171312 0.9357885 -12.196460
[10,] -1.7886974 -1.601344 0.7317136 0.1909903 1.2756567 0.4935015 0.6495895 0.4344286 0.9357886 0.5772080 -7.522983
[11,] 23.8817607 20.870953 -9.8247256 -2.4898359 -16.9538073 -6.5228405 -8.4663604 -5.6620825 -12.1965070 -7.5229826 324.791770
其实这个矩阵是对称的,只不过由于小数点后的位数不同,导致了R认为它是不对称的。因为dmvnorm这个函数是在一个包里调用的,所以不能用round(Sigma,5)等方法强制小数点后位数,请问应该怎么解决?我感觉是不是应该修改全局参数?比如options(digits=5),但这样也不行。


雷达卡




京公网安备 11010802022788号







