흑백요리사도 피하지 못하는 미슐랭 저주: R로 분석한 이야기

미슐랭 저주; 흑백요리사는 과연
( 출처: 픽사베이 )

혹시 흑백요리사 :요리 계급 전쟁를 보셨나요? 참가자들이 흑과 백으로 나뉘어 긴장감 넘치는 요리 대결을 보입니다. 그 중에 미슐랭 스타를 거머쥔 셰프가 나와서 시청자를 설레이게도 했죠.

그런데 그 반짝이는 별 뒤에는 어두운 그림자가 있다는 걸 알고 계신가요? 미슐랭 스타는 요리사에게 꿈과도 같은 영광을 가져다주지만, 때로는 무거운 부담이 되어 돌아오기도 합니다. 바로 이 점 때문에 사람들은 ‘미슐랭 스타의 저주‘라고 부르기도 하죠.

오늘은 R을 사용해 미슐랭 저주에 대해 알아보겠습니다. 미슐랭 스타를 받은 뉴욕의 레스토랑들 중 40%가 2019년까지 폐업했다는 충격적인 연구 결과가 있습니다. 흑백요리사처럼 꿈을 이루려 했던 그들이 왜 이런 결과를 맞이하게 되었는지, 데이터를 통해 그 비밀을 파헤쳐 보겠습니다. 미슐랭 스타를 받은 레스토랑들의 생존율을 시각적으로 분석하고, R 코드를 한 줄씩 설명하며 함께 분석해봅시다.

미슐랭 저주란 무엇인가?

미슐랭 스타는 단순한 평가 그 이상입니다. 요리사들은 이 별 하나를 얻기 위해 수많은 노력을 기울이지만, 그 영광을 얻고 나서도 끝나지 않는 부담감이 그들의 어깨를 짓누릅니다. 미슐랭 스타를 받은 순간부터 요리사와 레스토랑은 더욱 많은 기대를 받게 되고, 그 기대를 충족시키기 위해서는 더 많은 비용과 압박이 따릅니다.

미슐랭 스타를 받은 후 재료비는 상승하고, 요리사는 더 높은 임금을 요구하며, 심지어 고객들의 눈높이는 끝없이 올라갑니다. 이런 상황에서 살아남지 못한 레스토랑은 폐업의 길로 접어듭니다. 그래서 사람들은 이 별을 ‘영광’이라고 부르기도 하지만 동시에 ‘저주’라고도 말하는 것이죠.

R로 미슐랭 저주 시각화하기

이제, 미슐랭 저주가 얼마나 실제로 영향을 미쳤는지 데이터를 통해 분석해볼까요? R을 활용해 미슐랭 스타를 받은 레스토랑의 생존율을 시각화해보겠습니다. 이 과정에서 사용된 코드는 한 줄 한 줄 자세히 설명해드릴 테니, 초보자분들도 쉽게 따라오실 수 있어요!

# 필요한 라이브러리를 불러옵니다
library(survival)
library(survminer)

# 2000년부터 2014년까지 미슐랭 스타를 받은 레스토랑 데이터 생성
# close_year: 레스토랑이 문을 닫은 해, 만약 2019년까지 영업 중이라면 NA로 표시
data <- data.frame(
  year = c(2000:2014),
  close_year = c(2007, NA, 2012, NA, 2013, 2014, NA, 2017, 2018, 2019, NA, NA, 2019, NA, NA)
)

# 레스토랑이 몇 년 동안 운영되었는지 계산
# 만약 2019년까지 문을 열고 있다면 2019년 기준으로 운영 기간 계산
data$time_open <- ifelse(is.na(data$close_year), 2019 - data$year, data$close_year - data$year)

# 레스토랑이 폐업했는지 여부를 1과 0으로 표시 (1: 폐업, 0: 영업 중)
data$status <- ifelse(is.na(data$close_year), 0, 1)

사실 최대한 Economist의 기사의 원데이터를 찾아보았지만 찾을 수가 없어서 이 수준에서 밖에 시각화를 할 수 밖에 없는 점 양해 부탁드립니다.

코드 설명:

  1. data.frame: 먼저 2000년부터 2014년 사이에 미슐랭 스타를 받은 레스토랑 데이터를 생성합니다. close_year는 해당 레스토랑이 폐업한 해를 나타내며, 2019년까지 영업 중인 곳은 NA로 처리합니다.
  2. time_open: 레스토랑이 몇 년 동안 영업했는지를 계산하는 코드입니다. 2019년까지 영업 중인 경우 2019년을 기준으로 운영 기간을 계산합니다.
  3. status: 폐업 여부를 나타내는 변수입니다. 폐업한 경우 1, 아직 영업 중인 경우 0으로 표시됩니다.

