问题标签 [covariance-matrix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 获取 scipy 的 LSQUnivariateSpline 或 make_lsq_spline 的正态矩阵或方差-协方差矩阵(在给定权重的情况下)
我正在使用 scipy.interpolate 中的 LSQUnivariateSpline 或 make_lsq_spline 来获取给定的权重。有没有一种简单的方法不仅可以获得结果样条曲线,还可以获得样条曲线系数的方差 - 协方差矩阵?有没有一种简单的方法来获取在这些函数中生成并用于 LSQ 问题的法线矩阵?
python - Matplotlib - Python- GetDist 工具 - 通过调用两次 plot 函数重叠 2 个三角形图(三图):两者之间的可见优先级问题
在 python3 中,我使用工具GetDist
工具生成协方差矩阵的三元图时遇到了 2 个问题。
1)目前,我只需调用一次绘图函数(triangle_plot)就可以在同一个图形上绘制 2 个协方差矩阵。将要绘制的协方差矩阵列表指定为第一个输入足以具有每个矩阵的 (1 sigma,2 sigma) 轮廓。这里是由 2 个协方差矩阵生成的三元图示例(填充区域对应于 1 sigma 置信水平 (68%),阴影对应于 2 sigma CL (95%))。颜色标识每个矩阵(此处为红色和蓝色):
我的主要目标是我想通过这样的降序优先考虑重叠:
而在默认行为中,我具有以下降序优先级:
这里是生成上图的脚本:
最后,我只是希望 1 sigma 红色圆盘不要被 2 sigma 蓝色阴影所隐藏。
这是我想要的一个例子(注意,与我上面的三幅图相比,红色和蓝色之间存在反转):
不要在意黄色的轮廓。如您所见,1 sigma 蓝色磁盘的优先级高于 2 红色阴影 sigma 磁盘。这与我想要的行为完全相同。
在我上面的三幅图中,我尝试了很多使用 alpha 参数的方法,但是由于颜色混合在一起并且不再与图例(红色和蓝色)相对应,所以它一团糟。
2)鉴于我没有发现在源代码中更改此优先级的事实GetDist
,我尝试调用两次该函数triangle_plot
,每次调用一个矩阵。
但不幸的是,在 2 次调用之后,2 个地块没有重叠。仅出现一个颜色三图(最后一次调用的那个)。例如,如果我像这样连续两次调用(matrix 2
代表最大的红色椭圆和matrix1
最小的椭圆):
是否可以保留第一个三图(矩阵 2 以红色表示)并再次调用triangle_plot
函数以重叠,在第一个三图上,第二个三图(蓝色)?
实际上,这将允许我使用 Confidence 级别的标识符(CL:68% 或 95%),然后解决这个优先级问题。
不幸的是,当我调用 2 次 triangle_plot 函数时,重叠不起作用:只保留最后一次调用,第一次调用似乎已从图中删除。
在这种三元图上强制重叠(重叠轮廓但不重叠标签和刻度)的方法是什么?我们可以先验地认为这很简单,因为三图只是框/子图),但我不能仅仅设法执行这种重叠。我试图在两个电话之间插入:
但这不起作用。我认为这是因为我最后将图形保存在文件中:
更新 1
感谢史蒂夫。只是最后一个问题:水平和垂直 xticks 被轮廓和填充区域隐藏,我不知道后者是哪个zorder
。这里有 2 个例子说明了这个问题:
可以看到对应0.95的xtick被屏蔽了。
你可以看到右下角的 xtick 也被屏蔽了。
更新 2
完美的解决方案,@Stef
但它仍然是一个小问题:xticks 和 yticks 被轮廓隐藏。
默认情况下,z-order
xticks 的 of 由下式给出:
返回:0
所以,当我绘制我的轮廓时,我把triangle_plot
:
这样,我可以让轮廓不被轮廓隐藏。例如,如下所示:
这个解决方案不是很容易,因为我必须处理负值 ( [-1.7, -1.5, -0.1, -1.6, -1.4, -0.1]
)。
现在,多亏了@Stef
,我可以修改 的这个值 g.fig.axes[0].xaxis.get_major_ticks()[0].zorder
,例如等于3
:
但如果我在那之后做:
xticks 仍然被轮廓隐藏,而阈值设置为3
:我不明白这种行为:
可能有什么问题?
更新 3
在这里,我试图解决关于我想要在刻度上的优先级的问题的最后一件事,即使 xticks/yticks 出现在轮廓前面,而不是瞬间发生的相反。
zorder
如果我默认打印get_major_ticks()
and的值get_ticklines()[0])
,我得到:
==>
get_major_ticks()
和有什么区别get_ticklines()
?
您可以理解为什么我可以设法在所有轮廓前面设置刻度,即通过在给出的解决方案中设置负值@Stef
:
zorder2
我可以通过放置来修改上述内容:
但我不可能修改zorder1
(0
默认情况下)。
我怎么能改变这个0
值zorder1
(它引用get_ticklines()
)?
r - “x”熔岩错误中的无限值或缺失值
我确信我遗漏了一些明显的东西,但这是我第一次在统计类之外使用 SEM。
大局是我正在尝试对多元调节中介分析进行建模,直到今天早上我开始遇到此错误时才遇到问题:
我想我已经完成了我之前关于这个错误的问题的尽职调查,并且我推测我观察到的协方差矩阵是奇异的。我一直试图找出导致问题的确切原因,并最终将我的模型缩减为单个潜在变量,但我仍然遇到此错误。因此,我在两个观察到的变量上对其进行了测试,得到了相同的错误,并使用三个不同的观察到的变量进行了尝试:
我仍然遇到同样的错误。我应该提到,我还在一个数据集上测试了这些,只有具有完整数据的案例并得到了相同的错误。
PS:我知道这是极少数的引导重采样,但由于我在排除故障时一直在重新运行模型,所以我选择了它来保持运行。
以下是一些数据(来自省略不完整案例的数据框)
python - 如何计算图像数据集中 RGB 值的 3x3 协方差矩阵?
我需要计算图像数据集中 RGB 值的协方差矩阵,然后将 Cholesky 分解应用于最终结果。
RGB 值的协方差矩阵是一个 3x3 矩阵 M,其中 M_(i, i) 是通道 i 的方差,M_(i, j) 是通道 i 和 j 之间的协方差。
最终结果应该是这样的:
即使 Numpy 具有 Cov 功能,我也更愿意坚持使用 PyTorch 功能。
我试图在这里基于其他 cov 实现和克隆在 PyTorch 中重新创建 numpy Cov 函数:
数据集加载将是这样的:
目前我只是在试验用torch.randn(batch_size, 3, height, width)
.
编辑:
我试图在这里复制 Tensorflow 的 Lucid 中的矩阵,并在 distill.pub 上进行了一些解释。
第二次编辑:
为了使输出类似于示例之一,您必须这样做而不是使用 Cholesky:
然后可以使用生成的矩阵来执行颜色去相关,这对于可视化特征(DeepDream)很有用。我已经在我的项目中实现了它。
r - R:需要使用双向(阶乘)MANOVA 执行 boxM() 的示例 - 我收到错误消息
我正在尝试为双向 MANOVA 运行 Box 的协方差矩阵同质性 M 检验。
我从昨天下午开始搜索一个例子。我看到了许多将 boxM 与单向 MANOVA 结合使用的示例。在每种情况下,如果源还涵盖双向 MANOVA,则它们不包括演示在双向情况下运行 boxM 测试。我只需要一个工作示例。一旦我掌握了语法,我就可以让它工作。
biotools 包中的 boxM 函数表示它适用于一个分类因子(单向 MANOVA)。
https://www.rdocumentation.org/packages/biotools/versions/3.1/topics/boxM
heplots 包中的 boxM 函数表示它适用于一个或多个分类因素——https:
//www.rdocumentation.org/packages/heplots/versions/1.3-5/topics/boxM
-- 但是,当我尝试使用它时出现错误:“模型必须是完全交叉的公式。”
下面,我展示了单独使用任何一个因素时我都没有得到错误,但是任何交叉因素的安排都会产生这个错误。注意:在跨变量的情况下运行 Levene 的测试时,我没有收到此错误。
Response1、Response2 和 Response3 是连续的。
Factor1 有 2 个水平。Factor2 有 5 个级别。
hidden-markov-models - 当协方差矩阵值在 hmmlearn - GMMHMM 中都相同时,这意味着什么?
我正在与来自 hmm learn 的 GMMHMM 合作进行说话人识别。训练模型后,我发现协方差矩阵(covars_)中的所有值都具有相同的值。我初始化我的嗯如下
model = hmm.GMMHMM(n_components=5, n_mix = 3, n_iter=100, covariance_type='diag)
用从语音数据中提取的 MFCC 特征样本对其进行拟合。
model.fit(X,lengths)
打印出来后model.covars_
,我的输出看起来像下面打印出来的
[[[1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392] [1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392] [1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392 1.00120392]]
这是针对单个州的,但所有州的值完全相同。
是否有一个原因?
r - R 语言:3-d 数组数据的计算机协方差矩阵
如何在 iris 数据集(一个 3-d 数组数据集)上使用 r 中的 apply() 函数来计算Setosa、Versicolor 和Virginica,表示为 3 维数组。
这是数据集的前 6 行
python - Python中的不确定性包:使用给定的协方差矩阵来获取数据的不确定性
我相信我的问题很容易理解,但我想把它说得很清楚,因此这篇文章的长度。
我在下面总结的初始情况类似于本文中解释的情况(https://stats.stackexchange.com/questions/50830/can-i-convert-a-covariance-matrix-into-uncertainties- for-variables ),但特别关注 python 包不确定性如何处理这种情况。
情况如下:
我拥有一组与某些测量值的标称值相对应的数据点(通过标称值,我的意思是没有考虑任何不确定性的裸值)。
每个数据点都有其不确定性,这也提供给了我。更重要的是,由于测量中的一些系统性,不同的数据点不是独立的,而是相关的。因此,给了我一个具有非零非对角元素的整个协方差矩阵。
我想做的是以不确定性适当传播的方式对我的数据进行计算。最终,我希望在控制台中以标称值 +/- 不确定性的形式显示值。python 包“不确定性”似乎是正确的方法,但我不确定它为我的初始数据点提供的不确定性数字的含义。
我所期望的是,我的初始数据点的不确定性对应于“朴素”标准偏差,即我的协方差矩阵的对角线元素的平方根。这忽略了数据中的相关性,但以标称值 +/- 不确定性的形式显示相关结果无论如何都不会显示相关性,只要后者在进一步计算中被正确考虑,这应该不是问题。
但是,包装上显示的另一个数字是不确定性,我不知道它来自哪里。软件包文档几乎没有帮助。我想知道我是否可能滥用该软件包。
谁能帮我了解一下情况?非常感谢 !!
这是一个最小的可重现示例:
neural-network - 这是计算二维特征图协方差矩阵的正确方法吗?
在神经网络中,我有一些 2D 特征图,其值介于 0 和 1 之间。对于这些图,我想根据每个坐标的值计算协方差矩阵。不幸的是,pytorch 没有.cov()
像 numpy 那样的功能。所以我改写了以下函数:
这是正确的方法吗?
编辑:
这是与numpy函数的比较:
显然,我的值太小了 2 倍。为什么会这样?
Edit2:啊,我想通了。它必须除以(h*w/2 - 1)
:) 然后值匹配。
python - 在numpy中生成随机二进制数组,具有由索引给出的不同概率
我有一个对称矩阵 A,其中A.shape = (30, 30)
, 的每一行都A
与 3 个唯一标签中的一个相关联[0, 1, 2]
。
我有另一个矩阵 M:
我想X
用 shape制作一个新数组(30, 3)
。调用此数组的每一行Xi
及其相关标签k
(k 为 0、1 或 2)。
我希望 的ith
元素为Xi
1,概率为 m1 ifi == k
和 m2 if i != k
。
我编写了一些使用嵌套 for 循环的工作代码来执行此操作,但我想使用纯 numpy 执行此操作。有什么建议么?
这是当前效率低下的实现,跳过了我定义A
、labels
和的部分M
: