楼主: angel1号
2639 7

[问答] R如何实现广义泊松分布 [推广有奖]

  • 0关注
  • 0粉丝

已卖:71份资源

大专生

65%

还不是VIP/贵宾

-

威望
0
论坛币
135 个
通用积分
29.1900
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
935 点
帖子
17
精华
0
在线时间
74 小时
注册时间
2019-12-16
最后登录
2025-3-3

楼主
angel1号 学生认证  发表于 2023-2-18 10:45:38 |AI写论文
10论坛币
求助,请问如何在R中模拟广义泊松分布

最佳答案

llb_321 查看完整内容

但是 这个包不提供随机数函数。
关键词:泊松分布 如何实现

本帖被以下文库推荐

沙发
llb_321 在职认证  发表于 2023-2-18 10:45:39
  1. library(LaplacesDemon)
  2. #广义泊松分布的概率密度曲线
  3. curve(dgpois(x, lambda = 1, omega = 0.5), xlim = c(0, 10), ylim = c(0, 1), col = "red")
  4. dgpois(2, lambda = 1, omega = 0.5) #计算取值为2的概率
  5. #[1] 0.08367381

  6. #以下是dgpois函数的源代码
  7. function (x, lambda = 0, omega = 0, log = FALSE)
  8. {
  9.     x <- as.vector(x)
  10.     lambda <- as.vector(lambda)
  11.     omega <- as.vector(omega)
  12.     lambda.star <- (1 - omega) * lambda + omega * x
  13.     dens <- log(1 - omega) + log(lambda) + (x - 1) * log(lambda.star) -
  14.         lgamma(x + 1) - lambda.star
  15.     if (log == FALSE)
  16.         dens <- exp(dens)
  17.     return(dens)
  18. }
复制代码


但是 这个包不提供随机数函数。
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
angel1号 学生认证  发表于 2023-2-18 20:43:23
llb_321 发表于 2023-2-18 16:10
但是 这个包不提供随机数函数。
那请问我该怎么产生服从已知参数下的n个广义泊松数据呢?

板凳
llb_321 在职认证  发表于 2023-2-19 08:10:34
angel1号 发表于 2023-2-18 20:43
那请问我该怎么产生服从已知参数下的n个广义泊松数据呢?
虽然这个包没有提供相应的函数,我们可以采用一种变通的方法生成符合广义泊松分布的随机数,参考如下:
  1. x<-0:20#取值范围
  2. probX<-dgpois(x,lambda=2,omega=0.5)#按广义泊松分布计算取值的抽样概率
  3. sRes<-sample(x,size=1000, replace = T, prob=probX)#抽样
  4. #验证抽样结果的分布
  5. hist(sRes,breaks = 20,xlim=c(0,20),col="lightblue",probability = T)#随机数结果分布
  6. lines(density(sRes),col="blue")#抽样的概率
  7. curve(dgpois(x,lambda=2,omega=0.5),xlim=c(0,20),col="red",add = T)#理论上的概率
复制代码
上面代码中借用了概率密度曲线,只是为了方便对比,实际上泊松分布是离散型的。

报纸
angel1号 学生认证  发表于 2023-2-19 15:45:35
llb_321 发表于 2023-2-19 08:10
虽然这个包没有提供相应的函数,我们可以采用一种变通的方法生成符合广义泊松分布的随机数,参考如下:上 ...
那请问有什么包可以直接生成服从一定参数下的广义泊松分布随机数吗?

地板
oliyiyi 发表于 2023-2-22 11:09:40
angel1号 发表于 2023-2-19 15:45
那请问有什么包可以直接生成服从一定参数下的广义泊松分布随机数吗?
VGAM包

7
oliyiyi 发表于 2023-2-22 11:10:26
  1. library(VGAM)
  2. set.seed(123) # 设置随机数种子,以保证结果可复现
  3. n <- 10
  4. lambda <- 5
  5. theta <- 1.5
  6. rvpg(n, lambda, theta)
复制代码

8
llb_321 在职认证  发表于 2023-2-24 14:19:57
oliyiyi 发表于 2023-2-22 11:10
老师好,CRAN提供的VGAM包文档里,没找到rvpg()函数,请问是不是另外的包里的,谢谢。
另外,VGAM包里有个rgenpois0()函数可以生成广义泊松分布的随机数,但是这个函数有问题,不能改变lambda参数,theta参数的定义也与通常的理解有出入。所以这个函数没法用。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-28 22:37