【问题标题】:Estimating parameters of a mixture distribution of 2 normals given quantile values估计给定分位数值的 2 个法线的混合分布的参数
【发布时间】:2021-07-11 23:39:02
【问题描述】:

我有两个具有已知权重的法线的混合分布 0.60.4

我知道参数的真实值——在这种情况下,第一个是正常的,平均值 = 10030,sd = 2,第二个是正常的,平均值为 10000 和 sd = 1——但我希望能够估计它们来自分位数。

如果给我 23 个分位数

0.010 0.025 0.050 0.100 0.150 0.200 0.250 0.300 0.350 0.400 0.450 0.500 0.550 0.600 0.650
0.700 0.750 0.800 0.850 0.900 0.950 0.975 0.990

及其价值观

9998.040  9998.466  9998.850  9999.326  9999.681 10000.000 10000.319 10000.674 10001.150
10004.895 10027.234 10028.065 10028.651 10029.139 10029.579 10030.000 10030.421 10030.861
10031.349 10031.935 10032.766 10033.463 10034.256

在 R 中估计每个分布的均值和方差参数的最佳方法是什么?

我已经尝试使用带有 nls 函数的最小二乘进行估计

nls(quantiles~weights[1]*pnorm(rvals,mean1,sd1),start = list(mean1=startm1, sd1=startsd1, startm2, startsd2))

我也尝试过使用rootSolve::multiroot()进行根查找

我尝试一次解决一个参数或解决所有四个参数。到目前为止,获得良好估计的唯一希望是给出非常接近真实参数的起始值。

任何建议都有帮助。

谢谢

【问题讨论】:

  • 9998.04如何对应0.01?
  • 我认为nls 行不通,因为你的数据太完美了。请参阅?nls 的手册页:请勿在人工“零残差”数据上使用 nls

标签: r parameters quantile estimation mixture


【解决方案1】:

有几个 R 包可以执行混合分析。这是一个使用mixtools的例子:

library(mixtools)
mix <- normalmixEM(rvals)   # Using all default parameters
mix
# number of iterations= 5 
# $x
#  [1]  9998.040  9998.466  9998.850  9999.326  9999.681 10000.000 10000.319 10000.674 10001.150 10004.895 10027.234 10028.065 10028.651 10029.139 10029.579 10030.000 10030.421
# [18] 10030.861 10031.349 10031.935 10032.766 10033.463 10034.256
# 
# $lambda
# [1] 0.4347826 0.5652174
# 
# $mu
# [1] 10000.14 10030.59
# 
# $sigma
# [1] 1.836207 2.034118
# 
# $loglik
# [1] -63.6896
# 
# $posterior
#    . . . 
plot(mix, which=2)

您可以看到估计的权重 (lambda) 为 0.435 和 0.565,估计的均值 (mu) 为 10,000 和 10,030,标准差 (sigma) 为 1.836 和 2.034,这与您的预期值很接近。阅读包小插图并微调参数可能会让您更接近。

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 2020-06-03
    • 2019-06-28
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    相关资源
    最近更新 更多