我試圖自動化一個過程,在某些時候需要從截斷的多元正態圖中抽取樣本。也就是說,它是一個正態多元正態分佈(即高斯),但變量被限制爲一個長方體。我給出的輸入是完整多變量正態分佈的均值和協方差,但我需要在我的框中輸入樣本。到目前爲止,我只是拒絕了盒子外的樣品並根據需要重新採樣,但我開始發現我的過程有時會給我(a)大的協方差和(b)意味着接近於邊緣。這兩個事件與我的系統速度相悖。在SciPy中截斷多元正態?
所以我想要做的是首先正確地分配分配。谷歌搜索僅導致this discussion或truncnorm
distribution在scipy.stats
。前者不確定,後者似乎是一個變量。是否有任何原生多變量截斷正態?它會比拒絕樣品更好,還是我應該做更聰明的事情?
我打算開始研究自己的解決方案,它將未經截斷的高斯旋轉到它的主軸(用SVD分解或某物),使用截斷高斯的乘積來對分佈進行採樣,然後旋轉取樣返回,並根據需要拒絕/重新取樣。如果截斷採樣更有效,我認爲這應該更快地對期望的分佈進行採樣。