위에서 가상으로 생성한 데이터를 확인해 보면 아래와 같이 확인할 수 있습니다.

( 콘솔에서 확인한 data )
( View 명령어로 확인한 data )
# Kaplan-Meier 생존 모델을 적용하여 생존 곡선 생성
fit <- survfit(Surv(time_open, status) ~ 1, data = data)

# 생존 곡선을 시각화 (데이터를 명시적으로 전달)
ggsurvplot(fit,
           data = data,  # ggsurvplot에 데이터 전달
           conf.int = TRUE,  # 신뢰구간 표시
           xlab = "미슐랭 스타를 받은 후 경과된 연도",  # x축 레이블
           ylab = "영업 중인 레스토랑의 비율",  # y축 레이블
           title = "미슐랭 스타를 받은 레스토랑의 생존 곡선",  # 그래프 제목
           palette = "blue",  # 그래프 색상
           risk.table = TRUE,  # 각 연도별 리스크 테이블 추가
           ggtheme = theme_minimal())  # 미니멀 테마 적용

코드 설명:

  1. Kaplan-Meier 모델을 사용하여 레스토랑의 생존 곡선을 그립니다. 이 생존 곡선은 미슐랭 스타를 받은 이후 레스토랑이 몇 년 동안 살아남았는지를 시각화합니다.
  2. ggsurvplot: 생존 곡선을 시각화하는 함수입니다. conf.int = TRUE는 신뢰 구간을 표시하고, risk.table을 통해 각 해마다 남아 있는 레스토랑의 수를 추가적으로 보여줍니다.
  3. palette = "blue": 파란색을 사용하여 그래프를 더 보기 좋게 꾸몄습니다.

시각화 결과 설명:

미슐랭 저주 시각화 결과
( 미슐랭 저주 시각화 결과 )

1. 생존 곡선 개요:

  • 파란색 선은 2000년부터 2014년까지 미슐랭 스타를 받은 레스토랑의 생존 곡선을 나타냅니다.
  • x축은 레스토랑이 미슐랭 스타를 받은 후 경과된 연도를 보여줍니다.
  • y축은 아직 영업 중인 레스토랑의 비율을 나타냅니다.

2. 곡선의 주요 지점:

  • 곡선은 0년 시점에서 100% (또는 1.0)에서 시작하는데, 이는 모든 레스토랑이 미슐랭 스타를 받은 직후에는 영업 중이었다는 의미입니다.
  • 시간이 지나면서 곡선이 계단식으로 내려가는데, 이는 해당 시점에 일부 레스토랑이 폐업했음을 나타냅니다.
  • 5년, 7년 등의 지점에서 곡선이 급격히 내려가며, 이는 여러 레스토랑이 그 시점에 문을 닫았음을 의미합니다.
  • 그래프의 끝부분(약 17년)이 되면, 약 25%의 레스토랑만이 영업을 유지하고 있습니다.

3. 회색 음영 (신뢰 구간):

  • 파란색 선 주변의 회색 음영은 신뢰 구간을 나타냅니다.
  • 이는 생존 확률에 대한 불확실성을 의미하며, 음영이 넓을수록 해당 확률에 대한 불확실성이 크다는 것을 나타냅니다.
  • 시간이 지남에 따라 신뢰 구간이 넓어지는데, 이는 시간이 흐를수록 데이터의 불확실성이 커짐을 의미합니다.

4. 위험에 처한 수 (Number at Risk) 테이블:

  • 그래프 하단에는 “Number at risk”라는 테이블이 있습니다.
  • 이는 각 시점에서 여전히 영업 중인 레스토랑의 수를 보여줍니다.
  • 예를 들어, 0년 시점에서는 15개의 레스토랑이 있었고, 10년 후에는 7개의 레스토랑만 남아 있었습니다.
  • 17.5년이 지나면 1개의 레스토랑만이 영업 중인 상태로 남아 있습니다.

5. 곡선 해석:

  • 곡선이 급격하게 하락하는 부분은 다수의 레스토랑이 폐업한 시점을 의미합니다.
  • 10년 이후로는 곡선이 천천히 내려가며, 그 시점부터는 폐업하는 레스토랑의 수가 줄어들지만 여전히 폐업이 발생하고 있음을 보여줍니다.
  • 최종적으로 25% 정도의 레스토랑만이 약 17.5년 후에도 영업을 유지하고 있다는 결과를 보여줍니다.

