如何最小化R中二元高斯模型的加权平方和以估计模型参数?

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

我想估计以下二元高斯模型的 7 个参数:

所以我有以下7个参数来估计,以便高斯模型最适合我的数据X:

为了将高斯二元模型拟合到我的数据 X,我想使用的方法如下:

因为模型有 7 个参数需要估计,并且当输入“i”和“pi”很大时,我的数据集没有太多观测值,这可能会导致估计不精确。

因此,出于估计目的,我想通过将“i”/“pi”域划分为具有相同边界的大小相等的正方形(-2%、-1%、0%、1%)来创建 10 x 10 网格, 2%, 3%, 4%, 5%, 6%) 沿两个维度。

然后我想通过使用这些边界所描绘的每个范围内的 X、“i”、“pi”的中值来最小化加权平方和:

权重与观测值数量的平方根成正比,与 X 的标准差成反比,两者都是在每个方案的范围内测量的。 这种权重的选择迫使优化更加关注网格上具有更多观测值和较小变化性的区域。

我不知道如何在 R 中编写此优化程序,有没有任何包可以做到这一点?

r optimization parameters gaussian estimation
1个回答
0
投票

如果 $f(i, \pi)$ 是一个概率密度函数,它必须积分到

1
,因此
a=0
,否则积分到无穷大,那么方程将匹配 多元正态分布

方程中的矩阵是数据协方差的两倍,$\mu_i$ 和 $\mu_\pi$ 是数据的平均值。这里我生成一些带有预设参数的随机高斯数据

original = matrix(rnorm(200), 2, 100)
mu = matrix(c(3,5), 2, 1)
sigma = matrix(c(4, -3, -3, 10), 2, 2)
X = sigma %*% original + rep(mu, ncol(original))

print('Reference means')
print(mu)
print('Reference covariance')
print(sigma %*% t(sigma))

并从数据中恢复平均值和协方差。

mu_ = rowMeans(X)
mu_
sigma2_ = (X - rep(mu_, ncol(X))) %*% t(X - rep(mu_, ncol(X))) / ncol(X)
sigma2_

print('Empirical means')
print(mu_)
print('Empirical covariance')
print(sigma2_)

将您的方程与标准二元正态分布进行比较

a = 0
b = (2*pi)*sqrt(det(sigma2_))
mu_i = mu_[1]
mu_pi = mu_[2]
sigma_i = 2*sqrt(sigma2_[1,1])
sigma_pi = 2*sqrt(sigma2_[2,2])
rho = 2 * sigma2_[1,2] / (sigma_i * sigma_pi)
© www.soinside.com 2019 - 2024. All rights reserved.