Skip to contents

이 문서는 lossratio 패키지의 핵심 함수들을 데이터 준비 -> 적합 -> 진단 -> 검증 -> 시각화 순서로 처음부터 끝까지 따라가는 시작용 자료다. 각 단계마다 무엇을 호출하는지, 왜 그렇게 동작하는지, 결과를 어떻게 읽는지 를 함께 설명한다. 이 한 편만 따라 읽으면 패키지의 전체 작업 흐름을 파악할 수 있도록 구성했다.

1. 이 패키지가 푸는 문제

장기 건강보험은 한 번 인수한 계약이 수십 년간 유지된다. 그래서 어떤 인수 시점(코호트)의 계약군이 시간이 지나며 손해율을 어떻게 쌓아 가는지를 미리 내다보는 것이 핵심 과제다.

lossratio 는 이 문제를 코호트 x 경과기간(cohort x dev) 격자 위에서 다룬다.

  • 코호트(cohort) – 계약을 인수한 시점 (예: 2023년 1월 인수분).
  • 경과기간(development period, dev) – 인수 후 흐른 기간.

각 셀에는 누적 손해(loss)와 누적 보험료(premium)가 들어가고, 손해율은 ratio = loss / premium 로 정의된다. 아직 관측되지 않은 미래 경과기간의 셀을 추정하는 것이 “예측”이며, 이 패키지의 여러 fit_* 함수가 서로 다른 방법으로 그 추정을 수행한다.

2. 데이터: experience

패키지에는 합성 experience 데이터가 내장돼 있다. experience 는 도메인 표준어로, 실제 계리 경험통계(experience study)의 셀 단위 기록을 가리킨다. long-format 테이블이며 한 행은 (코호트 x 경과기간 x 그룹) 셀 하나에 대응한다.

data(experience)
str(experience)
#> Classes 'data.table' and 'data.frame':   2664 obs. of  15 variables:
#>  $ coverage    : chr  "ci" "ci" "ci" "ci" ...
#>  $ uy          : Date, format: "2023-01-01" "2023-01-01" ...
#>  $ uy_h        : Date, format: "2023-01-01" "2023-01-01" ...
#>  $ uy_q        : Date, format: "2023-01-01" "2023-01-01" ...
#>  $ uy_m        : Date, format: "2023-01-01" "2023-01-01" ...
#>  $ cy          : Date, format: "2023-01-01" "2023-01-01" ...
#>  $ cy_h        : Date, format: "2023-01-01" "2023-01-01" ...
#>  $ cy_q        : Date, format: "2023-01-01" "2023-01-01" ...
#>  $ cy_m        : Date, format: "2023-01-01" "2023-02-01" ...
#>  $ dev_y       : int  1 1 1 1 1 1 1 1 1 1 ...
#>  $ dev_h       : int  1 1 1 1 1 1 2 2 2 2 ...
#>  $ dev_q       : int  1 1 1 2 2 2 3 3 3 4 ...
#>  $ dev_m       : int  1 2 3 4 5 6 7 8 9 10 ...
#>  $ incr_loss   : num  1262380 11255763 11281309 33602387 7152622 ...
#>  $ incr_premium: num  27993106 29183931 29401966 26570540 27471886 ...
#>  - attr(*, ".internal.selfref")=<pointer: (nil)>
head(experience)
#>    coverage         uy       uy_h       uy_q       uy_m         cy       cy_h
#>      <char>     <Date>     <Date>     <Date>     <Date>     <Date>     <Date>
#> 1:       ci 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01
#> 2:       ci 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01
#> 3:       ci 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01
#> 4:       ci 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01
#> 5:       ci 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01
#> 6:       ci 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01 2023-01-01
#>          cy_q       cy_m dev_y dev_h dev_q dev_m incr_loss incr_premium
#>        <Date>     <Date> <int> <int> <int> <int>     <num>        <num>
#> 1: 2023-01-01 2023-01-01     1     1     1     1   1262380     27993106
#> 2: 2023-01-01 2023-02-01     1     1     1     2  11255763     29183931
#> 3: 2023-01-01 2023-03-01     1     1     1     3  11281309     29401966
#> 4: 2023-04-01 2023-04-01     1     1     2     4  33602387     26570540
#> 5: 2023-04-01 2023-05-01     1     1     2     5   7152622     27471886
#> 6: 2023-04-01 2023-06-01     1     1     2     6  10110525     26769360

핵심 컬럼만 보면 다음과 같다.

  • coverage – 담보(그룹). surgery / ci / cancer / death 네 종목.
  • uy_m – 인수월(underwriting month). 코호트 축의 원본 컬럼.
  • cy_m – 달력월(calendar month).
  • dev_m – 경과월(development month).
  • incr_loss, incr_premium증분(기간별) 손해와 보험료.

입력이 증분이라는 점에 주목한다. raw experience 는 보통 “이번 달에 얼마가 발생/경과했는가” 형태로 쌓이기 때문이다. 누적값은 패키지가 내부에서 만든다.

3. Triangle 만들기 – as_triangle()

as_triangle() 는 raw experience 를 표준 Triangle 객체로 바꾼다. 검증 + 좌표 표준화 + 집계를 한 번에 수행한다.

tri <- as_triangle(
  experience,
  groups   = "coverage",
  cohort   = "uy_m",
  calendar = "cy_m",
  loss     = "incr_loss",
  premium  = "incr_premium"
)
tri
#> shape: (2_664, 18)
#> ┌──────────┬───────────┬────────────┬───┬───────────────┬────────────────┐
#> │ coverage ┆ n_cohorts ┆ cohort     ┆ … ┆ premium_share ┆ incr_premium_… │
#> │ <chr>    ┆ <int>     ┆ <date>     ┆ … ┆ <dbl>         ┆ <dbl>          │
#> ├──────────┼───────────┼────────────┼───┼───────────────┼────────────────┤
#> │ ci       ┆ 36        ┆ 2023-01-01 ┆ … ┆ 0.381171      ┆ 0.381171       │
#> │ ci       ┆ 35        ┆ 2023-01-01 ┆ … ┆ 0.380346      ┆ 0.379558       │
#> │ ci       ┆ 34        ┆ 2023-01-01 ┆ … ┆ 0.387352      ┆ 0.401744       │
#> │ ci       ┆ 33        ┆ 2023-01-01 ┆ … ┆ 0.379535      ┆ 0.356118       │
#> │ ci       ┆ 32        ┆ 2023-01-01 ┆ … ┆ 0.377646      ┆ 0.370060       │
#> │ …        ┆ …         ┆ …          ┆ … ┆ …             ┆ …              │
#> │ surgery  ┆ 35        ┆ 2025-10-01 ┆ … ┆ 0.872357      ┆ 0.874228       │
#> │ surgery  ┆ 34        ┆ 2025-10-01 ┆ … ┆ 0.874537      ┆ 0.878680       │
#> │ surgery  ┆ 36        ┆ 2025-11-01 ┆ … ┆ 0.667521      ┆ 0.667521       │
#> │ surgery  ┆ 35        ┆ 2025-11-01 ┆ … ┆ 0.669140      ┆ 0.670648       │
#> │ surgery  ┆ 36        ┆ 2025-12-01 ┆ … ┆ 0.544008      ┆ 0.544008       │
#> └──────────┴───────────┴────────────┴───┴───────────────┴────────────────┘
#> 13 more variables: dev <int>, loss <dbl>, incr_loss <dbl>, premium <dbl>,
#>                    incr_premium <dbl>, ratio <dbl>, incr_ratio <dbl>,
#>                    margin <dbl>, incr_margin <dbl>, profit <fct>,
#>                    incr_profit <fct>, loss_share <dbl>, incr_loss_share <dbl>

as_triangle() 의 동작을 풀어 보면 다음과 같다.

  • 필수 컬럼의 존재를 확인하고 expected type 으로 코어션한다,
  • 인구통계 차원을 집계해 제거한다,
  • 누적 컬럼(loss, premium)과 파생 지표(margin, ratio, loss_share, premium_share)를 추가한다,
  • 원본 컬럼명(uy_m, incr_loss 등)을 표준 이름(cohort, dev, loss, premium …)으로 rename 하고, 원본명은 attribute 에 보존한다.

출력 컬럼은 누적이 기본이고 증분은 incr_ 접두사를 붙인다 – loss/incr_loss, premium/incr_premium, ratio/incr_ratio.

이미 누적 삼각형을 갖고 있다면 cell_type = "cumulative" 를 주면 된다. 그러면 as_triangle() 가 코호트별로 차분해 증분을 자동 산출한다.

# 누적 손해/보험료를 가진 경우
as_triangle(df_cumulative,
            groups = "coverage", cohort = "uy_m", calendar = "cy_m",
            loss = "loss", premium = "premium",
            cell_type = "cumulative")

이후 설명은 한 종목만 떼어 단일 그룹으로 진행하면 출력이 깔끔하다.

tri1 <- as_triangle(
  experience[coverage == "surgery"],
  groups   = "coverage",
  cohort   = "uy_m",
  calendar = "cy_m",
  loss     = "incr_loss",
  premium  = "incr_premium"
)

Triangle 자체를 히트맵으로 볼 수 있다.

plot_triangle(tri1, metric = "ratio")

대각선 윗쪽(관측 영역)만 값이 차 있고, 아래쪽 빈 곳이 앞으로 예측해야 할 미래 셀이다.

4. Calendar 와 Total – 다른 집계 관점

같은 experience 데이터는 분석 질문에 따라 세 가지 방식으로 집계할 수 있고, 빌더도 셋이다.

빌더 출력 객체 차원 사용 시점
as_triangle() Triangle 코호트 x dev (2D) SA, ED, CL 예측
as_calendar() Calendar 달력 기간 (1D) 달력 추세, 대각선 효과
as_total() Total 포트폴리오 합계 (그룹별) 상위 수준 손해율 비교

Calendar 는 코호트를 대각선 위로 합산한다 – 각 행이 모든 인수 코호트에 걸친 하나의 달력 기간이며, 수학적으로 Triangle 의 대각선 합과 동치다. 손해율의 달력 추세나 대각선 효과(calendar-year effect) 점검에 쓴다. t 컬럼은 그룹 내 순차 인덱스(1, 2, 3, …)일 뿐 경과기간이 아니다.