미슐랭 저주, 그 무거운 현실

생존 곡선을 통해 본 미슐랭 스타의 결과는 분명합니다. 미슐랭 스타를 받은 레스토랑의 생존율은 해가 갈수록 급격히 떨어지며, 많은 레스토랑이 문을 닫는다는 것을 확인할 수 있습니다. 특히 뉴욕에서는 미슐랭 스타를 받은 레스토랑의 40%가 2019년까지 폐업했다는 충격적인 사실이 있습니다.

이렇게 많은 레스토랑들이 폐업하는 이유는 무엇일까요? 그것은 바로 고객들의 높아진 기대와 그로 인한 비용 상승 때문입니다. 고객들은 미슐랭 스타를 받은 곳이라면 당연히 최고의 서비스와 최고의 재료를 기대하고, 레스토랑은 그 기대를 맞추기 위해 끊임없이 투자해야 합니다. 하지만 그 과정에서 늘어나는 재정 부담을 감당하지 못해 결국 폐업하는 것이죠.

미슐랭 스타를 받는 것은 분명 요리사에게 최고의 영광일지 모르지만, 동시에 그것은 무거운 책임을 지는 일이기도 합니다. 그래서 우리는 이 현상을 ‘미슐랭 저주’라고 부릅니다. 이 저주를 피해갈 수 있는 요리사는 많지 않습니다. 흑백요리사에 출연한 셰프 중에서도 그런 케이스를 엿볼 수 있습니다.

정리하기: 흑백요리사도 피해갈 수 없는 미슐랭 저주

오늘 R로 미슐랭 저주에 대해 분석해보았는데요, 그 결과는 놀랍습니다. 미슐랭 스타는 영광이지만 그 뒤에는 무거운 부담과 높은 기대가 따라오고, 이로 인해 많은 레스토랑들이 문을 닫습니다. 데이터를 통해 확인한 결과, 이 저주는 신화가 아니라 현실임을 알 수 있었습니다.

만약 여러분도 미슐랭 저주에 대해 더 알고 싶다면, 오늘 소개해드린 R 코드를 실행해보세요. 여러분만의 데이터로 분석을 시도해보는 것도 좋은 경험이 될 겁니다! 그리고 오늘 소개드린 Kaplan-Meier 모델이 쉽게 와닿지 않는데 다른 포스트로 다시 이 내용을 쉽게 소개드리겠습니다.

#전체 R코드

전체 코드를 다시 보여드리며 이 포스트를 마치도록 하겠습니다.

# 필요한 라이브러리를 불러옵니다
library(survival)
library(survminer)

# 2000년부터 2014년까지 미슐랭 스타를 받은 레스토랑 데이터 생성
# close_year: 레스토랑이 문을 닫은 해, 2019년까지 영업 중이면 NA로 표시
data <- data.frame(
    year = c(2000:2014),
    close_year = c(2007, NA, 2012, NA, 2013, 2014, NA, 2017, 2018, 2019, NA, NA, 2019, NA, NA)
)

# 레스토랑이 몇 년 동안 운영되었는지 계산
# 2019년까지 영업 중인 경우 2019년을 기준으로 운영 기간 계산
data$time_open <- ifelse(is.na(data$close_year), 2019 - data$year, data$close_year - data$year)

# 레스토랑이 폐업했는지 여부를 1과 0으로 표시 (1: 폐업, 0: 영업 중)
data$status <- ifelse(is.na(data$close_year), 0, 1)

# Kaplan-Meier 생존 모델을 적용하여 생존 곡선 생성
fit <- survfit(Surv(time_open, status) ~ 1, data = data)

# 생존 곡선을 시각화 (데이터를 명시적으로 전달)
ggsurvplot(fit,
           data = data,  # ggsurvplot에 데이터 전달
           conf.int = TRUE,  # 신뢰구간 표시
           xlab = "미슐랭 스타를 받은 후 경과된 연도",  # x축 레이블
           ylab = "영업 중인 레스토랑의 비율",  # y축 레이블
           title = "미슐랭 스타를 받은 레스토랑의 생존 곡선",  # 그래프 제목
           palette = "blue",  # 그래프 색상
           risk.table = TRUE,  # 각 연도별 리스크 테이블 추가
           ggtheme = theme_minimal())  # 미니멀 테마 적용

유사한 게시물