r - 来自不同包的两个功能不能一起工作
问题描述
所以我正在研究破产概率。我正在通过 R 执行蒙特卡罗模拟。最适合此的包是'ruin'。您只需为不同的废墟模型指定输入。我正在尝试模拟一个 SparreAndersen 模型,其中有两个来自不同分布的随机变量生成器。使用 rgamma 或 rexp 的典型分布(例如指数分布或 gamma 分布)可以正常工作。
我遇到的问题是我需要一个混合指数函数作为 rv 生成器之一。我找到了一个很棒的包来实现这一点,称为“gendist”,我在其中使用 rmixt 函数从混合指数函数生成 rvs。
使用所有参数运行 rmixt 工作正常,给出正确和准确的数字输出。使用所有参数运行 rexp 工作正常,给出正确和准确的数字输出。当使用任何不是 rmixt 函数的函数时,运行 SparreAndersen() 函数可以正常工作。
问题:SparreAndersen 不喜欢使用 'gendist' 包中的 rmixt 作为 rv 生成器
我不知道为什么这不起作用???请参阅下面的整个代码:
library(ruin)
library(gendist)
rmixt(1, phi=1, spec1="exp", arg1=list(rate=3), spec2="exp",
arg2=list(rate=7) )
rexp(1, rate=1)
modelSA <- SparreAndersen(initial_capital = 1,
premium_rate = 5,
claim_interarrival_generator = rmixt,
claim_interarrival_parameters = list(1, phi=1, spec1="exp", arg1=list(rate=3), spec2="exp", arg2=list(rate=7)),
claim_size_generator = rexp,
claim_size_parameters = list(rate=1))
编辑:我找到了一个可行的解决方案,不涉及“性别歧视”包。让我知道这是否是最好的方法。
我的新工作代码:
# Function which generates multiple exponential
rmixedexp <- function(...) {
choice <- c(...)
return(rexp(n=1, sample(choice, 1, replace=TRUE)))
}
modelSA <- SparreAndersen(initial_capital = 5,
premium_rate = 5,
claim_interarrival_generator = rmixedexp,
claim_interarrival_parameters = list(1, 3, 7),
claim_size_generator = rexp,
claim_size_parameters = list(rate=1))
我必须制作自己的函数,该函数采用任意数量的参数,例如 2。每个参数都是指数的比率,随机选择(概率一半)。
解决方案
推荐阅读
- c++ - Nested template class method syntax
- javascript - 如何在创建新元素时更新变量的内容
- r - 逆回归后的模型拟合和残差的逐步前向拟合
- micronaut - 运行 MicronautTest 时如何将应用程序上下文加载到 MicronautLambdaContainerHandler 中?
- php - 选择电子邮件并在返回的电子邮件数量上插入新行另一个表 PHP MYSQL
- python - 从 Angular 项目向 Python 服务器发送 POST 或 GET 请求
- api - 试图让 NoteResultSpec 示例工作
- mysql - 我的 sql order by - 错误代码:1064。您的 SQL 语法有错误;
- javascript - 如何在reactjs中重置模态状态
- html - 如何将html样式标签提取到css中