cal <- as_calendar(tri1)
head(cal)
#> shape: (6, 18)
#> ┌──────────┬────────────┬─────────┬───┬───────────────┬────────────────┐
#> │ coverage ┆ calendar   ┆ cal_idx ┆ … ┆ premium_share ┆ incr_premium_… │
#> │ <chr>    ┆ <date>     ┆ <int>   ┆ … ┆ <dbl>         ┆ <dbl>          │
#> ├──────────┼────────────┼─────────┼───┼───────────────┼────────────────┤
#> │ surgery  ┆ 2023-01-01 ┆ 1       ┆ … ┆ 1             ┆ 1              │
#> │ surgery  ┆ 2023-02-01 ┆ 2       ┆ … ┆ 1             ┆ 1              │
#> │ surgery  ┆ 2023-03-01 ┆ 3       ┆ … ┆ 1             ┆ 1              │
#> │ surgery  ┆ 2023-04-01 ┆ 4       ┆ … ┆ 1             ┆ 1              │
#> │ surgery  ┆ 2023-05-01 ┆ 5       ┆ … ┆ 1             ┆ 1              │
#> │ surgery  ┆ 2023-06-01 ┆ 6       ┆ … ┆ 1             ┆ 1              │
#> └──────────┴────────────┴─────────┴───┴───────────────┴────────────────┘
#> 13 more variables: n_cohorts <int>, loss <dbl>, incr_loss <dbl>, premium <dbl>,
#>                    incr_premium <dbl>, ratio <dbl>, incr_ratio <dbl>,
#>                    margin <dbl>, incr_margin <dbl>, profit <fct>,
#>                    incr_profit <fct>, loss_share <dbl>, incr_loss_share <dbl>
plot(cal)               # x axis: calendar (Date)

Total 은 두 차원을 모두 합쳐 그룹당 한 값으로 축약한다. 담보별 전체 손해율 비교 같은 포트폴리오 수준 질문에 쓴다. period_from / period_to 로 기간을 맞추면 그룹 간 비교 가능성이 확보된다.

tot <- as_total(tri1)
head(tot)
#> shape: (1, 9)
#> ┌──────────┬───────────┬─────────────┬───┬────────────┬───────────────┐
#> │ coverage ┆ n_cohorts ┆ sales_start ┆ … ┆ loss_share ┆ premium_share │
#> │ <chr>    ┆ <int>     ┆ <date>      ┆ … ┆ <dbl>      ┆ <dbl>         │
#> ├──────────┼───────────┼─────────────┼───┼────────────┼───────────────┤
#> │ surgery  ┆ 36        ┆ 2023-01-01  ┆ … ┆ 1          ┆ 1             │
#> └──────────┴───────────┴─────────────┴───┴────────────┴───────────────┘
#> 4 more variables: sales_end <date>, loss <dbl>, premium <dbl>, ratio <dbl>

이후 예측 절차는 모두 Triangle 을 입력으로 쓴다.

5. 손해 전개를 보는 두 관점

미래 셀을 추정하려면 “손해가 경과기간에 따라 어떻게 늘어나는가”를 모형으로 표현해야 한다. lossratio 는 두 가지 기본 관점을 쓴다.

  • 곱셈형 – chain ladder (CL). 다음 경과기간의 누적 손해는 현재의 배수다: C_{k+1} = f_k * C_k. 여기서 f_kATA 인자(age-to-age factor)이며, 인접한 두 경과기간의 누적 손해 비율로 추정한다.
  • 가법형 – 노출 기반(exposure-driven, ED). 다음 기간의 손해 증분 을 보험료에 비례시킨다: Δloss = g_k * premium. g_k 는 단위 보험료당 손해 강도다.

둘은 서로 보완적이다. 경과 초기에는 누적 손해가 작아 ATA 인자가 크게 출렁이므로 보험료에 닻을 내리는 ED 가 안정적이고, 경과가 무르익으면 ATA 인자가 안정되어 CL 이 코호트의 관측 수준을 잘 보존한다.

Triangle 에서 연속한 두 경과기간을 잇는 Link 객체를 만들면, 위 두 인자를 적합 전에 직접 점검할 수 있다. as_link()loss 만 주면 관측된 ATA 인자를, exposure 까지 주면 ED 강도 g_k 를 담는다 – 워커 레이어에서 보험료 컬럼은 exposure 인자로 받는다.

ata <- as_link(tri1, loss = "loss")                        # ATA 모드
ed  <- as_link(tri1, loss = "loss", exposure = "premium")  # ED 모드
head(summary(ata, model = "ata"))
#> Key: <coverage>
#>    coverage ata_from ata_to ata_link  mean median    wt    cv     f  f_se   rse
#>      <char>    <num>  <num>   <fctr> <num>  <num> <num> <num> <num> <num> <num>
#> 1:  surgery        1      2      1-2 6.595  6.089 6.163 0.427 6.163 0.382 0.062
#> 2:  surgery        2      3      2-3 1.765  1.768 1.739 0.157 1.739 0.042 0.024
#> 3:  surgery        3      4      3-4 1.435  1.400 1.418 0.105 1.418 0.027 0.019
#> 4:  surgery        4      5      4-5 1.324  1.331 1.339 0.068 1.339 0.018 0.014
#> 5:  surgery        5      6      5-6 1.267  1.246 1.243 0.070 1.243 0.016 0.013
#> 6:  surgery        6      7      6-7 1.204  1.194 1.205 0.048 1.205 0.011 0.009
#>       sigma n_cohorts n_valid n_inf n_nan valid_ratio
#>       <num>     <num>   <num> <num> <num>       <num>
#> 1: 6207.618        35      35     0     0           1
#> 2: 1689.250        34      34     0     0           1
#> 3: 1372.883        33      33     0     0           1
#> 4: 1105.053        32      32     0     0           1
#> 5: 1086.826        31      31     0     0           1
#> 6:  812.770        30      30     0     0           1

summary(link, model = "ata"|"ed") 는 링크별 mean / median / cv / f(또는 g) 등 인자 통계를 산출한다. 이 통계가 뒤에서 성숙점 검출을 구동한다. 더 깊은 진단은 vignette("getting-started") 를 참고한다.

6. fit_cl() – chain ladder

fit_cl() 은 누적 loss 위에서 Mack(1993) 방식의 chain ladder 적합을 수행한다.

cl <- fit_cl(tri1)
summary(cl)
#>     coverage     cohort     latest   loss_ult    reserve loss_proc_se
#>       <char>     <Date>      <num>      <num>      <num>        <num>
#>  1:  surgery 2023-01-01  410248522  410248522          0            0
#>  2:  surgery 2023-02-01  976330445 1001441303   25110858      2751819
#>  3:  surgery 2023-03-01  978486045 1026151243   47665198      3967869
#>  4:  surgery 2023-04-01 2029909919 2186771221  156861302      6942937
#>  5:  surgery 2023-05-01  624219436  697669301   73449865      4455636
#>  6:  surgery 2023-06-01  802880717  931393934  128513217     17869565
#>  7:  surgery 2023-07-01 2539141549 3050990158  511848609     35918003
#>  8:  surgery 2023-08-01  393678329  488218204   94539875     15583801
#>  9:  surgery 2023-09-01 1364052542 1751869308  387816766     38001618
#> 10:  surgery 2023-10-01  979266043 1311793843  332527800     38496097
#> 11:  surgery 2023-11-01  604685679  848103123  243417444     35719579
#> 12:  surgery 2023-12-01 1026345366 1497869029  471523663     51405333
#> 13:  surgery 2024-01-01 1912177598 2901492851  989315253     75674312
#> 14:  surgery 2024-02-01  733902485 1160045952  426143467     51719398
#> 15:  surgery 2024-03-01  415459873  686574148  271114275     41313266
#> 16:  surgery 2024-04-01 3286053526 5687484014 2401430488    122770258
#> 17:  surgery 2024-05-01 1451731153 2645801838 1194070685     93024106
#> 18:  surgery 2024-06-01  629668308 1209024555  579356247     65346187
#> 19:  surgery 2024-07-01 1250954693 2542927190 1291972497    103136528
#> 20:  surgery 2024-08-01  425346694  918120582  492773888     65317866
#> 21:  surgery 2024-09-01  278156543  635470028  357313485     56737053
#> 22:  surgery 2024-10-01  352070323  856446521  504376198     68091257
#> 23:  surgery 2024-11-01   99050501  260916096  161865595     41787166
#> 24:  surgery 2024-12-01  103194013  295637296  192443283     49617195
#> 25:  surgery 2025-01-01  227089025  710560093  483471068     83635489
#> 26:  surgery 2025-02-01  939163074 3276849152 2337686078    192418633
#> 27:  surgery 2025-03-01  112828845  434950057  322121212     72345359
#> 28:  surgery 2025-04-01   82472453  356301148  273828695     68974257
#> 29:  surgery 2025-05-01  141214851  697290587  556075736    119238986
#> 30:  surgery 2025-06-01  136406102  789468799  653062697    136628652
#> 31:  surgery 2025-07-01  149144024 1040451732  891307708    167039609
#> 32:  surgery 2025-08-01  116327076 1008356733  892029657    183653360
#> 33:  surgery 2025-09-01   67465470  783000257  715534787    179947037
#> 34:  surgery 2025-10-01  121626173 2001214863 1879588690    337103186
#> 35:  surgery 2025-11-01   15716444  449653406  433936962    194100658
#> 36:  surgery 2025-12-01    4825085  850839118  846014033    472741759
#>     coverage     cohort     latest   loss_ult    reserve loss_proc_se
#>       <char>     <Date>      <num>      <num>      <num>        <num>
#>     loss_param_se loss_total_se loss_total_cv
#>             <num>         <num>         <num>
#>  1:             0             0   0.000000000
#>  2:       4299412       5104650   0.005097304
#>  3:       5021196       6399718   0.006236623
#>  4:      11297887      13260717   0.006064062
#>  5:       3696918       5789637   0.008298541
#>  6:       8694892      19872657   0.021336469
#>  7:      30501066      47121311   0.015444596
#>  8:       5072721      16388635   0.033568259
#>  9:      20827314      43334744   0.024736288
#> 10:      16992221      42079509   0.032077837
#> 11:      11901733      37650227   0.044393454
#> 12:      22008504      55918535   0.037332059
#> 13:      43971810      87522121   0.030164514
#> 14:      18269127      54851227   0.047283667
#> 15:      11014493      42756344   0.062274911
#> 16:      92689755     153830838   0.027047256
#> 17:      45040851     103354548   0.039063601
#> 18:      20907249      68609309   0.056747655
#> 19:      45568404     112754702   0.044340515
#> 20:      16819267      67448584   0.073463753
#> 21:      11859688      57963310   0.091213288
#> 22:      16219631      69996398   0.081728860
#> 23:       5190764      42108328   0.161386470
#> 24:       6221683      50005754   0.169145620
#> 25:      15668260      85090478   0.119751276
#> 26:      75222224     206599403   0.063048188
#> 27:      10161412      73055495   0.167962950
#> 28:       8575343      69505285   0.195074548
#> 29:      19174475     120770842   0.173200161
#> 30:      22834478     138523651   0.175464377
#> 31:      31445935     169973756   0.163365345
#> 32:      32987225     186592373   0.185045993
#> 33:      27713231     182068556   0.232526816
#> 34:      80113491     346492034   0.173140846
#> 35:      21034520     195237078   0.434194593
#> 36:      66075497     477337136   0.561019265
#>     loss_param_se loss_total_se loss_total_cv
#>             <num>         <num>         <num>

