gpt4 book ai didi

r - 在R中绘制数据集的概率密度/质量函数

转载 作者:行者123 更新时间:2023-12-03 12:39:23 24 4
gpt4 key购买 nike

我有数据集,我想通过R中的概率密度函数或概率质量函数分析此数据,我使用了密度函数,但没有给我概率。

我的数据是这样的:

"step","Time","energy"
1, 22469 , 392.96E-03
2, 22547 , 394.82E-03
3, 22828,400.72E-03
4, 21765, 383.51E-03
5, 21516, 379.85E-03
6, 21453, 379.89E-03
7, 22156, 387.47E-03
8, 21844, 384.09E-03
9 , 21250, 376.14E-03
10, 21703, 380.83E-03

我想将PDF / PMF转换为能量 vector ,我们考虑的数据本质上是离散的,所以我没有用于分发数据的特殊类型。

最佳答案

对于我来说,您的数据看起来很离散。在处理连续数据时期望概率是绝对错误的。 density()为您提供了一个经验密度函数,它近似于真实密度函数。为了证明它是正确的密度,我们计算曲线下的面积:

energy <- rnorm(100)
dens <- density(energy)
sum(dens$y)*diff(dens$x[1:2])
[1] 1.000952

给定一些舍入错误。曲线下的面积总计为1,因此 density()的结果满足了PDF的要求。

使用 probability=TRUEhist选项或 density()函数(或同时使用两者)

例如:
hist(energy,probability=TRUE)
lines(density(energy),col="red")



如果您确实需要离散变量的概率,请使用:
 x <- sample(letters[1:4],1000,replace=TRUE)
prop.table(table(x))
x
a b c d
0.244 0.262 0.275 0.219

编辑:说明为什么天真的 count(x)/sum(count(x))不是解决方案。确实,曲线下的面积确实不是因为bin的值总和为1。为此,您必须乘以“箱”的宽度。采取正态分布,我们可以使用 dnorm()来计算PDF。以下代码构造一个正态分布,计算密度,并与朴素的解决方案进行比较:
x <- sort(rnorm(100,0,0.5))
h <- hist(x,plot=FALSE)
dens1 <- h$counts/sum(h$counts)
dens2 <- dnorm(x,0,0.5)

hist(x,probability=TRUE,breaks="fd",ylim=c(0,1))
lines(h$mids,dens1,col="red")
lines(x,dens2,col="darkgreen")

给出:



累积分布函数

如果@Iterator是正确的,则从密度构造累积分布函数相当容易。 CDF是PDF的组成部分。在离散值的情况下,仅是概率之和。对于连续值,我们可以使用以下事实:估计经验密度的间隔相等,并计算:
cdf <- cumsum(dens$y * diff(dens$x[1:2]))
cdf <- cdf / max(cdf) # to correct for the rounding errors
plot(dens$x,cdf,type="l")

给出:

关于r - 在R中绘制数据集的概率密度/质量函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6973579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com