- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想生成一个具有 N(0, C)
分布的随机 vector ,即平均值为 0 且给定协方差矩阵 C
的正态分布。
我正在使用MultivariateNormalDistribution
来自 Apache Commons:
double[] means = new double[2];
double[][] C = {
{ 5.1455479254351755, -2.0050191427617987 },
{ -2.0050191427617987, 0.7812776833676598 } };
new MultivariateNormalDistribution(new JDKRandomGenerator(), means, C);
并得到一个异常矩阵是奇异的
:
Exception in thread "main" org.apache.commons.math3.linear.SingularMatrixException: matrix is singular
at org.apache.commons.math3.linear.EigenDecomposition$Solver.getInverse(EigenDecomposition.java:533)
at org.apache.commons.math3.distribution.MultivariateNormalDistribution.<init>(MultivariateNormalDistribution.java:125)
at javabbob.Experiment.main(Experiment.java:52)
我已阅读 here这意味着,矩阵是不可逆的。好的。
但是,我想要的只是一个具有 N(0, C)
分布的随机 vector 。我可以使用任何方法。
在 Multivariate normal distribution Wikipedia article上面写着:
The covariance matrix is allowed to be singular (in which case the corresponding distribution has no density). This case arises frequently in statistics (...)
如何在 Java 中生成这样的随机 vector ?
<小时/>我也尝试过CholeskyDecomposition
使用相同的 C
数组:
RealMatrix covMatrix = new Array2DRowRealMatrix(C);
CholeskyDecomposition choleskyDecomposition = new CholeskyDecomposition(covMatrix);
它也不起作用,抛出NonPositiveDefiniteMatrixException
:
Exception in thread "main" org.apache.commons.math3.linear.NonPositiveDefiniteMatrixException: 0 is smaller than, or equal to, the minimum (0): not positive definite matrix: value 0 at index 1
at org.apache.commons.math3.linear.CholeskyDecomposition.<init>(CholeskyDecomposition.java:142)
at org.apache.commons.math3.linear.CholeskyDecomposition.<init>(CholeskyDecomposition.java:85)
at javabbob.Experiment.main(Experiment.java:59)
<小时/>
对于有类似问题的人:
最佳答案
在线矩阵计算器 bluebit.gr给出 C
矩阵的下三角 Cholesky 分解为:
L = { { 2.268380 0.000000},
{-0.883899 0.000000} };
这意味着您应该能够生成单个标准法线 Z 并进行变换以获得两个相关法线,即 X1 = 2.268380*Z 和 X2 = -0.883899*Z。形式上它是 X2 = -0.883899*Z1 + 0.000000*Z2,但由于分解中右下角的条目为零您不需要第二个独立的 Z。如果它们不为零,请添加合适的均值。
附录
抱歉,我以为您正在寻找此特定问题的解决方案。一般来说,使用Cholesky decomposition分解方差/协方差矩阵C得到下三角“根”L。如果 M 是均值 vector ,Z 是独立法线 vector ,则 X = M + < strong>LZ 将是具有所需均值和方差/协方差结构的相关法线 vector 。我不熟悉 Java,所以你必须找到或实现一个合适的矩阵库。快速网络搜索显示 Apache Commons和 NIST Java 中有 Cholesky 分解实现。
关于java - MultivariateNormalDistribution 抛出 "matrix is singular",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622601/
当我使用 Singularity 版本 3.2.0 从沙箱文件夹创建 .sif 图像时,在另一台机器上运行 Singularity 版本 2.6 时收到以下错误: ERROR : Unknown i
我在 R 中有这两个列表: y=c(420.5568, 693.6305, 420.5568, 946.9677, 499.1046, 946.9677) x=c(32, 29, 32, 27, 31
当我使用 anova_test() 函数(来自 rstatix 包)做双向重复测量方差分析时,出现错误: lm.fit(x, y, offset = offset, singular.ok = sin
我一直在尝试对数据集进行 2-Way 重复测量测试,年份和疫苗类型是自变量,覆盖率是因变量。我用代码运行它: sat = anova_test( data=SA, dv = coverage, w
我有一个为我制作的奇点容器(用于在 comet GPU 节点上运行 tensorflow),但我需要为我的目的修改 keras 安装。 我知道 .simg 文件不可编辑(并且可写的 .img 格式已弃
我正在解决简单的优化问题。该数据集有 26 列和 3000 多行。 源代码看起来像 Means <- colMeans(Returns) Sigma <- cov(Returns) invSi
我的程序应该是 编写一个程序,根据以下规则接受名词并形成其复数形式: 如果名词以“y”结尾,则删除“y”并添加“ies”。 如果名词以“s”、“c”、“ch”或“sh”结尾,请添加“es”。 在所有其
我正在为我的一个应用程序使用 Lombok。 我有一个用注释 @Builder 声明的类。这些字段用 @SerializedName("xxxxx") 注释以支持 Gson。 但是,其中一个字段是 L
我们在映射中使用了 minimal_english 词干过滤器。这是为了确保只有单数和复数是可搜索的,而不是相似的词。例如。 Test 和 Tests 应该在输入词条时可搜索 - Test - 但是
我有一个图像矩阵。每行 2 个图像,一个宽度为 1/3,另一个宽度为 2/3,两者之间有一个装订线。所有图像都具有完全相同的高度。但是,如果在某些视口(viewport)处减小视口(viewport)
在Singularity的应用中,有几个方面我还有些疑惑。例如,我想知道一件事。在下面的要点中,我设置了一些简单的元素。底部的蓝色是页脚,中间的黄色是内容,上面的三个单元格(红色、绿色紫红色 - 由
我的代码有错误,希望你能帮助我!:(当我粘贴代码时会发生一些奇怪的事情(并非所有代码都像代码一样编写)但我们开始吧: 我想要 linalg.solve(A,Res) 。第一个(A)有 10 行和 10
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
当我在 Singularity 容器中运行特定的 ImageMagick 转换命令(以生成动画 GIF)时,它始终出现内存错误: convert-im6.q16: cache resources ex
关闭。这个问题是 opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便可以通过 editing this post 的事实和引用来回答它。 已关闭 9 年前。 Impro
我想生成一个具有 N(0, C) 分布的随机 vector ,即平均值为 0 且给定协方差矩阵 C 的正态分布。 我正在使用MultivariateNormalDistribution来自 Apach
我偶尔会看到错误消息: CGAffineTransformInvert: singular matrix 在 Xcode 的日志区域。当我在 UIWebView 中捏合以调整网站大小时,这似乎会发生(
我正在尝试在 View 上制作此动画,将其缩放到 (0,0),然后使用 CGRectMake 方法移动此帧并将其缩放回 (1,1)。所以我用下面的代码来做到这一点 -(void)startWalkAn
下面的调用: rbf = Rbf(points[0], points[1], values,epsilon=2) 导致错误: LinAlgError: singular matrix 具有以下值: I
错误 Numpy error: Matrix is singular 具体是什么意思(使用 linalg.solve 函数时)?我在 Google 上查看过,但找不到任何可以说明此错误发生时间的信息。
我是一名优秀的程序员,十分优秀!