3

这可能是关于 R 中“dnorm”函数的一些基本/基本问题。假设我通过 z 转换创建了一些 z 分数,并尝试从“dnorm”中得到总和。

 data=c(232323,4444,22,2220929,22323,13)
 z=(data-mean(data))/sd(data)
 result=dnorm(z,0,1)
 sum(result)
 [1] 1.879131

如上所述,“dnorm”之和既不是 1 也不是 0。

然后假设即使在我的 z 变换中我也使用零均值和一个标准差。

 data=c(232323,4444,22,2220929,22323,13)
 z=(data-0)/1
 result=dnorm(z,0,1)
 sum(result)
 [1] 7.998828e-38

我仍然没有得到 0 或 1 的总和。

如果我的目的是使概率总和等于 1,因为我需要进一步使用,您建议使用什么方法使用“dnorm”甚至使用其他 PDF 函数?

4

1 回答 1

5

dnorm返回在正态概率密度函数中评估的值。它不返回概率。您认为在密度函数中评估的转换数据的总和应该等于 1 或 0,您的理由是什么?您正在创建一个随机变量,它没有理由完全等同于零或一。

积分dnorm产生一个概率。dnorm对随机变量的整个支持度进行积分得出概率为 1:

integrate(dnorm, -Inf, Inf)
#1 with absolute error < 9.4e-05 

事实上,在概念上对所有人都integrate(dnorm, -Inf, x)相等。pnorm(x)x

编辑:根据您的评论。

这同样适用于其他连续概率分布 (PDF):

integrate(dexp, 0, Inf, rate = 57)
1 with absolute error < 1.3e-05

请注意,...参数 from?integrate被传递给被积函数。

还记得泊松分布,比如说,是一个离散的概率分布,因此整合它(在传统意义上)是没有意义的。离散概率分布具有概率质量函数 (PMF),而不是实际返回概率的 PDF。在这种情况下,它的总和应该为 1。

考虑:

dpois(0.5, lambda = 2)
#[1] 0
#Warning message:
#In dpois(0.5, lambda = 2) : non-integer x = 0.500000

从 0 到“非常”大的数字求和(即超过泊松分布的支持):

sum(dpois(0:1000000, lambda = 2)) 
#[1] 1
于 2018-09-30T09:46:38.937 回答