R 估计模拟数据上两个x值范围内的概率密度
我想评估我模拟的数据的概率密度R 估计模拟数据上两个x值范围内的概率密度,r,normal-distribution,probability-density,R,Normal Distribution,Probability Density,我想评估我模拟的数据的概率密度 我知道,如果我只是想在正态分布上找到单个x值的概率密度,我可以用以下方式使用dnorm(): dist_mean计算连续概率函数中单个值的概率没有意义,定义为零,但可以计算相对概率。你对random\u vals的反应不是求和为一,但不是说prob\u density\u\u val大于一 Glen当然是正确的,因为ecdf()是进行非参数估计的方法,但是如果你期望正态分布,你也可以进行参数估计 dist_mean <- 10 dist_sd <- 0
dnorm()
:dist_mean计算连续概率函数中单个值的概率没有意义,定义为零,但可以计算相对概率。你对random\u vals
的反应不是求和为一,但不是说prob\u density\u\u val
大于一
Glen当然是正确的,因为ecdf()
是进行非参数估计的方法,但是如果你期望正态分布,你也可以进行参数估计
dist_mean <- 10
dist_sd <- 0.2
a <- 9.7
b <- 10.2
set.seed(123)
r <- rnorm(1e4, dist_mean, dist_sd)
# population
pnorm(b, dist_mean, dist_sd) - pnorm(a, dist_mean, dist_sd)
# [1] 0.7745375
# parametric estimate
pnorm(b, mean(r), sd(r)) - pnorm(a, mean(r), sd(r))
# [1] 0.7753985
# nonparametric estimate
ecdfun <- ecdf(r)
ecdfun(b) - ecdfun(a)
# [1] 0.7754
dist_mean您可以使用函数density
和approxfun
获得概率密度函数
DensityFunction = approxfun(density(random_vals), rule=2)
DensityFunction(9.7)
[1] 0.6410087
plot(DensityFunction, xlim=c(9,11))
您可以使用integrate
AreaUnderCurve = function(lower, upper) {
integrate(DensityFunction, lower=lower, upper=upper) }
AreaUnderCurve(10,11)
0.5006116 with absolute error < 6.4e-05
AreaUnderCurve(9.5,10.5)
0.9882601 with absolute error < 0.00011
AreaUnderCurve=功能(下部、上部){
积分(密度函数,下=下,上=上)}
欠曲率区域(10,11)
0.5006116,绝对误差<6.4e-05
欠曲率区域(9.5,10.5)
0.9882601,绝对误差<0.00011
你还问:
概率密度对点值的影响有多大
(x=9.9)为1.76,但范围为9.7
pdf(1.76)的值是曲线的高度。范围的值是曲线下的面积。由于间隔的宽度为0.5,因此曲线下的面积小于高度也就不足为奇了。在你的第一句话中,不应该将“连续概率函数”改为“离散”吗?@jludewig:Ah,yes@AkselA谢谢没错,我完全忽略了单个值上的p>1。然而,为什么dnorm
给了我一个大于1的值,而不是≈ 0?好的,我想我明白了dnorm
只是给出给定x的函数值,而不是该x的曲线下面积(对于单个值来说,这基本上是零)。多亏了你,我理解了密度(val x的曲线高度)和概率(某个范围的曲线下面积)之间的微妙关系。然而,这可能超出了本页的范围——我们能不能也计算一个范围的密度,而不是一个范围的概率(这是你的答案)?i、 我们可以测量两个x值之间的曲线来获得范围密度吗?这有意义吗?你可以通过计算Area UnderCurve(range)/width(range)