我试图自动化一个过程,在某些时候需要从截断的多元正态图中抽取样本。也就是说,它是一个正态多元正态分布(即高斯),但变量被限制为一个长方体。我给出的输入是完整多变量正态分布的均值和协方差,但我需要在我的框中输入样本。到目前为止,我只是拒绝了盒子外的样品并根据需要重新采样,但我开始发现我的过程有时会给我(a)大的协方差和(b)意味着接近于边缘。这两个事件与我的系统速度相悖。在SciPy中截断多元正态?
所以我想要做的是首先正确地分配分配。谷歌搜索仅导致this discussion或truncnorm
distribution在scipy.stats
。前者不确定,后者似乎是一个变量。是否有任何原生多变量截断正态?它会比拒绝样品更好,还是我应该做更聪明的事情?
我打算开始研究自己的解决方案,它将未经截断的高斯旋转到它的主轴(用SVD分解或某物),使用截断高斯的乘积来对分布进行采样,然后旋转取样返回,并根据需要拒绝/重新取样。如果截断采样更有效,我认为这应该更快地对期望的分布进行采样。