summary() 는 코호트별 ultimate 손해와 표준오차(loss_total_se), 변동계수(loss_total_cv)를 보여준다. 표준오차는 Mack 의 분산 분해를 따라 과정오차(process)모수오차(parameter) 의 합으로 산출된다.

$full 슬롯에는 관측 + 예측 전 영역의 셀별 결과가 들어 있다.

head(cl$full[, c("cohort", "dev", "loss_obs", "loss_proj",
                 "loss_total_se", "is_observed")])
#>        cohort   dev loss_obs loss_proj loss_total_se is_observed
#>        <Date> <int>    <num>     <num>         <num>      <lgcl>
#> 1: 2023-01-01     1  1886123   1886123             0        TRUE
#> 2: 2023-01-01     2 14030514  14030514             0        TRUE
#> 3: 2023-01-01     3 24427715  24427715             0        TRUE
#> 4: 2023-01-01     4 34672477  34672477             0        TRUE
#> 5: 2023-01-01     5 44990229  44990229             0        TRUE
#> 6: 2023-01-01     6 55621697  55621697             0        TRUE

투영 곡선을 보면 코호트별 관측(실선)과 예측(점선)이 이어진다.

plot(cl)

7. fit_ed() – 노출 기반

fit_ed() 는 같은 삼각형을 가법형 ED 모형으로 적합한다.

ed_fit <- fit_ed(tri1)
summary(ed_fit)
#> Key: <coverage>
#>     coverage ata_from ata_to ata_link    mean  median      wt      cv       g
#>       <char>    <num>  <num>   <fctr>   <num>   <num>   <num>   <num>   <num>
#>  1:  surgery        1      2      1-2 1.34661 1.21766 1.31614 0.47327 1.31614
#>  2:  surgery        2      3      2-3 0.58109 0.56432 0.58674 0.37381 0.58674
#>  3:  surgery        3      4      3-4 0.39105 0.36751 0.38178 0.43535 0.38178
#>  4:  surgery        4      5      4-5 0.31110 0.32321 0.33127 0.35969 0.33127
#>  5:  surgery        5      6      5-6 0.27543 0.25088 0.25518 0.43531 0.25518
#>  6:  surgery        6      7      6-7 0.21364 0.20479 0.22393 0.31371 0.22393
#>  7:  surgery        7      8      7-8 0.18072 0.18227 0.19476 0.36392 0.19476
#>  8:  surgery        8      9      8-9 0.16798 0.15484 0.16849 0.67814 0.16849
#>  9:  surgery        9     10     9-10 0.14955 0.13195 0.14572 0.33906 0.14572
#> 10:  surgery       10     11    10-11 0.12550 0.12095 0.12851 0.31241 0.12851
#> 11:  surgery       11     12    11-12 0.13833 0.12898 0.14581 0.39551 0.14581
#> 12:  surgery       12     13    12-13 0.12519 0.11356 0.12075 0.34186 0.12075
#> 13:  surgery       13     14    13-14 0.11144 0.10927 0.11631 0.35239 0.11631
#> 14:  surgery       14     15    14-15 0.10561 0.09421 0.11169 0.43662 0.11169
#> 15:  surgery       15     16    15-16 0.08954 0.08726 0.08964 0.34359 0.08964
#> 16:  surgery       16     17    16-17 0.08079 0.07993 0.08162 0.24700 0.08162
#> 17:  surgery       17     18    17-18 0.08109 0.07612 0.08725 0.28780 0.08725
#> 18:  surgery       18     19    18-19 0.08636 0.08620 0.08772 0.34300 0.08772
#> 19:  surgery       19     20    19-20 0.07944 0.07838 0.08008 0.25109 0.08008
#> 20:  surgery       20     21    20-21 0.07789 0.07935 0.08007 0.32197 0.08007
#> 21:  surgery       21     22    21-22 0.06746 0.06606 0.06982 0.26290 0.06982
#> 22:  surgery       22     23    22-23 0.06748 0.06394 0.06703 0.32299 0.06703
#> 23:  surgery       23     24    23-24 0.06644 0.05971 0.06165 0.39463 0.06165
#> 24:  surgery       24     25    24-25 0.06303 0.05711 0.05902 0.45911 0.05902
#> 25:  surgery       25     26    25-26 0.06696 0.06136 0.06056 0.39347 0.06056
#> 26:  surgery       26     27    26-27 0.06265 0.05387 0.07093 0.44081 0.07093
#> 27:  surgery       27     28    27-28 0.06010 0.05136 0.06550 0.36862 0.06550
#> 28:  surgery       28     29    28-29 0.06012 0.06544 0.05404 0.31348 0.05404
#> 29:  surgery       29     30    29-30 0.05275 0.04745 0.04877 0.23587 0.04877
#> 30:  surgery       30     31    30-31 0.05437 0.04834 0.05359 0.25583 0.05359
#> 31:  surgery       31     32    31-32 0.06003 0.05618 0.05643 0.41162 0.05643
#> 32:  surgery       32     33    32-33 0.05749 0.05671 0.05622 0.07265 0.05622
#> 33:  surgery       33     34    33-34 0.04049 0.03873 0.04100 0.08481 0.04100
#> 34:  surgery       34     35    34-35 0.03562 0.03562 0.03403 0.15183 0.03403
#> 35:  surgery       35     36    35-36 0.03864 0.03864 0.03864      NA 0.03864
#>     coverage ata_from ata_to ata_link    mean  median      wt      cv       g
#>       <char>    <num>  <num>   <fctr>   <num>   <num>   <num>   <num>   <num>
#>        g_se     rse      sigma n_cohorts n_valid n_inf n_nan valid_ratio
#>       <num>   <num>      <num>     <num>   <num> <num> <num>       <num>
#>  1: 0.09107 0.06919 2930.74379        35      35     0     0           1
#>  2: 0.03508 0.05979 1580.26206        34      34     0     0           1
#>  3: 0.02931 0.07677 1587.18687        33      33     0     0           1
#>  4: 0.02135 0.06444 1319.11056        32      32     0     0           1
#>  5: 0.02087 0.08178 1421.47805        31      31     0     0           1
#>  6: 0.01273 0.05686  937.78642        30      30     0     0           1
#>  7: 0.01141 0.05860  897.25756        29      29     0     0           1
#>  8: 0.02169 0.12870 1792.82291        28      28     0     0           1
#>  9: 0.00943 0.06471  819.85457        27      27     0     0           1
#> 10: 0.00676 0.05263  614.41506        26      26     0     0           1
#> 11: 0.01185 0.08130 1065.55644        25      25     0     0           1
#> 12: 0.00987 0.08170  911.69544        24      24     0     0           1
#> 13: 0.01111 0.09556 1061.51299        23      23     0     0           1
#> 14: 0.01140 0.10209 1123.12989        22      22     0     0           1
#> 15: 0.00630 0.07031  629.63157        21      21     0     0           1
#> 16: 0.00475 0.05825  483.04483        20      20     0     0           1
#> 17: 0.00628 0.07198  644.16296        19      19     0     0           1
#> 18: 0.00745 0.08497  734.39263        18      18     0     0           1
#> 19: 0.00438 0.05473  434.93473        17      17     0     0           1
#> 20: 0.00692 0.08645  667.93909        16      16     0     0           1
#> 21: 0.00444 0.06361  392.59516        15      15     0     0           1
#> 22: 0.00501 0.07472  445.50689        14      14     0     0           1
#> 23: 0.00644 0.10443  566.66986        13      13     0     0           1
#> 24: 0.00532 0.09006  436.45244        12      12     0     0           1
#> 25: 0.00638 0.10534  505.82971        11      11     0     0           1
#> 26: 0.00878 0.12380  684.49354        10      10     0     0           1
#> 27: 0.00834 0.12727  627.18471         9       9     0     0           1
#> 28: 0.00853 0.15779  604.48158         8       8     0     0           1
#> 29: 0.00428 0.08784  300.99607         7       7     0     0           1
#> 30: 0.00553 0.10315  325.88934         6       6     0     0           1
#> 31: 0.01155 0.20459  641.18962         5       5     0     0           1
#> 32: 0.00153 0.02721   80.36415         4       4     0     0           1
#> 33: 0.00211 0.05148   81.83368         3       3     0     0           1
#> 34: 0.00348 0.10217  103.52601         2       2     0     0           1
#> 35:      NA      NA         NA         1       1     0     0           1
#>        g_se     rse      sigma n_cohorts n_valid n_inf n_nan valid_ratio
#>       <num>   <num>      <num>     <num>   <num> <num> <num>       <num>

