评估沿直线的二维高斯分布

问题描述 投票:0回答:1

我有一个二维多变量高斯分布在某处被一条直线相交。我现在想沿着这条线评估二维高斯。如果我没记错的话,这应该是一个简单的 1d 高斯坐标(我们称之为 s)沿直线移动?

我将如何计算这个? 具体来说,我在 Python/Numpy 中工作。一般来说,我正在研究卡尔曼滤波器。

感谢您的帮助!

python numpy statistics gaussian kalman-filter
1个回答
0
投票

要获得二元正态分布的概率密度函数的限制,您可以使用它的定义

scipy.stats

import numpy as np
from scipy.stats import multivariate_normal as BN
import plotly.graph_objects as go

meanv=[0.5, -0.2]
Sigma=np.array([[1.5, 0.6], [0.6, 1.75]])
rv = BN(meanv, Sigma)
x = np.linspace(meanv[0]-3*np.sqrt(Sigma[0,0]), meanv[0]+3*np.sqrt(Sigma[0,0]), 100)
y= np.linspace(meanv[1]-3*np.sqrt(Sigma[1,1]), meanv[1]+3*np.sqrt(Sigma[1,1]), 100)
xv, yv = np.meshgrid(x,y)
pos = np.dstack((xv, yv))
z= rv.pdf(pos)

fig=go.Figure(go.Surface(x=x, y=y, z=z, colorscale=[[0, '#90ee90'], [1.0, '#90ee90']],
                                                    showscale=False))
X= np.linspace(-2, 2, 150)
Y= 2*X-0.7
Z=rv.pdf(np.dstack((X,Y)))  #Restriction of pdf to the given line
fig.add_scatter3d(x=X, y=Y, z=Z+0.001, mode="lines", line_width=2, line_color="black")
fig.update_layout(width=600, height=500, font_size=11, scene_camera_eye=dict(x=-1.6, y=1.6, z=1))

请注意,您必须提供二元正态分布的均值向量及其协方差矩阵 Sigma。

rv = BN(meanv, Sigma)
定义了一个具有给定均值和协方差分布的随机变量,rv.pdf是它的概率密度函数。 该线被认为包含在平面 z=0 内,因此它与 pdf 不太接近零的域相交。

© www.soinside.com 2019 - 2024. All rights reserved.