오늘손님 지수는 동네 규모, 업종의 평일·주말 배율, 요일, 시간대 곡선을 곱한 뒤 0~100으로 맞춘 값이에요. 이 가운데 동네 규모·요일·시간대는 서울 생활인구 통계에서 계산한 값이고, 업종 배율과 몇몇 기준값은 직접 정한 추정치예요. 어디까지가 실측이고 어디부터가 추정인지, 서비스에 실제로 쓰는 수치를 그대로 적었어요. 아래 내용은 2026년 10월 기준이에요.
지수는 어떤 순서로 계산할까요?
서울 매장을 검색해서 정확한 위치를 잡았을 때의 계산이에요. 세 단계로 나뉘어요.
- 하루 기준값 — raw = c × r_dong × d_dow 를 구한 뒤, S_day = 100 × (raw − catMin) ÷ (catMax − catMin) 로 0~100에 맞춰요. 범위를 벗어나면 0이나 100으로 잘라요.
- 시간대 보정 — S_t = S_day × k_t 로 시간마다 값을 만들어요.
- 오늘 지수 — 지금부터 24시까지의 S_t 중 가장 높은 값이에요. 0~34는 여유, 35~64는 보통, 65~100은 혼잡으로 표시해요.
각 항목은 이렇게 정해요.
- c(업종 배율) — 업종마다 평일과 주말에 곱하는 값이에요. 아래 표의 값이고, 직접 정한 추정치예요.
- r_dong(동네 규모) — 동네의 평균 생활인구가 서울 427개 동 가운데 어디쯤인지(백분위 p)를 0.7 + 0.8 × p 로 바꾼 값이에요. 0.7~1.5 사이에 들어와요.
- d_dow(요일 보정) — 그 동네의 요일별 하루 인구 평균을 일곱 요일 평균으로 나눈 값이에요. 0.8~1.2 범위로 잘라서 써요.
- catMin, catMax — 0과 100에 해당하는 기준이에요. catMin은 평일 배율 × 0.7 × 0.8, catMax는 주말 배율 × 1.5 × 1.2 로, 각각 가장 한산할 때와 가장 붐빌 때를 가정한 값이에요.
- k_t(시간대 보정) — 하루를 00-06, 06-11, 11-14, 14-17, 17-21, 21-24 여섯 구간으로 나눠 구간 평균 인구를 여섯 구간의 평균으로 나눈 값이에요. 구간의 가운데 시각(3시, 8시 30분, 12시 30분, 15시 30분, 19시, 22시 30분) 사이는 직선으로 이어서 시간별 값을 만들어요.
실제 동네로 계산하면 어떤 값이 나올까요?
마포구 서교동에서 외식업을 고른 경우예요. 외식업의 catMin은 0.56, catMax는 2.43이에요.
서교동 외식업의 월요일·토요일 계산 (서울 열린데이터광장 생활인구 2026년 8월 기준)
| 항목 | 월요일 | 토요일 |
|---|---|---|
| 업종 배율 c | 1.00 | 1.35 |
| 동네 규모 r_dong | 1.493 | 1.493 |
| 요일 보정 d_dow | 0.949 | 1.077 |
| raw | 1.417 | 2.171 |
| 하루 기준값 S_day | 46 | 86 |
| 오늘 지수 (시간대 보정 후 최고값) | 63 | 100 |
월요일은 하루 기준값이 46인데, 점심 이후 곡선이 올라가는 시간대(15~16시 무렵)까지 보정하면 가장 높은 값이 63이 돼요. 월요일 낮 12시의 시간대별 값은 49이에요. 토요일은 하루 기준값이 86인데 시간대 보정을 거치면 100을 넘어서 100으로 잘려요. 100에 닿으면 그보다 더 붐비는 정도는 구분되지 않는다는 뜻이기도 해요. 결과 화면의 요일별 막대에는 하루 기준값(46, 86)이, 오늘 지수에는 시간대 보정을 거친 최고값(63, 100)이 쓰여서 두 숫자가 달라요.
업종별 배율은 실측일까요?
아니요. 업종별 평일·주말 배율은 서울 생활인구처럼 업종별로 측정한 자료가 아니라 직접 정한 추정값이에요. 현재 쓰는 값은 아래와 같아요.
업종별 평일·주말 배율 c (직접 정한 추정값, 실측 아님)
| 업종 | 평일 | 주말 |
|---|---|---|
| 외식업 | 1.00 | 1.35 |
| 리테일 | 0.90 | 1.45 |
| 체험·여가 | 0.60 | 1.80 |
| 기타 | 1.00 | 1.25 |
| 미용·생활 교육·의료 | 1.00 | 1.25 |
미용·생활, 교육, 의료는 검증하지 못한 값을 따로 만들지 않으려고 기타와 같은 값을 그대로 쓰고 있어요. 그래서 이 세 업종을 고르면 기타를 골랐을 때와 지수가 완전히 같아요. 체험·여가는 주말 배율이 평일의 3배(0.60 → 1.80)로 가장 크게 잡혀 있는데, 체험·여가 매장이 몰린 동네 글에서 본 실제 주말 증가율은 대부분 +2.8~8.8% 수준이었어요. 동네 전체 인구와 매장 방문은 다르기 때문에 곧바로 비교할 수는 없지만, 다시 검토할 값으로 보고 있어요.
실시간 데이터는 어떻게 섞을까요?
서울시 실시간 도시데이터의 측정 장소 121곳 중 매장에서 가장 가까운 곳까지의 거리로 비중을 정해요. 500m 안이면 실시간 70%, 500m 넘고 700m 이내면 40%를 반영하고, 700m가 넘으면 통계만 써요.
실시간 혼잡도는 여유 20, 보통 45, 약간 붐빔 70, 붐빔 90으로 바꿔서 계산해요. 이 기준점도 직접 정한 값이에요. 현재 시간대와 서울시가 함께 알려주는 이후 시간대 예측에 대해 이렇게 섞어요.
- 섞은 값 = 비중 × 실시간 기준점 + (1 − 비중) × 통계 S_t
- 예를 들어 위 서교동 월요일 낮 12시의 통계값은 49이고, 실시간 혼잡도가 '보통'이라고 가정하면 500m 안은 46, 500~700m는 48이 돼요.
서울 밖이거나 위치를 정하지 못했을 때는 어떻게 계산할까요?
경기·제주·광역시처럼 동네별 생활인구 통계가 없는 지역이나, 서울에서도 구·동만 직접 고르신 경우에는 지역 프리셋을 써요. 지역마다 미리 정해 둔 보정값(0.70~1.50)에 업종 배율을 곱하고, 요일 보정은 1로 고정해요. 시간대 곡선도 동네의 실측이 아니라 업종별로 직접 정한 24시간 가중치예요. 이 경로에서는 실시간 데이터를 섞지 않아요.
제주만 한 가지가 더 있어요. 제주 전체 입도객 수가 전주 같은 요일보다 얼마나 늘거나 줄었는지를 절반만 반영하고, 변화폭은 ±15%로 제한해요. 이틀 넘게 지난 데이터는 쓰지 않아요.
정리하면 데이터 등급은 세 가지예요.
- 실시간 반영(live) — 서울 정밀 위치에서 측정 장소가 700m 안이고 실시간 값을 받아왔을 때. 화면에 '실시간 반영'으로 표시해요.
- 통계 추정(stat) — 서울 정밀 위치에서 측정 장소가 700m 밖이거나 실시간 값을 받아오지 못했을 때. 동네 생활인구 통계만 써요. 화면에 '통계 추정'으로 표시해요.
- 지역 프리셋(preset) — 위 프리셋 계산이에요. 화면에는 stat과 같은 '통계 추정'으로 표시해요.
지수에 반영되지 않는 것은 무엇일까요?
날씨와 공휴일은 지수 계산에 들어가지 않아요. 비 예보, 폭염, 한파, 공휴일은 '오늘 이렇게 해보세요' 안내 문구를 고르는 데만 쓰여요. 매장의 크기나 메뉴, 영업시간 같은 개별 정보도 쓰지 않아요. 그래서 실시간 측정 장소 밖이라면 같은 동네·같은 업종·같은 요일의 지수는 어느 주에 확인해도 같아요. 지수가 날짜마다 달라 보이는 건 요일과 시간대가 바뀌기 때문이에요.
그래서 이 지수는 어디까지 믿어도 될까요?
- 생활인구는 서울 열린데이터광장의 내국인 기준 2026년 8월 한 달 자료예요. 휴가철 한 달이라 계절별 차이와 외국인 방문은 담지 못했고, 동네 전체 인구라서 매장 손님 수와는 달라요.
- 요일 보정을 0.8~1.2로 잘라 쓰고 있어요. 서울 427개 동의 요일값 2,989개 중 58개(29개 동)가 이 범위에 걸렸어요. 주말과 평일 차이가 큰 동네는 지수상으로 실제보다 작게 보일 수 있어요.
- 업종 배율, 실시간 기준점, 여유·보통·혼잡의 경계(34, 64)는 직접 정한 초기값이에요. 경계는 데이터가 쌓이면 조정할 계획이에요.
- 실제 매장 손님 수와 맞춰 본 정확도 검증은 아직 하지 못했어요.
- '업종 경쟁 현황'은 상가정보의 매장 수를 따로 보여주는 참고 지표예요. 0~100 지수와 합치거나 섞지 않아요.
그래서 지수는 손님 수 예측이 아니라 "이 동네의 평소 흐름에서 오늘이 어느 정도 위치인지" 보는 용도로 써 주세요. 같은 매장의 요일별·시간대별 흐름을 견주는 데 가장 잘 맞아요.