Skip to contents

보험 경험 데이터의 손해율 분석과 추정.

개요

lossratio는 long-format 경험 데이터로부터 장기 건강보험 손해율을 분석하기 위한 도구 모음이다 — 한 행이 (코호트 × 경과 기간 × 인구통계) 셀 하나에 대응하며, 손해액과 위험보험료 컬럼을 가진다. 다년 보장 건강보험은 손해가 천천히 누적된다. 초기 경과 기간에서 ATA 인자(age-to-age factor)는 불안정하며, 익스포저(≈ 위험보험료)가 추정의 가장 신뢰할 만한 기준이 된다. 또한 상품 개정, 인수 기준 변경, 규제 개혁에서 비롯된 구조적 변화(structural break)가 코호트에 걸쳐 누적된다. 이 패키지의 기본값 — 단계 적응형(stage-adaptive, SA) 추정, 초기 경과 기간의 노출 기반(exposure-driven, ED) 모형, 코호트 regime 탐지 (regime: 유사한 손해 추이를 공유하는 인수 코호트들의 묶음) — 은 이러한 환경에 맞게 조정되어 있다. 동일한 도구는 누적 손해 / 익스포저 구조라면 어떤 영역에도 적용 가능하다 (사망률, 발병률, 일반 손해).

제공 기능:

  • 경험 데이터의 세 가지 집계 프레임: 코호트 × 경과 기간 (Triangle), 달력 기간 (Calendar), 포트폴리오 전체 (Total)
  • age-to-age (ATA) 와 노출 기반 (ED) 의 경과 기간 모형화
  • chain ladder 추정 (fit_cl) 과 손해율 추정 (fit_lr), 세 가지 method 지원:
    • "sa"단계 적응형 (default): 성숙점 이전은 노출 기반, 이후는 chain ladder
    • "ed" — 모든 경과 기간에 대해 노출 기반
    • "cl" — 고전적 chain ladder (Mack 모형)
  • 구조적 변화에 대한 코호트 regime 탐지 (detect_cohort_regime)
  • 진단 및 Triangle 시각화

입력 형식

최소한 다음 컬럼을 포함하는 long-format data.frame / data.table:

컬럼 의미 예시
cohort 인수 / 사고 시점 (집계 주기 무관) uym, uy
dev 코호트 시작 시점 이후 경과 기간 elap_m, elap_y
loss 셀 내 증가분 클레임 금액 numeric
rp 셀 내 증가분 위험보험료 (기대손해액) numeric
group 선택 — 보장, 상품, 연령대, 성별 등 character / factor

as_experience() 는 스키마를 검증하고 날짜 컬럼을 코어션한다. 이어서 build_triangle() 은 표준 코호트 × 경과 기간 구조로 집계하며, 누적 컬럼과 파생 비율을 함께 산출한다.

설치

# devtools
devtools::install_github("seokhoonj/lossratio")

# remotes
remotes::install_github("seokhoonj/lossratio")

이 패키지는 seokhoonj/insteadseokhoonj/ggshort 에 의존한다 (Remotes: 를 통해 자동 설치).

Quick Start

library(lossratio)

# 번들로 제공되는 합성 경험 데이터
# 경과에 따른 곡선 형태는 실제 포트폴리오의 전체 형태에 맞춰 보정
# 셀 값과 코호트 패턴은 무작위 생성
data(experience)
exp <- as_experience(experience)

# 표준 코호트 × dev 구조 구축
tri <- build_triangle(exp, group_var = cv_nm)

plot(tri)              # cohort trajectories
plot_triangle(tri)     # cell heatmap

# ATA 와 노출 기반 발전 모형
ata <- build_ata(tri, value_var = "closs"); fit_ata(ata)
ed  <- build_ed(tri);                       fit_ed(ed)

# Chain ladder 적합
cl <- fit_cl(tri, value_var = "closs", method = "mack")
plot(cl, type = "projection")

# 손해율 적합 (default: 단계 적응형)
lr <- fit_lr(tri, method = "sa")
plot(lr, type = "clr")
summary(lr)

# 코호트 간 구조적 변화 탐지
detect_cohort_regime(tri[cv_nm == "SUR"], K = 12, method = "ecp")

집계 프레임

동일한 long-format 경험 데이터를 세 가지 관점으로 본다:

Builder 출력 객체 차원 활용
build_triangle() Triangle 코호트 × 경과 기간 (2D) Chain ladder, ED, SA 추정
build_calendar() Calendar 달력 기간 (1D) 달력연도 추세 / 대각선 효과
build_total() Total 포트폴리오 전체 (0D, 그룹별) 그룹 간 고수준 비교

build_triangle 이후의 컬럼은 입력된 집계 주기 (uym / uyq / uy 등) 와 무관하게 cohortdev 로 표준화된다. 원본 컬럼명과 집계 주기는 attribute (cohort_var, cohort_type, dev_var, dev_type) 로 보존된다.

Methods

단계 적응형

fit_lr(method = "sa") (default). 노출 기반과 chain ladder 의 결합으로, 그룹별 성숙점에서 전환된다:

  • 성숙점 이전: 노출 기반 추정 ΔCL=gkCkP\Delta C^L = g_k \cdot C^P_k — ATA 인자가 변동성이 큰 구간에서 추정값을 보험료 규모에 고정한다.
  • 성숙점 이후: chain ladder 추정 Ck+1L=fkCkLC^L_{k+1} = f_k \cdot C^L_k — ATA 인자가 안정된 이후 코호트의 관측 수준을 보존한다.

노출 기반

fit_lr(method = "ed"). 모든 미래 손해 증가분이 익스포저(≈ 위험보험료)를 분모로 사용한다. ATA 인자가 정보량이 부족하거나 전 구간에 걸쳐 불안정할 때 적합하다.

Chain Ladder

fit_lr(method = "cl") 또는 fit_cl(). 고전적 Mack chain ladder. 선택적 log-linear tail factor 와 해석적 Mack 표준오차를 지원한다.

시각화

두 S3 generic 모두 객체 클래스에 따라 dispatch 된다:

plot(x)              # base plot generic — line / panel diagnostics
plot_triangle(x)     # lossratio generic — cell heatmap layout

plot()plot_triangle()Triangle, Calendar, ATA, ATAFit, ED, EDFit, CLFit, LRFit, CohortRegime 객체 전반에 일관되게 작동한다.

문서

?build_triangle
?fit_lr
?detect_cohort_regime
vignette("regime-detection", package = "lossratio")

라이선스

GPL (>= 2). LICENSE.md 참조.

Author

Seokhoon Joo ()