점 예측(loss_proj)은 CL 과 ED 가 거의 같다 – 둘 다 같은 데이터를 설명하기 때문이다. 차이는 분산이 어떻게 쌓이는가 에 있다. CL 은 배수 f 의 제곱으로 분산을 증폭시키고, ED 는 보험료에 비례한 증분을 더해 간다. 그래서 초기 경과기간에서 ED 의 표준오차가 더 차분하다.

8. fit_sa() – 단계 적응형

fit_sa() 는 두 관점을 단계 적응형(stage-adaptive, SA) 으로 합성한다. 성숙점(maturity point) 이전 경과기간은 ED 로, 이후는 CL 로 적합한다.

sa <- fit_sa(tri1)
summary(sa)
#>     coverage     cohort   loss_ult loss_total_se loss_total_cv
#>       <char>     <Date>      <num>         <num>         <num>
#>  1:  surgery 2023-01-01  410248522             0   0.000000000
#>  2:  surgery 2023-02-01 1001441303       5213830   0.005206903
#>  3:  surgery 2023-03-01 1026151243       6516765   0.006351412
#>  4:  surgery 2023-04-01 2186771221      13328275   0.006095671
#>  5:  surgery 2023-05-01  697669301       5934623   0.008507146
#>  6:  surgery 2023-06-01  931393934      19748953   0.021210955
#>  7:  surgery 2023-07-01 3050990158      47562095   0.015597747
#>  8:  surgery 2023-08-01  488218204      16944542   0.034721030
#>  9:  surgery 2023-09-01 1751869308      42574746   0.024314556
#> 10:  surgery 2023-10-01 1311793843      41329107   0.031518532
#> 11:  surgery 2023-11-01  848103123      37157863   0.043825274
#> 12:  surgery 2023-12-01 1497869029      57599154   0.038467355
#> 13:  surgery 2024-01-01 2901492851      88235644   0.030420598
#> 14:  surgery 2024-02-01 1160045952      54795036   0.047259587
#> 15:  surgery 2024-03-01  686574148      43001505   0.062669337
#> 16:  surgery 2024-04-01 5687484014     153573839   0.027023203
#> 17:  surgery 2024-05-01 2645801838      99819176   0.037767381
#> 18:  surgery 2024-06-01 1209024555      70198966   0.058126448
#> 19:  surgery 2024-07-01 2542927190     113847340   0.044828055
#> 20:  surgery 2024-08-01  918120582      65147845   0.071058089
#> 21:  surgery 2024-09-01  635470028      57830189   0.091140754
#> 22:  surgery 2024-10-01  856446521      72983751   0.085349352
#> 23:  surgery 2024-11-01  260916096      41722607   0.160138402
#> 24:  surgery 2024-12-01  295637296      49055982   0.166160578
#> 25:  surgery 2025-01-01  710560093      84025806   0.118458337
#> 26:  surgery 2025-02-01 3276849152     207578746   0.063455505
#> 27:  surgery 2025-03-01  434950057      72002829   0.165840618
#> 28:  surgery 2025-04-01  356301148      69341707   0.194927969
#> 29:  surgery 2025-05-01  697290587     118074803   0.169587982
#> 30:  surgery 2025-06-01  789468799     138920305   0.176211772
#> 31:  surgery 2025-07-01 1040451732     169134660   0.162761021
#> 32:  surgery 2025-08-01 1008356733     187372862   0.185979990
#> 33:  surgery 2025-09-01  783000257     182485783   0.233248980
#> 34:  surgery 2025-10-01 2001214863     340964049   0.170558023
#> 35:  surgery 2025-11-01  576954661     191871774   0.427367699
#> 36:  surgery 2025-12-01 1246569307     468598419   0.551014826
#>     coverage     cohort   loss_ult loss_total_se loss_total_cv
#>       <char>     <Date>      <num>         <num>         <num>

성숙점은 ATA 인자가 충분히 안정된 경과기간으로, 내부에서 자동 검출된다 (2-pass). 직관은 단순하다 – ATA 인자가 아직 출렁이는 초기 구간은 보험료에 닻을 내리고(ED), 안정된 이후 구간은 코호트 자신의 발전을 따른다(CL). SA 는 이 패키지가 장기 손해율 예측의 기본 작업마로 삼는 방법이다.

plot(sa)

9. fit_bf() – Bornhuetter-Ferguson

fit_bf()외부 사전(prior) 손해율 을 끌어들인다. 아직 발현되지 않은 미래 부분은 데이터가 아니라 prior 가 채운다.

L̂iult=Liobs+(1qi)ELRiEiult \hat L^{ult}_i = L^{obs}_i + (1 - q_i)\cdot \mathrm{ELR}_i \cdot E^{ult}_i

q_i 는 코호트 i 의 발현 비율(L^{obs} / L^{ult, CL})이다. 즉 BF 는 이미 발현된 부분은 데이터, 아직 안 나온 부분은 prior 로 채우는 신뢰도(credibility) 혼합이다. prior 인자는 필수다.

bf <- fit_bf(tri1, prior = 0.70)
summary(bf)
#>     coverage     cohort     latest   loss_ult    reserve   elr           q
#>       <char>     <Date>      <num>      <num>      <num> <num>       <num>
#>  1:  surgery 2023-01-01  410248522  410248522          0   0.7 1.000000000
#>  2:  surgery 2023-02-01  976330445  988014446   11684001   0.7 0.974925282
#>  3:  surgery 2023-03-01  978486045 1001313340   22827295   0.7 0.953549540
#>  4:  surgery 2023-04-01 2029909919 2103440848   73530929   0.7 0.928268078
#>  5:  surgery 2023-05-01  624219436  659825088   35605652   0.7 0.894721088
#>  6:  surgery 2023-06-01  802880717  860017751   57137034   0.7 0.862020556
#>  7:  surgery 2023-07-01 2539141549 2769110891  229969342   0.7 0.832235247
#>  8:  surgery 2023-08-01  393678329  438075731   44397402   0.7 0.806357333
#>  9:  surgery 2023-09-01 1364052542 1533228915  169176373   0.7 0.778626885
#> 10:  surgery 2023-10-01  979266043 1132613702  153347659   0.7 0.746509101
#> 11:  surgery 2023-11-01  604685679  731321345  126635666   0.7 0.712986030
#> 12:  surgery 2023-12-01 1026345366 1259276578  232931212   0.7 0.685203677
#> 13:  surgery 2024-01-01 1912177598 2391691252  479513654   0.7 0.659032331
#> 14:  surgery 2024-02-01  733902485  947906510  214004025   0.7 0.632649494
#> 15:  surgery 2024-03-01  415459873  541048315  125588442   0.7 0.605120181
#> 16:  surgery 2024-04-01 3286053526 4282833085  996779559   0.7 0.577769277
#> 17:  surgery 2024-05-01 1451731153 2051922702  600191549   0.7 0.548692322
#> 18:  surgery 2024-06-01  629668308  881286702  251618394   0.7 0.520806882
#> 19:  surgery 2024-07-01 1250954693 2279320912 1028366219   0.7 0.491934924
#> 20:  surgery 2024-08-01  425346694  792385329  367038635   0.7 0.463279772
#> 21:  surgery 2024-09-01  278156543  555212439  277055896   0.7 0.437717801
#> 22:  surgery 2024-10-01  352070323  758060195  405989872   0.7 0.411082670
#> 23:  surgery 2024-11-01   99050501  239786684  140736183   0.7 0.379625874
#> 24:  surgery 2024-12-01  103194013  270168423  166974410   0.7 0.349056139
#> 25:  surgery 2025-01-01  227089025  624183994  397094969   0.7 0.319591583
#> 26:  surgery 2025-02-01  939163074 2580188625 1641025551   0.7 0.286605526
#> 27:  surgery 2025-03-01  112828845  406416040  293587195   0.7 0.259406438
#> 28:  surgery 2025-04-01   82472453  338988233  256515780   0.7 0.231468390
#> 29:  surgery 2025-05-01  141214851  714552172  573337321   0.7 0.202519371
#> 30:  surgery 2025-06-01  136406102  589825915  453419813   0.7 0.172782132
#> 31:  surgery 2025-07-01  149144024  664688641  515544617   0.7 0.143345452
#> 32:  surgery 2025-08-01  116327076  758604071  642276995   0.7 0.115363018
#> 33:  surgery 2025-09-01   67465470  458478144  391012674   0.7 0.086162769
#> 34:  surgery 2025-10-01  121626173 1001607436  879981263   0.7 0.060776169
#> 35:  surgery 2025-11-01   15716444  416407427  400690983   0.7 0.034952352
#> 36:  surgery 2025-12-01    4825085  716557798  711732713   0.7 0.005670972
#>     coverage     cohort     latest   loss_ult    reserve   elr           q
#>       <char>     <Date>      <num>      <num>      <num> <num>       <num>
#>     loss_total_se loss_total_cv loss_ci_lo loss_ci_hi
#>             <num>         <num>      <num>      <num>
#>  1:             0   0.000000000  410248522  410248522
#>  2:       2706900   0.002739737  982709020  993319872
#>  3:       3577408   0.003572716  994301749 1008324932
#>  4:       6838847   0.003251267 2090036953 2116844742
#>  5:       3492508   0.005293082  652979898  666670278
#>  6:      12372795   0.014386674  835767517  884267984
#>  7:      26644265   0.009621956 2716889092 2821332690
#>  8:      10853531   0.024775468  416803200  459348261
#>  9:      26083909   0.017012404 1482105392 1584352438
#> 10:      26797039   0.023659469 1080092472 1185134933
#> 11:      26147262   0.035753452  680073652  782569037
#> 12:      36904052   0.029305756 1186945964 1331607192
#> 13:      54554640   0.022810068 2284766123 2498616381
#> 14:      37132355   0.039173014  875128432 1020684589
#> 15:      28309725   0.052323840  485562273  596534358
#> 16:      82259622   0.019206824 4121607187 4444058982
#> 17:      67184067   0.032742007 1920244351 2183601052
#> 18:      43376322   0.049219309  796270672  966302731
#> 19:      93872014   0.041184202 2095335146 2463306678
#> 20:      56754159   0.071624444  681149222  903621437
#> 21:      50204160   0.090423334  456814094  653610784
#> 22:      61451372   0.081063974  637617720  878502671
#> 23:      39077740   0.162968764  163195722  316377647
#> 24:      46347332   0.171549773  179329323  361007524
#> 25:      76064334   0.121862039  475100639  773267350
#> 26:     162339147   0.062917550 2262009743 2898367507
#> 27:      69290105   0.170490578  270609928  542222151
#> 28:      66987095   0.197608910  207695939  470280527
#> 29:     121492740   0.170026409  476430778  952673567
#> 30:     114220772   0.193651668  365957315  813694515
#> 31:     127500326   0.191819625  414792595  914584687
#> 32:     156435540   0.206215002  451996047 1065212095
#> 33:     133546948   0.291283127  196730936  720225351
#> 34:     231723393   0.231351511  547437930 1455776941
#> 35:     187300253   0.449800461   49305677  783509176
#> 36:     434845529   0.606853390 -135723778 1568839373
#>     loss_total_se loss_total_cv loss_ci_lo loss_ci_hi
#>             <num>         <num>      <num>      <num>

