根据条件在 R 中生成有意义的样本数据?

Generating meaningful sample data in R based on conditions?

我正在尝试生成一些有意义的样本保险索赔数据,而不仅仅是随机数。

假设我有两列 Age 和 Injury,我需要基于特定条件的有意义的 ClaimAmount 值:

ClaimantAge | InjuryType | ClaimAmount
---------------------------------------
    35        Bruises
    55        Fractures
    .            .
    .            .
    .            .
  1. 我想生成随年龄增长而增加的索赔金额,然后在某个特定年龄(比如 65 岁)左右达到稳定水平。

  2. 某些伤害的索赔需要高于其他类型伤害的索赔。

目前我正在以随机方式生成样本,如下所示:

amount <- sample(0:100000, 2000, replace = TRUE)  

如何生成更有意义的样本?

有很多方法需要调整,因为我不了解该领域。鉴于我们谈论的是美元金额,我会使用泊松分布来生成数据。

set.seed(1)
n_claims <- 2000
injuries <- c("bruises", "fractures")
prob_injuries <- c(0.7, 0.3)

sim_claims <- data.frame(claimid = 1:n_claims)
sim_claims$age <- round(rnorm(n = n_claims, mean = 35, sd = 15), 0)
sim_claims$Injury <- factor(sample(injuries, size = n_claims, replace = TRUE, prob = prob_injuries))
sim_claims$Amount <- rpois(n_claims, lambda = 100 + (5 * (sim_claims$age - median(sim_claims$age))) + 
                             dplyr::case_when(sim_claims$Injury == "bruises" ~ 50,
                                              sim_claims$Injury == "fractures" ~ 500))

head(sim_claims)

  claimid age    Injury Amount
1       1  26   bruises    117
2       2  38   bruises    175
3       3  22   bruises    102
4       4  59   bruises    261
5       5  40 fractures    644
6       6  23   bruises     92