感谢上一篇文章的精彩答案,我使用了以下链接中提供的程序,使我的数据符合三种正态分布:
在拟合数据后,三个正态分布的参数如下:
pi mu sigma
1 0.5552 -0.4868 2.044
2 0.2739 8.3846 1.399
3 0.1709 12.5317 1.036
要检查我的数据(x)和模型分布(ee)之间的协议,我执行了以下步骤:
e1 <- rnorm(5552, mean=-0.4868, sd=2.044)
e2 <- rnorm(2739, mean=8.3846, sd=1.399)
e3 <- rnorm(1709, mean=12.5317, sd=1.036)
ee <- c(e1,e2,e3)
qqplot(x, ee)
我得到了qqplot如下:(http://i.stack.imgur.com/3favy.png)
看起来不错,所以,我想计算这个模型群体获得等于或小于2.0的值的p值。你能不能教我如何用R?
来计算这个p值模型群ee的密度图附于此处(http://i.stack.imgur.com/pExhF.png)。
答案 0 :(得分:1)
假设您的参数位于数据框param
中(也许这适用于带有命名列的矩阵)。
对“左2”的个人贡献:
> probs <- with(param, pi*pnorm(2, mu, sigma) )
> probs
[1] 4.930888e-01 6.883473e-07 2.409615e-25
总数:
> prob <- with(param, sum(pi*pnorm(2, mu, sigma)) )
> prob
[1] 0.4930895
只是看看输出你会猜到几乎所有的贡献都来自第一个组件,因为其他两个的方法是远在右边。第一个贡献的价值主要是pi(比例)估计,因为它的大部分质量是“2的左边”。
答案 1 :(得分:0)
我认为你只想用类似的东西计算尾区概率。
> sum(ee <= 2) / length(ee)
> [1] 0.4936