prior 를 코호트마다 다르게 주거나(데이터프레임), 분포 prior(elr_se 열 포함)로 줄 수도 있다. 데이터가 거의 없는 초기 코호트일수록 결과가 prior 쪽으로 끌린다 – 그것이 BF 를 쓰는 이유다.

10. fit_cc() – Cape Cod

fit_cc() 는 BF 와 같은 구조이되, 사전 손해율을 외부에서 받지 않고 데이터를 풀링해 추정 한다.

ELR̂=iLiobsiEiultqi \widehat{\mathrm{ELR}} = \frac{\sum_i L^{obs}_i}{\sum_i E^{ult}_i \cdot q_i}

cc <- fit_cc(tri1)
summary(cc)
#>     coverage     cohort     latest   loss_ult    reserve      elr           q
#>       <char>     <Date>      <num>      <num>      <num>    <num>       <num>
#>  1:  surgery 2023-01-01  410248522  410248522          0 1.355821 1.000000000
#>  2:  surgery 2023-02-01  976330445  998961036   22630591 1.355821 0.974925282
#>  3:  surgery 2023-03-01  978486045 1022699937   44213892 1.355821 0.953549540
#>  4:  surgery 2023-04-01 2029909919 2172331022  142421103 1.355821 0.928268078
#>  5:  surgery 2023-05-01  624219436  693183562   68964126 1.355821 0.894721088
#>  6:  surgery 2023-06-01  802880717  913548697  110667980 1.355821 0.862020556
#>  7:  surgery 2023-07-01 2539141549 2984566188  445424639 1.355821 0.832235247
#>  8:  surgery 2023-08-01  393678329  479671081   85992752 1.355821 0.806357333
#>  9:  surgery 2023-09-01 1364052542 1691728066  327675524 1.355821 0.778626885
#> 10:  surgery 2023-10-01  979266043 1276283138  297017095 1.355821 0.746509101
#> 11:  surgery 2023-11-01  604685679  849964659  245278980 1.355821 0.712986030
#> 12:  surgery 2023-12-01 1026345366 1477506812  451161446 1.355821 0.685203677
#> 13:  surgery 2024-01-01 1912177598 2840941382  928763784 1.355821 0.659032331
#> 14:  surgery 2024-02-01  733902485 1148404108  414501623 1.355821 0.632649494
#> 15:  surgery 2024-03-01  415459873  658710499  243250626 1.355821 0.605120181
#> 16:  surgery 2024-04-01 3286053526 5216702938 1930649412 1.355821 0.577769277
#> 17:  surgery 2024-05-01 1451731153 2614234387 1162503234 1.355821 0.548692322
#> 18:  surgery 2024-06-01  629668308 1117024715  487356407 1.355821 0.520806882
#> 19:  surgery 2024-07-01 1250954693 3242783898 1991829205 1.355821 0.491934924
#> 20:  surgery 2024-08-01  425346694 1136259071  710912377 1.355821 0.463279772
#> 21:  surgery 2024-09-01  278156543  814782518  536625975 1.355821 0.437717801
#> 22:  surgery 2024-10-01  352070323 1138426847  786356524 1.355821 0.411082670
#> 23:  surgery 2024-11-01   99050501  371640591  272590090 1.355821 0.379625874
#> 24:  surgery 2024-12-01  103194013  426604585  323410572 1.355821 0.349056139
#> 25:  surgery 2025-01-01  227089025  996217126  769128101 1.355821 0.319591583
#> 26:  surgery 2025-02-01  939163074 4117644201 3178481127 1.355821 0.286605526
#> 27:  surgery 2025-03-01  112828845  681474078  568645233 1.355821 0.259406438
#> 28:  surgery 2025-04-01   82472453  579314544  496842091 1.355821 0.231468390
#> 29:  surgery 2025-05-01  141214851 1251704480 1110489629 1.355821 0.202519371
#> 30:  surgery 2025-06-01  136406102 1014629063  878222961 1.355821 0.172782132
#> 31:  surgery 2025-07-01  149144024 1147695713  998551689 1.355821 0.143345452
#> 32:  surgery 2025-08-01  116327076 1360345066 1244017990 1.355821 0.115363018
#> 33:  surgery 2025-09-01   67465470  824812852  757347382 1.355821 0.086162769
#> 34:  surgery 2025-10-01  121626173 1826050478 1704424305 1.355821 0.060776169
#> 35:  surgery 2025-11-01   15716444  791809616  776093172 1.355821 0.034952352
#> 36:  surgery 2025-12-01    4825085 1383370954 1378545869 1.355821 0.005670972
#>     coverage     cohort     latest   loss_ult    reserve      elr           q
#>       <char>     <Date>      <num>      <num>      <num>    <num>       <num>
#>     loss_total_se loss_total_cv loss_ci_lo loss_ci_hi   elr_cc_se   elr_cc_cv
#>             <num>         <num>      <num>      <num>       <num>       <num>
#>  1:             0   0.000000000  410248522  410248522 0.004723362 0.003483765
#>  2:       4593602   0.004598379  989957742 1007964329 0.004723362 0.003483765
#>  3:       5861160   0.005731065 1011212275 1034187600 0.004723362 0.003483765
#>  4:      11606085   0.005342687 2149583513 2195078531 0.004723362 0.003483765
#>  5:       5324825   0.007681696  682747097  703620028 0.004723362 0.003483765
#>  6:      17799733   0.019484165  878661861  948435533 0.004723362 0.003483765
#>  7:      40172904   0.013460215 2905828743 3063303632 0.004723362 0.003483765
#>  8:      15331659   0.031962858  449621582  509720580 0.004723362 0.003483765
#>  9:      37557573   0.022200715 1618116576 1765339557 0.004723362 0.003483765
#> 10:      38142195   0.029885371 1201525810 1351040465 0.004723362 0.003483765
#> 11:      36892692   0.043404972  777656311  922273007 0.004723362 0.003483765
#> 12:      52372680   0.035446659 1374858246 1580155378 0.004723362 0.003483765
#> 13:      78351886   0.027579550 2687374507 2994508257 0.004723362 0.003483765
#> 14:      52317595   0.045556781 1045863507 1250944710 0.004723362 0.003483765
#> 15:      39656345   0.060202995  580985491  736435508 0.004723362 0.003483765
#> 16:     118649233   0.022744104 4984154715 5449251161 0.004723362 0.003483765
#> 17:      95166627   0.036403250 2427711225 2800757549 0.004723362 0.003483765
#> 18:      60795329   0.054426127  997868060 1236181369 0.004723362 0.003483765
#> 19:     133200048   0.041075832 2981716601 3503851194 0.004723362 0.003483765
#> 20:      79519501   0.069983601  980403712 1292114430 0.004723362 0.003483765
#> 21:      70211447   0.086172009  677170611  952394425 0.004723362 0.003483765
#> 22:      86035035   0.075573618  969801276 1307052417 0.004723362 0.003483765
#> 23:      54540884   0.146757070  264742423  478538760 0.004723362 0.003483765
#> 24:      64681286   0.151618825  299831594  553377576 0.004723362 0.003483765
#> 25:     106241396   0.106644820  787987815 1204446437 0.004723362 0.003483765
#> 26:     227653283   0.055287264 3671451966 4563836436 0.004723362 0.003483765
#> 27:      96742990   0.141961364  491861302  871086855 0.004723362 0.003483765
#> 28:      93540835   0.161468129  395977876  762651212 0.004723362 0.003483765
#> 29:     169670289   0.135551395  919156825 1584252135 0.004723362 0.003483765
#> 30:     159480991   0.157181572  702052063 1327206062 0.004723362 0.003483765
#> 31:     178077636   0.155161019  798669960 1496721466 0.004723362 0.003483765
#> 32:     218535228   0.160646908  932023889 1788666243 0.004723362 0.003483765
#> 33:     186560125   0.226184794  459161726 1190463978 0.004723362 0.003483765
#> 34:     323931990   0.177394871 1191155445 2460945512 0.004723362 0.003483765
#> 35:     261700792   0.330509742  278885490 1304733743 0.004723362 0.003483765
#> 36:     606816525   0.438650619  194032420 2572709489 0.004723362 0.003483765
#>     loss_total_se loss_total_cv loss_ci_lo loss_ci_hi   elr_cc_se   elr_cc_cv
#>             <num>         <num>      <num>      <num>       <num>       <num>
#>     elr_cc_ci_lo elr_cc_ci_hi
#>            <num>        <num>
#>  1:     1.346563     1.365079
#>  2:     1.346563     1.365079
#>  3:     1.346563     1.365079
#>  4:     1.346563     1.365079
#>  5:     1.346563     1.365079
#>  6:     1.346563     1.365079
#>  7:     1.346563     1.365079
#>  8:     1.346563     1.365079
#>  9:     1.346563     1.365079
#> 10:     1.346563     1.365079
#> 11:     1.346563     1.365079
#> 12:     1.346563     1.365079
#> 13:     1.346563     1.365079
#> 14:     1.346563     1.365079
#> 15:     1.346563     1.365079
#> 16:     1.346563     1.365079
#> 17:     1.346563     1.365079
#> 18:     1.346563     1.365079
#> 19:     1.346563     1.365079
#> 20:     1.346563     1.365079
#> 21:     1.346563     1.365079
#> 22:     1.346563     1.365079
#> 23:     1.346563     1.365079
#> 24:     1.346563     1.365079
#> 25:     1.346563     1.365079
#> 26:     1.346563     1.365079
#> 27:     1.346563     1.365079
#> 28:     1.346563     1.365079
#> 29:     1.346563     1.365079
#> 30:     1.346563     1.365079
#> 31:     1.346563     1.365079
#> 32:     1.346563     1.365079
#> 33:     1.346563     1.365079
#> 34:     1.346563     1.365079
#> 35:     1.346563     1.365079
#> 36:     1.346563     1.365079
#>     elr_cc_ci_lo elr_cc_ci_hi
#>            <num>        <num>

