Я пытаюсь воссоздать что-то похожее на образ в современной теории актуарного риска, используя R: https://www.academia.edu/37238799/Modern_Actuarial_Risk_Theory (стр. 89)
В моем случае капли имеют размер, основанный на экспоненциальном распределении с параметром 1/2000, и они разнесены друг от друга с временем прибытия Пуассона, что означает, что они распределены экспоненциально с параметром скорости 0,25 (в моей модели).
Стоимость U определяется как первоначальный излишек плюс премиальный доход (c) в единицу времени (в течение периода времени, определяемого распределением между прибытиями) за вычетом суммы требования, которая была бы случайной из экспоненциального распределения, упомянутого выше.
У меня есть ощущение, что нужно будет использовать цикл, и это то, что у меня есть до сих пор:
lambda <- 0.25
EX <- 2000
theta <- 0.5
c <- lambda*EX*(1+theta)
x <- rexp(1, 1/2000)
s <- function(t1){for(t1 in 1:10){v <- c(rep(rexp(t1,1/2000)))
print(sum(v))}}
u <- function(t){10000+c*t}
plot(u, xlab = "t", xlim = c(-1,10), ylim = c(0,20000))
abline(v=0)
for(t1 in 1:10){v <- c(rep(rexp(t1,1/2000)))
print(sum(v))}
Конечная цель состоит в том, чтобы запустить эту симуляцию, скажем, 10 000 раз в течение 10 лет и использовать ее в качестве наглядного представления в качестве скорости разорения страховой компании.
Любая помощь приветствуется.
@MrSmithGoesToWashington прямая линия - это все, что мне удалось, я не могу понять, как сделать так, чтобы линия опускалась, как на изображении, на которое я ссылаюсь в посте. У Вас есть какие-либо идеи?
Я думаю, вы ищете что-то вроде этого, все завернуто в изящную функцию, которая по умолчанию рисует сюжет, но при желании просто возвращает «руин» или «безопасно», чтобы вы могли запустить ее в симуляции:
simulate_ruin <- function(lambda = 0.25, EX = 2000,
theta = 0.5, initial_amount = 10000,
max_time = 10, draw = TRUE) {
income_per_year <- lambda * EX * (1 + theta)
# Simulate a Poisson process. Include the initial time 0,
# and replicate every other time point so we have values "before" and
# "after" each drop
times <- c(0, rep(cumsum(rexp(1000, lambda)), each = 2))
times <- c(times[times < max_time], max_time)
# This would be our income if there were no drops (a straight line)
total_without_drops <- initial_amount + (income_per_year * times)
# Now simulate some drops.
drop_size <- rexp((length(times) - 1) / 2, 1/2000)
# Starting from times[3], we apply our cumulative drops every second index:
payout_total <- rep(c(0, cumsum(drop_size)), each = 2)
total <- total_without_drops - payout_total
if (draw) {
plot(times, total, type = "l", ylim = c(-1000, 20000))
abline(h = 0, lty = 2)
} else {
if (any(total < 0))
return("ruin")
else
return("safe")
}
}
Таким образом, мы можем вызвать его один раз для моделирования:
simulate_ruin()
И снова для другой симуляции
simulate_ruin()
И занесите в таблицу результаты 10 000 симуляций, чтобы найти скорость разорения, которая составляет около 3%.
table(sapply(1:10000, function(x) simulate_ruin(draw = FALSE)))
#>
#> ruin safe
#> 305 9695
Created on 2022-04-06 by the reprex package (v2.0.1)
Надеюсь, ты знаешь, что ты удивительный человек! Вы остановили дни стресса. Спасибо, добрый сэр.
Я не могу понять, что делает ваш код.. график просто показывает прямую линию..