楼主: sty1882
4857 4

[问答] R,已知连续正态分布求离散直方图以及对应概率 [推广有奖]

  • 4关注
  • 0粉丝

硕士生

32%

还不是VIP/贵宾

-

威望
0
论坛币
2548 个
通用积分
2.8500
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
422 点
帖子
34
精华
0
在线时间
258 小时
注册时间
2009-5-4
最后登录
2025-4-10

楼主
sty1882 发表于 2014-9-18 03:53:07 |AI写论文
10论坛币
如题假如已经知道了一个分布,如何求出其对应分成N份离散的直方图的面积(即概率),
我自己试了一下,一开始的着眼点不是求直方图而是直接求间距之间的面积,但有个问题就是两个尾部的面积偏大(甚至大于均值附近的面积)因为包含了比较长的延伸。

因此现在想改为直方图求解的逻辑,但是不知道如何执行。下面也附上我直接求间距面积的代码。简单的说就是想求如图所示的直方图上每一条的面积,最后还能保证总体面积是100%,谢谢!
MEAN=10
   SD=3
   n=2*SD
   MEAN_SD =MEAN-SD
   for (i in 0:n)
   {
   Result <- pnorm(MEAN_SD+(i+0.5), mean=MEAN, sd =SD)-pnorm(MEAN_SD+(i-0.5), mean=MEAN, sd =SD)
   cat('section',i,':', Result,'\n')
   }
  section1 <- pnorm(MEAN_SD+0.5, mean=MEAN, sd =SD)
  section1
  Q100 <- qnorm(1,mean=MEAN, sd=SD)
  sectionN <- pnorm(Q100, mean=MEAN, sd =SD)-pnorm(MEAN+SD-0.5, mean=MEAN, sd =SD)
  sectionN

IMG_0450.JPG


关键词:正态分布 直方图 Result RESUL mean 正态分布 直方图 着眼点 如图所示 如何

沙发
nuomin 发表于 2014-9-18 10:02:33
用table函数试试吧

藤椅
sty1882 发表于 2014-9-18 22:32:22
nuomin 发表于 2014-9-18 10:02
用table函数试试吧
愿闻其详,之前没接触过table函数,自己查看了一下,似乎是可以计算区间的概率,但是这和我自己上面写的程序的作用最终是一样的,还是会出现尾部的比较大的问题。

以我的例子看,均值为10,标准差为3, 就是求 7 8 9 10 11 12 13对应的概率,然后让他们的概率和为100%。

板凳
sty1882 发表于 2014-9-18 22:39:25
发重了,不过似乎用我上面的方法就解决了,之前如果标准差是3的话,不应该在13停止,而是19(第三个标准差)。。。谢谢!

报纸
daishen 发表于 2014-9-20 09:14:30
好像不用那么麻烦。
library(data.table)
dat = data.table(x = round(rnorm(100,10,3)))
dat = dat[,list(Freq = .N), by = x]
dat = dat[,Total:= Freq/sum(Freq)][order(x,decreasing=F),]

dat
     x Freq Total
1:  3    1  0.01
2:  4    1  0.01
3:  5    2  0.02
4:  6    4  0.04
5:  7   10  0.10
6:  8   13  0.13
7:  9   15  0.15
8: 10    6  0.06
9: 11   14  0.14
10: 12   12  0.12
11: 13   10  0.10
12: 14    8  0.08
13: 15    1  0.01
14: 16    3  0.03

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 20:25