prior 인자가 없는 점만 빼면 호출과 출력은 BF 와 같다. prior 를 따로 구할 근거가 없을 때, 자기 포트폴리오가 스스로 ELR 을 말하게 하는 방법이다.

11. fit_loss() / fit_premium() – 통합 디스패처

방법을 매번 다른 함수로 부르는 대신, fit_loss() 하나로 method 인자만 바꿔 호출할 수 있다.

fl <- fit_loss(tri1, method = "sa")
class(fl)
#> [1] "LossFit" "SAFit"   "list"

method"ed"(기본), "cl", "sa", "bf", "cc" 중 하나다. "bf"/"cc" 는 prior 등 추가 인자를 ... 로 넘긴다. fit_premium() 는 보험료 측을 따로 적합하는 짝 함수다.

fe <- fit_premium(tri1)
summary(fe)
#>     coverage     cohort premium_ult premium_total_se premium_total_cv
#>       <char>     <Date>       <num>            <num>            <num>
#>  1:  surgery 2023-01-01   274192564               NA               NA
#>  2:  surgery 2023-02-01   665667720         203317.9     0.0003054339
#>  3:  surgery 2023-03-01   702047332         262601.1     0.0003740529
#>  4:  surgery 2023-04-01  1464399410        1367093.2     0.0009335767
#>  5:  surgery 2023-05-01   483147255         703451.6     0.0014560085
#>  6:  surgery 2023-06-01   591568799        1058731.8     0.0017897177
#>  7:  surgery 2023-07-01  1958263736        3910208.1     0.0019968584
#>  8:  surgery 2023-08-01   327535560        1828256.1     0.0055820892
#>  9:  surgery 2023-09-01  1091733892        3952483.5     0.0036204828
#> 10:  surgery 2023-10-01   864204933        3794976.2     0.0043913554
#> 11:  surgery 2023-11-01   630311110        3272175.4     0.0051914680
#> 12:  surgery 2023-12-01  1057060867        4484495.4     0.0042424185
#> 13:  surgery 2024-01-01  2009045340        7688434.5     0.0038268640
#> 14:  surgery 2024-02-01   832229795        4949366.6     0.0059470920
#> 15:  surgery 2024-03-01   454345985        4045484.1     0.0089042245
#> 16:  surgery 2024-04-01  3372494516       13992783.5     0.0041491213
#> 17:  surgery 2024-05-01  1899849125       10075728.1     0.0053035580
#> 18:  surgery 2024-06-01   750125230        6364391.3     0.0084844581
#> 19:  surgery 2024-07-01  2891548085       14716651.1     0.0050896560
#> 20:  surgery 2024-08-01   976935246        8364192.9     0.0085619202
#> 21:  surgery 2024-09-01   703906575        7175630.7     0.0101943622
#> 22:  surgery 2024-10-01   984833529        9313644.4     0.0094572623
#> 23:  surgery 2024-11-01   324081360        5678519.9     0.0175216881
#> 24:  surgery 2024-12-01   366444614        6236672.5     0.0170197403
#> 25:  surgery 2025-01-01   833732378       10465225.2     0.0125525791
#> 26:  surgery 2025-02-01  3286151352       23703310.8     0.0072131978
#> 27:  surgery 2025-03-01   566316398        9534760.8     0.0168363975
#> 28:  surgery 2025-04-01   476819833       10109619.3     0.0212023387
#> 29:  surgery 2025-05-01  1027051048       16264024.8     0.0158367196
#> 30:  surgery 2025-06-01   783037474       14618828.5     0.0186703135
#> 31:  surgery 2025-07-01   859730812       17196880.8     0.0200032954
#> 32:  surgery 2025-08-01  1037192185       21996644.0     0.0212094340
#> 33:  surgery 2025-09-01   611257142       18778118.6     0.0307201006
#> 34:  surgery 2025-10-01  1338462726       33336201.9     0.0249073599
#> 35:  surgery 2025-11-01   593147593       24282233.8     0.0409388868
#> 36:  surgery 2025-12-01  1022559927       47680639.5     0.0466199619
#>     coverage     cohort premium_ult premium_total_se premium_total_cv
#>       <char>     <Date>       <num>            <num>            <num>

12. fit_ratio() – 손해율 합성

fit_ratio() 는 손해 측과 보험료 측을 각각 적합한 뒤 둘을 결합해 손해율 을 산출하는 합성(composition) 레이어다.

lr <- fit_ratio(tri1, method = "sa")
summary(lr)
#>     coverage     cohort     latest   loss_ult    reserve premium_ult
#>       <char>     <Date>      <num>      <num>      <num>       <num>
#>  1:  surgery 2023-01-01  410248522  410248522          0   274192564
#>  2:  surgery 2023-02-01  976330445 1001441303   25110858   665667720
#>  3:  surgery 2023-03-01  978486045 1026151243   47665198   702047332
#>  4:  surgery 2023-04-01 2029909919 2186771221  156861302  1464399410
#>  5:  surgery 2023-05-01  624219436  697669301   73449865   483147255
#>  6:  surgery 2023-06-01  802880717  931393934  128513217   591568799
#>  7:  surgery 2023-07-01 2539141549 3050990158  511848609  1958263736
#>  8:  surgery 2023-08-01  393678329  488218204   94539875   327535560
#>  9:  surgery 2023-09-01 1364052542 1751869308  387816766  1091733892
#> 10:  surgery 2023-10-01  979266043 1311793843  332527800   864204933
#> 11:  surgery 2023-11-01  604685679  848103123  243417444   630311110
#> 12:  surgery 2023-12-01 1026345366 1497869029  471523663  1057060867
#> 13:  surgery 2024-01-01 1912177598 2901492851  989315253  2009045340
#> 14:  surgery 2024-02-01  733902485 1160045952  426143467   832229795
#> 15:  surgery 2024-03-01  415459873  686574148  271114275   454345985
#> 16:  surgery 2024-04-01 3286053526 5687484014 2401430488  3372494516
#> 17:  surgery 2024-05-01 1451731153 2645801838 1194070685  1899849125
#> 18:  surgery 2024-06-01  629668308 1209024555  579356247   750125230
#> 19:  surgery 2024-07-01 1250954693 2542927190 1291972497  2891548085
#> 20:  surgery 2024-08-01  425346694  918120582  492773888   976935246
#> 21:  surgery 2024-09-01  278156543  635470028  357313485   703906575
#> 22:  surgery 2024-10-01  352070323  856446521  504376198   984833529
#> 23:  surgery 2024-11-01   99050501  260916096  161865595   324081360
#> 24:  surgery 2024-12-01  103194013  295637296  192443283   366444614
#> 25:  surgery 2025-01-01  227089025  710560093  483471068   833732378
#> 26:  surgery 2025-02-01  939163074 3276849152 2337686078  3286151352
#> 27:  surgery 2025-03-01  112828845  434950057  322121212   566316398
#> 28:  surgery 2025-04-01   82472453  356301148  273828695   476819833
#> 29:  surgery 2025-05-01  141214851  697290587  556075736  1027051048
#> 30:  surgery 2025-06-01  136406102  789468799  653062697   783037474
#> 31:  surgery 2025-07-01  149144024 1040451732  891307708   859730812
#> 32:  surgery 2025-08-01  116327076 1008356733  892029657  1037192185
#> 33:  surgery 2025-09-01   67465470  783000257  715534787   611257142
#> 34:  surgery 2025-10-01  121626173 2001214863 1879588690  1338462726
#> 35:  surgery 2025-11-01   15716444  576954661  561238217   593147593
#> 36:  surgery 2025-12-01    4825085 1246569307 1241744222  1022559927
#>     coverage     cohort     latest   loss_ult    reserve premium_ult
#>       <char>     <Date>      <num>      <num>      <num>       <num>
#>     ratio_latest ratio_ult maturity_from loss_proc_se loss_param_se
#>            <num>     <num>         <num>        <num>         <num>
#>  1:    1.4962059 1.4962059             4            0             0
#>  2:    1.5107824 1.5044162             4      2974816       4362011
#>  3:    1.4771448 1.4616554             4      4270032       5160023
#>  4:    1.5139132 1.4932888             4      7041128      11598550
#>  5:    1.4543748 1.4440097             4      4511892       3807155
#>  6:    1.5796369 1.5744474             4     17444256       9252798
#>  7:    1.5597190 1.5580078             4     35085745      32956647
#>  8:    1.4945957 1.4905808             4     15581189       5527584
#>  9:    1.6079808 1.6046670             4     37754499      22337518
#> 10:    1.5129472 1.5179199             4     36292444      18145424
#> 11:    1.3298743 1.3455310             4     36448974      12573545
#> 12:    1.3981081 1.4170130             4     50088510      23067166
#> 13:    1.4274951 1.4442147             4     77086126      45322232
#> 14:    1.3793745 1.3939010             4     52024922      19053928
#> 15:    1.4969280 1.5111263             4     41835349      11430104
#> 16:    1.6712898 1.6864324             4    128329943      96356457
#> 17:    1.3770835 1.3926379             4     88940013      45748540
#> 18:    1.5918247 1.6117636             4     64461772      21226463
#> 19:    0.8658750 0.8794345             4    102590260      46504658
#> 20:    0.9236050 0.9397968             4     64598903      17104018
#> 21:    0.8920448 0.9027761             4     55690523      12099317
#> 22:    0.8596968 0.8696358             4     66391237      16462136
#> 23:    0.7871749 0.8050944             4     41431955       5297452
#> 24:    0.7813438 0.8067721             4     49894835       6370067
#> 25:    0.8188282 0.8522640             4     85025980      15999454
#> 26:    0.9377837 0.9971693             4    182877119      76356271
#> 27:    0.7193486 0.7680337             4     69632308      10311279
#> 28:    0.6947510 0.7472448             4     70309787       8715699
#> 29:    0.6203897 0.6789250             4    118636641      19479723
#> 30:    0.8981587 1.0082133             4    132736664      23023332
#> 31:    1.0440457 1.2102064             4    165733132      31664923
#> 32:    0.8100543 0.9721985             4    185534229      32540766
#> 33:    0.9985960 1.2809670             4    184367813      27287599
#> 34:    1.0894657 1.4951592             4    330089483      80102400
#> 35:    0.4765917 0.9727000             4    197962944      20848833
#> 36:    0.1689836 1.2190672             4    476510733      64518340
#>     ratio_latest ratio_ult maturity_from loss_proc_se loss_param_se
#>            <num>     <num>         <num>        <num>         <num>
#>     loss_total_se loss_total_cv    ratio_se    ratio_cv ratio_ci_lo ratio_ci_hi
#>             <num>         <num>       <num>       <num>       <num>       <num>
#>  1:             0   0.000000000 0.000000000 0.000000000   1.4962059   1.4962059
#>  2:       5279836   0.005272237 0.007931639 0.005272237   1.4888705   1.5199619
#>  3:       6697687   0.006526998 0.009540221 0.006526998   1.4429569   1.4803538
#>  4:      13568488   0.006204804 0.009265565 0.006204804   1.4751286   1.5114490
#>  5:       5903524   0.008461780 0.012218892 0.008461780   1.4200611   1.4679582
#>  6:      19746299   0.021200803 0.033379548 0.021200803   1.5090246   1.6398701
#>  7:      48136785   0.015777430 0.024581360 0.015777430   1.5098292   1.6061864
#>  8:      16532623   0.033863185 0.050475812 0.033863185   1.3916500   1.5895115
#>  9:      43867607   0.025040456 0.040181593 0.025040456   1.5259125   1.6834214
#> 10:      40575829   0.030931560 0.046951629 0.030931560   1.4258964   1.6099434
#> 11:      38556734   0.045462318 0.061170958 0.045462318   1.2256381   1.4654238
#> 12:      55144837   0.036815526 0.052168081 0.036815526   1.3147655   1.5192606
#> 13:      89422455   0.030819464 0.044509924 0.030819464   1.3569769   1.5314526
#> 14:      55404374   0.047760500 0.066573409 0.047760500   1.2634195   1.5243825
#> 15:      43368695   0.063166805 0.095453018 0.063166805   1.3240418   1.6982107
#> 16:     160477852   0.028215965 0.047584318 0.028215965   1.5931688   1.7796959
#> 17:     100016273   0.037801876 0.052644324 0.037801876   1.2894569   1.4958188
#> 18:      67866655   0.056133397 0.090473767 0.056133397   1.4344383   1.7890889
#> 19:     112638558   0.044294842 0.038954413 0.044294842   0.8030853   0.9557838
#> 20:      66824889   0.072784436 0.068402577 0.072784436   0.8057302   1.0738634
#> 21:      56989717   0.089681204 0.080962047 0.089681204   0.7440934   1.0614588
#> 22:      68401742   0.079866916 0.069455131 0.079866916   0.7335063   1.0057654
#> 23:      41769245   0.160086887 0.128885060 0.160086887   0.5524843   1.0577045
#> 24:      50299824   0.170140320 0.137264466 0.170140320   0.5377387   1.0758055
#> 25:      86518205   0.121760574 0.103772154 0.121760574   0.6488743   1.0556537
#> 26:     198177499   0.060478066 0.060306869 0.060478066   0.8789700   1.1153686
#> 27:      70391625   0.161838408 0.124297345 0.161838408   0.5244153   1.0116520
#> 28:      70847933   0.198842842 0.148584283 0.198842842   0.4560250   1.0384647
#> 29:     120225256   0.172417723 0.117058695 0.172417723   0.4494941   0.9083558
#> 30:     134718580   0.170644590 0.172046146 0.170644590   0.6710091   1.3454176
#> 31:     168730965   0.162170872 0.196260228 0.162170872   0.8255434   1.5948694
#> 32:     188366269   0.186805188 0.181611732 0.186805188   0.6162461   1.3281510
#> 33:     186376242   0.238028328 0.304906445 0.238028328   0.6833614   1.8785727
#> 34:     339669635   0.169731717 0.253775939 0.169731717   0.9977675   1.9925509
#> 35:     199057783   0.345014602 0.335595702 0.345014602   0.3149445   1.6304555
#> 36:     480858705   0.385745664 0.470249902 0.385745664   0.2973944   2.1407401
#>     loss_total_se loss_total_cv    ratio_se    ratio_cv ratio_ci_lo ratio_ci_hi
#>             <num>         <num>       <num>       <num>       <num>       <num>

$full 에는 loss_proj / premium_proj / ratio_proj 와 손해율 표준오차(ratio_se)·신뢰구간(ratio_ci_lo/ratio_ci_hi)이 함께 들어 있다.

head(lr$full[, c("cohort", "dev", "loss_proj", "premium_proj",
                 "ratio_proj", "ratio_se")])
#>        cohort   dev loss_proj premium_proj ratio_proj ratio_se
#>        <Date> <int>     <num>        <num>      <num>    <num>
#> 1: 2023-01-01     1   1886123      7527562  0.2505623        0
#> 2: 2023-01-01     2  14030514     15168591  0.9249715        0
#> 3: 2023-01-01     3  24427715     22794364  1.0716559        0
#> 4: 2023-01-01     4  34672477     31558907  1.0986590        0
#> 5: 2023-01-01     5  44990229     39336754  1.1437199        0
#> 6: 2023-01-01     6  55621697     47008228  1.1832332        0

손해율 표준오차는 se_method 로 정한다 – "fixed"(기본)는 보험료를 알려진 값으로 취급하고, "delta"는 보험료의 불확실성과 손해-보험료 상관까지 델타법으로 반영한다.

plot(lr)

13. 진단 – 성숙점·수렴점·regime

적합 전후로 삼각형의 구조를 점검하는 진단 함수들이 있다.

성숙점 – ATA 인자가 안정되는 경과기간. SA 의 단계 전환점이기도 하다.

detect_maturity(tri1)
#> Key: <coverage>
#>    coverage ata_from change ata_link     mean   median       wt        cv
#>      <char>    <num>  <num>   <char>    <num>    <num>    <num>     <num>
#> 1:  surgery        3      4      3-4 1.434507 1.400098 1.417706 0.1053282
#>           f       f_se        rse    sigma n_cohorts n_valid n_inf n_nan
#>       <num>      <num>      <num>    <num>     <num>   <num> <num> <num>
#> 1: 1.417706 0.02651852 0.01870522 1372.883        33      33     0     0
#>    valid_ratio
#>          <num>
#> 1:           1

수렴점(convergence point) – 예측 손해율이 더 이상 의미 있게 움직이지 않는 경과기간. 누적 손해율의 분모가 자라며 신호를 감쇠시키는 관성(inertia) 을 이중 기준으로 걸러 검출한다.

detect_convergence(tri1)
#> <Convergence>
#>   method     : tail
#>   conv_k     : NA
#>   mat_k      : 4
#>   dev_max    : 36
#>   candidates : 31
#>   passes :
#>     window :  0/31 (drift_window < 0.01  & dispersion < 0.15)
#>     tail   :  0/31 (drift_tail   < 0.01  & dispersion < 0.15)  <- method
#>     slope  :  1/31 (|slope|      < 0.001 & dispersion < 0.15)
#>     all    :  0/31 (window AND tail AND slope)

regime – 인수 코호트 사이의 구조적 변화. 보험료·약관·인수 가이드라인 변경 등이 특정 시점 이후 코호트의 손해 양상을 바꿨는지를 탐지한다.

reg <- detect_regime(tri)
reg$changes
#>    coverage     change regime_id pre_value post_value magnitude
#>      <char>     <Date>     <int>     <num>      <num>     <num>
#> 1:  surgery 2024-07-01         2 0.9065895  0.5479919 0.3585976

experience 의 surgery 종목에는 2024 년 중 합성 regime change 가 심어져 있어, 위 결과에서 해당 변화 시점이 잡힌다.

14. backtest() – 검증

backtest() 는 최근 달력 대각선 몇 개를 가린 뒤 다시 적합하고, 가려진 실제값과 예측값을 비교해 모형의 정확도를 측정한다.

bt <- backtest(tri1, holdout = 6L, target = "ratio", loss_method = "sa")
summary(bt)
#> Backtest summary
#>   dispatcher: fit_ratio
#>   target    : ratio
#>   holdout   : 6 diagonals (159 cells)
#> 
#> By dev:
#>     coverage   dev     n      aeg_mean       aeg_med   ae_err_mean
#>       <char> <int> <int>         <num>         <num>         <num>
#>  1:  surgery     2     1 -0.2879720892 -0.2879720892 -0.3667493406
#>  2:  surgery     3     2 -0.1058236209 -0.1058236209 -0.0901195589
#>  3:  surgery     4     3 -0.0438970022  0.0217666029 -0.0230071083
#>  4:  surgery     5     4 -0.0110558266  0.0054351372  0.0118645748
#>  5:  surgery     6     5 -0.0160114000  0.0370902061  0.0134987613
#>  6:  surgery     7     6  0.0066390570  0.0520519271  0.0354091701
#>  7:  surgery     8     6  0.0387556832  0.0468493428  0.0591624141
#>  8:  surgery     9     6  0.0165983758  0.0181339640  0.0244533252
#>  9:  surgery    10     6  0.0177699119  0.0134168699  0.0253607766
#> 10:  surgery    11     6  0.0191431289  0.0114886577  0.0231290386
#> 11:  surgery    12     6  0.0007211923  0.0015017408  0.0006387361
#> 12:  surgery    13     6  0.0157220903  0.0076137593  0.0186533032
#> 13:  surgery    14     6  0.0146558512  0.0269373691  0.0203566313
#> 14:  surgery    15     6 -0.0164147403 -0.0078793254 -0.0085724729
#> 15:  surgery    16     6 -0.0053773998 -0.0036509669 -0.0020439585
#> 16:  surgery    17     6  0.0030866922 -0.0028402355  0.0055714790
#> 17:  surgery    18     6 -0.0125129664 -0.0247929775 -0.0069398934
#> 18:  surgery    19     6 -0.0113103120 -0.0086054969 -0.0082932779
#> 19:  surgery    20     6 -0.0211209295 -0.0300370470 -0.0146794960
#> 20:  surgery    21     6 -0.0123320969 -0.0288302132 -0.0081315596
#> 21:  surgery    22     6 -0.0265367863 -0.0357010146 -0.0174246731
#> 22:  surgery    23     6 -0.0241615696 -0.0113727688 -0.0160124793
#> 23:  surgery    24     6  0.0023608518  0.0086349370  0.0019991795
#> 24:  surgery    25     6 -0.0122696331 -0.0177060339 -0.0080061801
#> 25:  surgery    26     6  0.0028673644 -0.0154389229  0.0029017289
#> 26:  surgery    27     6 -0.0022551943 -0.0219579321 -0.0005984627
#> 27:  surgery    28     6  0.0021536077  0.0005528274  0.0021335463
#> 28:  surgery    29     6  0.0179714842  0.0123131943  0.0130930298
#> 29:  surgery    30     6 -0.0039272898  0.0020727095 -0.0024107193
#>     coverage   dev     n      aeg_mean       aeg_med   ae_err_mean
#>       <char> <int> <int>         <num>         <num>         <num>
#>        ae_err_med     ae_err_wt incr_aeg_mean incr_aeg_med incr_ae_err_mean
#>             <num>         <num>         <num>        <num>            <num>
#>  1: -0.3667493406 -0.3667493406   -0.57495418 -0.574954175      -0.42911219
#>  2: -0.0901195589 -0.1544635152   -0.03295105 -0.032951048       0.03104206
#>  3:  0.0437848471 -0.0656622116    0.03896663 -0.060404427       0.07170889
#>  4:  0.0123517418 -0.0162647786    0.07049188  0.081146126       0.09271533
#>  5:  0.0621128725 -0.0220352052   -0.04049602  0.091444980       0.04486252
#>  6:  0.0757446843  0.0088632803    0.12761981  0.080299453       0.16250805
#>  7:  0.0725907702  0.0550856653    0.02069969  0.007197477       0.01564729
#>  8:  0.0277518849  0.0223891429   -0.10613396 -0.136121764      -0.13147267
#>  9:  0.0171529396  0.0229537555    0.11236174  0.105535088       0.15605437
#> 10:  0.0154512077  0.0237389543    0.15969892  0.189675674       0.19686096
#> 11:  0.0018922252  0.0008808334   -0.08257465 -0.094057006      -0.08660181
#> 12:  0.0090087054  0.0190934981    0.17134975  0.064672398       0.19168084
#> 13:  0.0321857613  0.0152643056   -0.02644494 -0.114754500       0.01007152
#> 14: -0.0079107504 -0.0151493835   -0.41106393 -0.321970213      -0.28852360
#> 15: -0.0044851592 -0.0044371719    0.19818694  0.117799240       0.15063258
#> 16: -0.0018539369  0.0023518033    0.15672998  0.256737634       0.16971640
#> 17: -0.0169311833 -0.0088467233   -0.13589998 -0.185237736      -0.06313735
#> 18: -0.0054623225 -0.0075105462    0.06448340  0.048368896       0.03305654
#> 19: -0.0209835277 -0.0141893838   -0.17389925 -0.113722964      -0.11085823
#> 20: -0.0195936468 -0.0083339178    0.04888552 -0.116631342       0.04109121
#> 21: -0.0241489266 -0.0181905096   -0.22822576 -0.207832035      -0.14657964
#> 22: -0.0079804501 -0.0164674504   -0.14845744 -0.096634453      -0.09654333
#> 23:  0.0070443849  0.0016326821    0.16627897 -0.261922846       0.12001108
#> 24: -0.0128789134 -0.0083069614   -0.21608907 -0.189756124      -0.13659900
#> 25: -0.0098650416  0.0019209162    0.07312011 -0.164382561       0.05824859
#> 26: -0.0142767203 -0.0014781843   -0.32083035 -0.625762580      -0.17477888
#> 27:  0.0004018279  0.0014147005    0.06914757 -0.017229197       0.04186226
#> 28:  0.0081992616  0.0120992517    0.44252486  0.663837977       0.34283700
#> 29:  0.0012135586 -0.0026098433   -0.14700411 -0.270271875      -0.09019624
#>        ae_err_med     ae_err_wt incr_aeg_mean incr_aeg_med incr_ae_err_mean
#>             <num>         <num>         <num>        <num>            <num>
#>     incr_ae_err_med incr_ae_err_wt
#>               <num>          <num>
#>  1:    -0.429112189    -0.42911219
#>  2:     0.031042058    -0.03788330
#>  3:    -0.051312889     0.04819216
#>  4:     0.101566115     0.08262484
#>  5:     0.130130156    -0.04711615
#>  6:     0.136743653     0.14894131
#>  7:     0.008088929     0.02505782
#>  8:    -0.163940480    -0.12387084
#>  9:     0.125264952     0.13525827
#> 10:     0.236016698     0.19825482
#> 11:    -0.093881374    -0.08139958
#> 12:     0.070449982     0.19355031
#> 13:    -0.124397482    -0.02436243
#> 14:    -0.299928631    -0.30564120
#> 15:     0.148772947     0.17845143
#> 16:     0.285614433     0.13524568
#> 17:    -0.124958477    -0.09463269
#> 18:     0.033222595     0.04168906
#> 19:    -0.074261725    -0.11230739
#> 20:    -0.069418132     0.03288272
#> 21:    -0.133308413    -0.14878192
#> 22:    -0.064872712    -0.09810761
#> 23:    -0.190149810     0.11735901
#> 24:    -0.131504726    -0.14062139
#> 25:    -0.103229976     0.04391763
#> 26:    -0.317754317    -0.16402220
#> 27:    -0.009548040     0.04577902
#> 28:     0.509453512     0.33144073
#> 29:    -0.165797630    -0.08977373
#>     incr_ae_err_med incr_ae_err_wt
#>               <num>          <num>
#> 
#> By calendar diagonal:
#>    coverage cal_idx     n      aeg_mean       aeg_med  ae_err_mean   ae_err_med
#>      <char>   <int> <int>         <num>         <num>        <num>        <num>
#> 1:  surgery      31    29 -0.0125686252 -0.0056732350 -0.011309410 -0.003699313
#> 2:  surgery      32    28 -0.0104717812 -0.0114871218 -0.002794292 -0.009588959
#> 3:  surgery      33    27  0.0004718616  0.0050471735  0.007666312  0.006154835
#> 4:  surgery      34    26  0.0012851467 -0.0002953897  0.008094503  0.000421251
#> 5:  surgery      35    25 -0.0006986581  0.0145835308  0.007408947  0.009455704
#> 6:  surgery      36    24 -0.0027175011  0.0105940082  0.005874139  0.009450279
#>        ae_err_wt incr_aeg_mean incr_aeg_med incr_ae_err_mean incr_ae_err_med
#>            <num>         <num>        <num>            <num>           <num>
#> 1: -0.0107004533   -0.08350070  -0.07460811     -0.036347452     -0.06750071
#> 2: -0.0089044278   -0.07573837  -0.07440057     -0.003857981     -0.07262916
#> 3:  0.0004012161    0.18105966   0.09849605      0.147072061      0.12954698
#> 4:  0.0010973317    0.01407124  -0.02312661      0.017058138     -0.02473897
#> 5: -0.0005997009   -0.03104560  -0.09210258     -0.008476082     -0.07819464
#> 6: -0.0023535415   -0.06224227  -0.09299902     -0.016968983     -0.09358995
#>    incr_ae_err_wt
#>             <num>
#> 1:    -0.06558617
#> 2:    -0.06014060
#> 3:     0.14477037
#> 4:     0.01130928
#> 5:    -0.02508022
#> 6:    -0.05088339

target"ratio"/"loss"/"premium" 중 하나이며, 각각 fit_ratio/fit_loss/fit_premium 를 내부에서 호출한다. 결과의 A/E error 표로 어느 경과기간·대각선에서 모형이 빗나갔는지 볼 수 있다.

plot(bt)

15. 시각화 – plot() / plot_triangle()

모든 주요 객체는 두 갈래의 그림을 지원한다.

  • plot(x) – 궤적/진단 차트 (코호트별 전개 곡선, regime PCA 등).
  • plot_triangle(x) – 삼각형 히트맵 (셀별 값 또는 셀 상태).
plot_triangle(sa, label_style = "cv")

plot_triangle()label_style 은 셀 라벨을 값("value")·변동계수 ("cv")·표준오차("se")·신뢰구간("ci")으로 바꾼다. plot()type·region 등 세부 인자는 각 클래스의 도움말(?plot.CLFit 등)을 참고한다.

CL / ED / SA / BF / CC / Premium 적합 결과 모두 같은 방식으로 plot()plot_triangle() 을 지원하므로, 어떤 방법을 쓰든 시각화 인터페이스는 동일하다.

16. 함께 보기

이 문서는 핵심 작업 흐름을 한 번에 따라가는 것이 목적이다. 각 주제의 방법론적 배경과 세부 옵션은 다음을 참고한다.