1. Subject

요약

국내에서 많이 활용되고 있는 4개(소상공인 상권정보시스템, 나이스비즈맵, 지오비전, 우리마을 가게 상권분석 서비스)의 대표적인 상권분석 서비스들은 기업의 자체 데이터 및 공공데이터를 활용하여 단편적인 정보 제공이 그친다. 본 프로젝트의 목적은 서울시가 제공하고 있는 ’우리마을 가게 상권분석 서비스’를 바탕으로 추가적인 데이터 분석을 통해 서울시 및 자치구의 창업 관련 정책지원에 활용될 수 있도록 인사이트를 제공하여 자영업자에 대한 지원을 거시적 관점으로 전환하고 자영업자의 자생력을 높이는 정책 수립 및 집행 과정에 활용되고자 한다.

모델링 아이디어

서울시 골목상권의 점포당 매출액 크기에 따른 다양한 분석을 제공하기 위해 분위회귀분석(Quantile Regression)을 사용한다. Quantile Regression이란 종속변수의 조건부 평균을 추정하는 단일 모형이 아닌 조건부 분위별로 차별화된 모형을 추정하여 대표값만이 아닌 분포패턴 변화를 볼 수 있는 분석 방법이다. 평균에 비해 이상치(outliers)나 비대칭분포(skewed distribution)에 민감하게 반응하지 않는 추정치를 제공한다.

분위회귀분석은 종속변수를 기준으로 분석대상을 줄 세우고 이를 N등분 했을 때, 나뉜 각각의 구간에서 독립변수들이 지니는 효과의 크기가 모두 다를 수 있음을 상정한다. 다시 말해 분석대상들이 수준에 따라 매우 이질적(heterogeneous)일 때, 분위회귀분석을 통해 좀 더 정교한 분석이 가능하다.

\[ y_i = \beta_{\tau}'X_i + u_{\tau i}, \quad Q_{\tau} (y_i \mid X_i) = \beta_{\tau}'X_i \qquad (i=1,2, \dots, n)\]

여기서 \(\beta_{\tau}\)\((k \times 1)\) 계수 벡터, \(X_i\)는 설명변수의 \((k \times 1)\) 벡터, \(u_{\tau i}\)는 오차항(error terms)을 각각 나타내며, \(Q_{\tau} (y_i \mid X_i)\)\(X\)가 주어진 상태에서의 \(y\)\(\tau\)번째 조건부 분위(conditional quantile)를 가리킨다. 물론 모든 \(i\)에 대하여 \(Q_{\tau}(u_{\tau i} \mid X_i) =0\)이 성립한다. 분위회귀계수 \(\beta_{\tau}\)의 추정치는 주어진 분위(\(\tau\))하에서 다음 최소화 문제의 해가 된다.

\[\min \frac{1}{n} \{ \sum_{y_i \geq \beta'X_i} \tau | y_i - \beta'X_i | + \sum_{y_i < \beta'X_i} (1- \tau) | y_i - \beta'X_i| \}\]


2. Data

데이터 탐색 및 전처리

기본적으로 서울시 공공데이터 포털에서 제공하는 ‘골목상권영역 및 프로파일링’ 자료를 활용한다. 자료는 43개 생활밀착형 업종에 대한 1,008개 골목상권 영역을 대상으로 한다. 데이터 merge를 위해 기준년월, 상권, 서비스 업종 코드를 기준으로 매칭하였다 상당수의 결측치가 존재하여 아래의 기준으로 데이터 전처리를 시행하였으며, 2014년 1월부터 2017년 6월 자료를 분석 대상으로 삼았다.

분류 컬럼 한글 명 NA 처리 기준
Basic 총 유동인구 수 골목별 평균으로 대체
Basic 총 직장인구 수 0으로 대체(관련 컬럼이 모두 NA인 경우 조사되지 않은 것으로 추정)
Basic 총 상주인구 수 0으로 대체(관련 컬럼이 모두 NA인 경우 조사되지 않은 것으로 추정)
Basic 월 평균 소득금액 골목별 평균으로 대체
Basic 지출 총금액 골목별 평균으로 대체
Basic 집객시설 수 14년도 : 골목별 15년 1월 데이터로 대체, 15년도 이후 : 골목별 평균으로 대체
Basic 총 가구 수 14년도 : 골목별 15년 데이터로 대체, 15년도 이후 : 골목별 평균으로 대체
Basic 전년도 매출 금액 NA제거
Basic 전년도 매출 건수 NA제거
Basic 전년도 점포수 NA제거

변수 선택 및 Scaling 과정

서울시에서 제공하는 공공데이터 자료를 위와 같이 merge 후 결측값 처리 후 자료를 변수 선택을 하고 scaling 과정을 통해 여러 모형 중 Adjusted R2 값을 고려하고 왼쪽으로 치우쳐 있는 반응변수 분포를 보고 log 변환시 각 설명변수의 계수추정값을 아래의 표와 같이 비교해 본 후 최종 모형 선택하였다.

변수/변수변화 기본회귀 설명변수스케일링적용 반응변수(매출액) log10 매출변화율추가 작년매출추가 작년매출/점포수
Intercept 15.81 14.88797 6.464 13.5603804 5.6407524 2.2113273
총 유동인구수 0.00001571 0.1959947 0.08512 0.1948344 0.1271496 0.0581184
총 직장인구수 0.000147 0.2714333 0.1179 0.3141601 0.0853105 0.0478908
총 상주인구수 -0.0001294 -0.2334790 -0.1014 0.0026710 -0.0694175 -0.0401509
지출 총 금액 0.000000 0.0298575 0.01297 -0.2324817 -0.1164573 0.0123447
집객 시설수 0.009681 0.0077166 0.003351 0.0073031 -0.0056289 0.0011983
월평균소득금액 NA NA NA 0.4047557 0.1101651 -0.0048163
매출변화율 NA NA NA 1.1876134 NA NA
작년매출(/점포) NA NA NA NA 0.6062615 0.8437535
Adjusted R2 0.01725 0.01583 0.01583 0.1029 0.5773 0.7105

최종변수 정의

Basic 변수 단위 정의 Scaling
점포당 매출 금액 당월 매출금액을 점포수로 나눈 금액 자연로그
총 유동인구 수 골목상권의 유동인구 log10
총 직장인구 수 골목상권에 위치한 회사에서 근무하는 인구 log10
총 상주인구 수 골목상권에 주거지를 둔 인구 log10
당월 매출 건수 골목상권에 해당하는 상점의 거래건수 log10
월 평균 소득 금액 상주인구의 월 평균 소득 log10
집객시설 수 골목상권 상점 수 없음
남성매출액 비율 % 당월 해당 골목상권의 총 매출액 중 남성이 해당하는 비율 없음
주말매출액 비율 % 당월 해당 골목상권의 총 매출액 중 주말이 해당하는 비율 없음
작년매출/점포수 전년도 해당월매출금액을 점포수로 나눈 금액 log10

3. 분석과정 및 결과

3.1 시나리오

분석 시나리오

유의미한 분석 결과를 얻기 위해 전체 데이터셋에 대한 분석 외에 다양한 시나리오를 구성하여 분석하였다. 점포당 매출액에 따른 1) 업종(외식업, 서비스업, 도소매업)의 영향력 2) 전년대비 매출 그룹화 3) 주요상권(마포, 강남, 관악)의 영향력을 보고 남자매출 비율 , 주말매출 비율을 설명변수에 추가하여 분석하였다.

시나리오 세부 설명

전년도 점포당 매출액(전년도 해당월 매출액/전년다도 점포수) 대비 당해년도 점포당 매출액(당월 매출액/점포수)를 살펴본 결과, 3개의 그룹으로 나누어진다.

  • 그룹 1 : A ≤ 0.78

  • 그룹 2 : 0.78 < A < 1.39

  • 그룹 3 : A ≥ 1.39

그룹 1은 매출 하락 ,그룹 2는을 매출 유지,그룹 3은 매출 상승이라 볼 수 있다.


3.2 기본변수 분석(남자매출액, 주말매출액 제외)

업종별 분석

외식업: quantile regression
유동인구수: tau 0.5(0.05756) 대비 tau 0.9(0.05987)일 때 1.04배
직장인구수: tau 0.5(0.01496) 대비 tau 0.9(0.01122)일 때 0.75배
상주인구수: tau 0.5(-0.0677) 대비 tau 0.9(-0.01760)일 때 0.26배
월평균소득: tau 0.5(0.0064) 대비 tau 0.9(0.1322)일 때 20배 <=p-value 0.80177
집객시설 : 집객시설수가 늘어나면 tau 0.5일 때 매출 증가 tau 0.9일 때 매출 감소<=p-value 0.21185

서비스업: quantile regression
유동인구수: tau 0.5(0.06609) 대비 0.9(0.08950)일 때 1.35배
직장인구수: tau 0.5(0.03255) 대비 0.9(0.02893)일 때 0.89배
상주인구수: tau 0.5(-0.00804) 대비 0.9(-0.02648)일 때 3.29배
월평균소득: 월소득 늘어나면 tau 0.5일 때 매출 감소 tau 0.9일 때 매출 증가
집객시설 : 집객시설수가 늘어나면 tau 0.5일 때 매출 증가 tau 0.9일 때 매출 감소

도소매업: quantile regression
유동인구수: tau 0.5(0.04498) 대비 0.9(0.04617)일 때 1.03배
직장인구수: tau 0.5(0.01947) 대비 0.9(0.02022)일 때 1.04배
상주인구수: tau 0.5(-0.00414) 대비 0.9(-0.00399)일 때 0.96배<=p-value 0.35958
월평균소득: 월소득 늘어나면 tau 0.5일 때 매출 감소 tau 0.9일 때 매출 증가
집객시설: 집객시설수가 늘어나면 tau 0.5일 때 매출 증가 tau 0.9일 때 매출 감소

전년 매출 대비 그룹화에 따른 분석

  • 그룹1: 총 유동인구수, 총 직장인구수, 총 상주인구수 변수 유의성 떨어짐.
  • 그룹2: 총 상주인구수, 집객시설수 변수 유의성 떨어짐
  • 그룹3: 집객시설수 변수 유의성 떨어짐

그룹1: quantile regression
직장인구수: tau 0.5(0.0005139) 대비 0.9(0.001130)일 때 2.2배 영향이 큼 =>p- value 0.69304
상주인구수: 상주인구 늘어나면 tau 0.5일 때 매출 감소 tau 0.9일 때 매출 증가 =>p- value 0.98316
월평균소득: tau 0.5(-0.05015024) 대비 0.9(-0.007333)일 때 0.15배
집객시설 : tau 0.5(0.002258) 대비 0.9(0.000357)일 때 0.16배

그룹2: quantile regression
유동인구수: tau 0.5(0.0164) 대비 0.9(0.0058)일 때 0.35배
직장인구수: tau 0.5(0.0041) 대비 0.9(0.0025)일 때 0.61배
상주인구수: tau 0.5(-0.0008) 대비 tau 0.9(-0.0005)일 때 0.63배 =>p- value 0.11372
월평균소득: tau 0.5(-0.0152) 대비 0.9(-0.0056)일 때 0.37배
집객시설 : 집객시설수가 늘어나면 tau 0.5일 때 매출 증가 tau 0.9일 때 매출 감소 =>p- value 0.11277

그룹3: quantile regression
유동인구수: tau 0.5(0.026) 대비 tau 0.9(0.066)일 때 2.54배
직장인구수: tau 0.5(0.0052) 대비 tau 0.9(0.0223)일 때 4.29배
상주인구수: tau 0.5(-0.0058) 대비 tau 0.9(-0.011)일 때 1.9배
월평균소득: tau 0.5(0.0868) 대비 tau 0.9(0.2834)일 때 3.26배
집객시설 : tau 0.5(-0.0006) 대비 tau 0.9(-0.0008)일 때 1.3배

상권별 분석

강남상권:quantile regression
유동인구수: tau 0.5(0.05015) tau 대비 0.9(0.08493)일 때 1.70배
직장인구수: tau 0.5(0.07862) tau 대비 0.9(0.19561)일 때 2.49배
상주인구수: tau 0.5(-0.07262) tau 대비 0.9(-0.16021)일 때 2.20배
월평균소득: 월소득 늘어나면 tau 0.5일 때 매출 감소 tau 0.9일 때 매출 증가
집객시설 : 집객시설수가 늘어나면 tau 0.5일 때 매출 증가 tau 0.9일 때 매출 감소 =>p- value 0.8484

마포상권: quantile regression
유동인구수: tau 0.5(0.0538) tau 대비 0.9(0.19692)일 때 3.66배
직장인구수: tau 0.5(0.04399) tau 대비 0.9(0.01545)일 때 0.33배
상주인구수: tau 0.5(-0.00816) tau 대비 0.9(-0.01512)일 때 1.8배
월평균소득: 월소득 늘어나면 tau 0.5일 때 매출 감소 tau 0.9일 때 매출 증가

관악상권:quantile regression
상주인구수: tau 0.5(-0.03496) tau 대비 0.9(-0.09668)일 때 2.77배

3.3 추가 분석(남자매출액, 주말매출액 추가)

전체자료 분위별 변수 영향력 분석

총유동인구수: tau 0.5(0.0528) 대비 tau 0.9(0.0551)일 때 1.04배 영향
총직장인구수: tau 0.5(0.0171) 대비 tau 0.9(0.018)일 때 1.05배 영향
총상주인구수: tau 0.5(-0.0065) 대비 tau 0.9(-0.0139)일 때 2.14배 영향
월평균소득: 월소득 늘어나면 tau 0.5일 때 매출 감소 tau 0.9일 때 매출 증가
집객시설 : 집객시설수가 늘어나면 tau 0.5일 때 매출 증가 tau 0.9일 때 매출 감소
남자매출액비율: 남자매출이 늘어나면 tau 0.5일 때 매출 증가 tau 0.9일 때 매출 감소
주말매출액비율: 주말매출이 늘어나면 tau 0.5일 때 매출 증가 tau 0.9일 때 매출 감소

업종별 분석

총유동인구수: 외식업과 서비스업은 tau 0.5 대비 tau 0.9 일 때 매출액 상승에 더 큰 영향력 있지만 도소매업은 영향력 줄어듬.

총직장인구수: 외식업매출은 다른 업종에 비해 매출상승에 더 큰 영향력을 받고 tau 0.5 대비 tau 0.9일도 더 많이 받음.

총상주인구수: 매출감소에 영향을 주며 특히 서비스 업종에서 tau 0.9 매출감소에 영향력이 큼

월평균 소득: 서비스 업과 도소매 업에서 월평균 소득금액이 증가하면tau 0.5 매출이 감소 하지만 tau 0.9 매출이 증가

집객시설수 : 서비스업과 도소매업에서 집객시설수가 증가하면 tau 0.5 매출이 증가 하지만 tau 0.9 매출이 감소

남자매출액 : 외식업과 서비스업에서 남자매출액비가 증가하면 tau 0.5 매출이 증가 하지만 tau 0.9 매출이 감소, 도소매업은 남성매출액 비율은 tau 0.5 대비 tau 0.9일때 영향력이 감소.

주말매출액 : 외식업의 경우 주말매출액비가 증가하면 tau 0.9 매출 증가에 더 큰 영향력을 주지만 서비스업과 도소매업의 경우 tau 0.5 매출이 증가 하지만 tau 0.9 매출이 감소


활용방안

  • 총직장인구수 : 외식업에 영향력이 큰 것으로 나타남(ex: 직장인구 많은 지역은 도소매업이나 서비스업 보다는 외식업 창업 추천)

  • 남자매출액 : 외식업, 서비스업의 경우 상위 10% 매출에서 남자매출이 전체 매출에 감소시키는 경향을 보여줌(ex : 매출이 큰 식당이나 미용관련 서비스업종에서는 여자를 타겟으로 하는 메뉴나 서비스에 집중하는 것을 고려)

  • 주말매출액:외식업은 주말매출이 전체 매출 증가시키는 경향을 나타냄(ex: 주말 가족을 위한 메뉴 개발, 서비스업과 도소매업은 주중 프로모션 개발)


전년대비 매출 그룹별 분석

총유동인구수: 매출상승 그룹에서는 총유동인구수가 매출액에 영향력 있는 변수이고 tau 0.5대비 tau 0.9 일때 2.64배 영향.

총직장인구수: 매출상승 그룹에서는 총직장인구수가 매출액상승에 영향력 있는 변수이고 tau 0.5대비 tau 0.9 일때 4.12배 영향.

총상주인구수: 매출상승 그룹에서는 총상주인구수가 매출액감소에 영향력 있는 변수이고 tau 0.5대비 tau 0.9 일때 1.69배 영향.

월평균소득: 매출상승 그룹에서는 월평균소득이 매출액증가에 영향력 있는 변수이고 tau 0.5대비 tau 0.9 일때 3.3배 영향.

집객시설수: 매출상승 그룹에서는 집객시설수가 매출액감소에 영향력 있는 변수이고 tau 0.5대비 tau 0.9 일때 2.23배 영향.

남자매출액 : 매출하락과 매출유지 그룹에서 남자매출액비가 늘어나면 매출도 상승하지만 매출상승 그룹에서는 남자매출액비가 늘어나면 매출은 감소하고 남성매출액 비율은 tau 0.5대비 tau 0.9 일때 3.97배 영향

주말매출액 : 매출하락 그룹의 경우 주말매출액비가 증가하면 매출 증가 하지만 매출유지과 매출상승 그룹의 경우 매출이 감소


활용방안

  • 월평균소득 : 뜨는 골목상권에 영향력이 크고 상위 10%에서 그 영향력이 더 크게 나타남(ex: 월평균소득 많은 지역은 중고자동차, 학원, 병원, 고급레스토랑과 같이 매출액 단위가 큰 업종 추천 )

  • 남자매출액 : 뜨는 골목상권은 상위 10% 매출에서 남자매출이 전체 매출에 감소시키는 경향을 보여줌(ex : 매출이 큰 식당이나 미용관련 서비스업종에서는 여자를 타겟으로 하는 메뉴나 서비스에 집중하는 것을 고려)

  • 주말매출액:뜨는 골목상권은 주말매출이 전체 매출 감소시키는 경향을 나타냄(ex: 주중 고객을 타겟으로 하는 서비스 검토)


주요상권별 분석

총유동인구수: 마포상권은총유동인구수가 매출액에 영향력 있는 변수이고 tau 0.5대비 tau 0.9 일때 3.08배 영향.

총직장인구수: 강남상권은 총직장인구수가 매출액상승에 영향력 있는 변수이고 tau 0.5대비 tau 0.9 일때 2.19배 영향.

총상주인구수: 강남상권은 총상주인구수가 매출액감소에 영향력 있는 변수이고 tau 0.5대비 tau 0.9 일때 1.88배 영향

월평균소득: 월소득 늘어나면 tau 0.5일 때 매출 감소 tau 0.9일 때 매출 증가

집객시설수: 집객시설수 늘어나면 tau 0.5일 때 매출 증가 tau 0.9일 때 매출 감소

남자매출액 : 남자매출액비가 늘어나면 강남상권 tau 0.9와 마포상권 tau 0.9에서는 매출 감소

주말매출액 : 관악상권 tau 0.9의 경우 주말매출액비가 증가하면 매출


활용방안

  • 총유동인구수 : 총유동인구수는 영향력이 크고 강남상권과 마포상권tau 0.9에서 그 영향력이 더 크게 나타남(ex: 강남구와 마포구는 유동인구를 늘리기 위해 버스정류장, 지하철역을 늘리는 부분 검토 )

  • 총상주인구수 : 총상주인구수가 증가할 수록 매출 감소하는 것을 알 수 있음.(ex : 강남, 마포, 관악 모두 새로운 아파트 건설보다는 상업지구 활성화 방안 검토)

  • 남자매출액:강남상권과 마포상권은 남자매출이 전체 매출 감소시키는 경향을 나타냄(ex: 여성 고객을 타겟으로 하는 서비스 검토)


4. 결론 및 향후 계획

본 프로젝트는 서울시 및 자치구의 골목상권 활성화 정책을 위한 인사이트 제공을 목적으로 위와 같이 매출에 영향을 미치는 변수에 대한 분석을 제공하였다.총유동인구수, 총직장인구수, 총상주인구수, 월평균소득, 집객시설수, 남자배출액, 주말매출액을 설명 변수로 하여 업종별, 전년도 매출액 대비별, 주요상권별 내용을 살펴본 결과 활용방안에서 제시한 내용처럼 관심을 갖고 있는 시나리오와 분위에 따라 전체자료를 분석했을때와 비교하여 그 변수의 영향력이 달라짐을 알 수 있었다. 자료수집부터 전처리 및 분석과정을 상세히 기술하여 추후 관심이 있는 지역이나 매출분위에 효율적으로 활용할 수 있을 것으로 기대한다. 향후 추가적인 변수 분석을 통해 전년도 매출액을 대체할 변수를 찾아 모형 적합성을 높일 계획이며 다른 버젼의 보고서에서는 통계용어의 사용을 최소한으로 하여 누구나 쉽게 본 프로젝트의 결과물을 응용할 수 있게 할 것이다.



Appendix

1. 전처리 코드

setwd(“/mnt/Data”) getwd() install.packages(“dplyr”) library(dplyr) merged_final=file1_2015_NO_NA3

function_NO_NA3_delete <- function( arg1 ) { merged_final =arg1 ### 특이 Row 필터링 # 월_평균_소득_금액, 지출_총금액 (row 삭 제) merged_final <- filter(merged_final,!(is.na(merged_final\(월_평균_소득_금액) | is.na(merged_final\)지출_총금액)))

#집객시설_수 (0을으로 대체 ) for (k in c(49)){ merged_final[,k][is.na(merged_final[,k])] <- 0 } return=merged_final }

function_NO_NA3_gagu <- function( arg1,arg2) {

merged_final =arg1 merged_final2 =arg2 #for (k in c(28:45)){ # merged_final[,k][is.na(merged_final[,k])] <- 0 #} # # size=nrow(merged_final) for (m in c(46)){ l=1 for(l in c(1:size)){ if(merged_final[l,m]==‘NA’ || is.na(merged_final[l,m])){ # print(m) # print(l) merged_final[l,m]=mean(merged_final2[,m][merged_final2\(상권_코드==merged_final\)상권_코드[l]],na.rm=TRUE) # print(merged_final[l,m]) } } } return=merged_final }

file1_2013_NO_NA3 <- read.csv(‘file1_2013_NO_NA3.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’),fileEncoding=“euc-kr”) file1_2014_NO_NA3 <- read.csv(’file1_2014_NO_NA3.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’)) file1_2015_NO_NA3 <- read.csv(’file1_2015_NO_NA3.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’)) file1_2016_NO_NA3 <- read.csv(’file1_2016_NO_NA3.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’)) file1_2017_NO_NA3 <- read.csv(’file1_2017_NO_NA3.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,’’))

file1_2014_NO_NA3_delete=function_NO_NA3_delete(file1_2014_NO_NA3) file1_2015_NO_NA3_delete=function_NO_NA3_delete(file1_2015_NO_NA3) file1_2016_NO_NA3_delete=function_NO_NA3_delete(file1_2016_NO_NA3) file1_2017_NO_NA3_delete=function_NO_NA3_delete(file1_2017_NO_NA3)

file1_2015_NO_NA3_delete=function_NO_NA3_gagu(file1_2015_NO_NA3,file1_2016_NO_NA3)

colSums(is.na(file1_2014_NO_NA3_delete)) colSums(is.na(file1_2015_NO_NA3_delete)) colSums(is.na(file1_2016_NO_NA3_delete)) colSums(is.na(file1_2017_NO_NA3_delete))

getwd()

write.csv(file1_2014_NO_NA3_delete, paste0(“file1_2014_NO_NA3_delete.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2015_NO_NA3_delete, paste0(“file1_2015_NO_NA3_delete.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2016_NO_NA3_delete, paste0(“file1_2016_NO_NA3_delete.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2017_NO_NA3_delete, paste0(“file1_2017_NO_NA3_delete.csv”), row.names = F,fileEncoding=“euc-kr”)

file1_2014_NO_NA_test <- read.csv(‘file1_2014_NO_NA3_delete.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,’’))

추가 컬럼 작업

1 year befor 매출액

function_NO_NA3_yearbefore <- function(arg1,arg2) { data_set2=arg1 data_set1=arg2 size=nrow(data_set1) yearbefore=data.frame(rep(1,size)) for(i in c(1:size)){ if(any((data_set2\(상권_코드 == data_set1\)상권_코드[i])&(data_set2\(서비스_업종_코드 == data_set1\)서비스_업종_코드[i])&(data_set2\(기준_년월_코드==data_set1\)기준_년월_코드[i]-100))){ yearbefore[i,1] = data_set2\(당월_매출_금액[(data_set2\)상권_코드 == data_set1\(상권_코드[i])&(data_set2\)서비스_업종_코드 == data_set1\(서비스_업종_코드[i])&(data_set2\)기준_년월_코드==data_set1$기준_년월_코드[i]-100)] print(yearbefore[i,1]) } else { yearbefore[i,1] = NA print(yearbefore[i,1]) } } return=yearbefore }

file1_2014_NO_NA3_delete_yearbefore=function_NO_NA3_yearbefore(file1_2013_NO_NA3,file1_2014_NO_NA3_delete) file1_2015_NO_NA3_delete_yearbefore=function_NO_NA3_yearbefore(file1_2014_NO_NA3_delete,file1_2015_NO_NA3_delete) file1_2016_NO_NA3_delete_yearbefore=function_NO_NA3_yearbefore(file1_2015_NO_NA3_delete,file1_2016_NO_NA3_delete) file1_2017_NO_NA3_delete_yearbefore=function_NO_NA3_yearbefore(file1_2016_NO_NA3_delete,file1_2017_NO_NA3_delete)

cbind

colnames(file1_2014_NO_NA3_delete_yearbefore)=‘yearbefore’ colnames(file1_2015_NO_NA3_delete_yearbefore)=‘yearbefore’ colnames(file1_2016_NO_NA3_delete_yearbefore)=‘yearbefore’ colnames(file1_2017_NO_NA3_delete_yearbefore)=‘yearbefore’

colnames(file1_2014_NO_NA3_delete_yearbefore_jumpo)=‘yearbefore_jumpo’ colnames(file1_2015_NO_NA3_delete_yearbefore_jumpo)=‘yearbefore_jumpo’ colnames(file1_2016_NO_NA3_delete_yearbefore_jumpo)=‘yearbefore_jumpo’ colnames(file1_2017_NO_NA3_delete_yearbefore_jumpo)=‘yearbefore_jumpo’

colnames(file1_2014_NO_NA3_delete_yearbefore_cnt)=‘yearbefore_cnt’ colnames(file1_2015_NO_NA3_delete_yearbefore_cnt)=‘yearbefore_cnt’ colnames(file1_2016_NO_NA3_delete_yearbefore_cnt)=‘yearbefore_cnt’ colnames(file1_2017_NO_NA3_delete_yearbefore_cnt)=‘yearbefore_cnt’

file1_2014_NO_NA3_delete_yearbefore_bind=cbind(file1_2014_NO_NA3_delete,file1_2014_NO_NA3_delete_yearbefore) file1_2015_NO_NA3_delete_yearbefore_bind=cbind(file1_2015_NO_NA3_delete,file1_2015_NO_NA3_delete_yearbefore) file1_2016_NO_NA3_delete_yearbefore_bind=cbind(file1_2016_NO_NA3_delete,file1_2016_NO_NA3_delete_yearbefore) file1_2017_NO_NA3_delete_yearbefore_bind=cbind(file1_2017_NO_NA3_delete,file1_2017_NO_NA3_delete_yearbefore)

file1_2014_NO_NA3_delete_yearbefore_jumpo_bind=cbind(file1_2014_NO_NA3_delete_yearbefore_bind,file1_2014_NO_NA3_delete_yearbefore_jumpo) file1_2015_NO_NA3_delete_yearbefore_jumpo_bind=cbind(file1_2015_NO_NA3_delete_yearbefore_bind,file1_2015_NO_NA3_delete_yearbefore_jumpo) file1_2016_NO_NA3_delete_yearbefore_jumpo_bind=cbind(file1_2016_NO_NA3_delete_yearbefore_bind,file1_2016_NO_NA3_delete_yearbefore_jumpo) file1_2017_NO_NA3_delete_yearbefore_jumpo_bind=cbind(file1_2017_NO_NA3_delete_yearbefore_bind,file1_2017_NO_NA3_delete_yearbefore_jumpo)

SAVE

write.csv(file1_2014_NO_NA3_delete_yearbefore_bind, paste0(“file1_2014_NO_NA3_delete_yearbefore_bind.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2015_NO_NA3_delete_yearbefore_bind, paste0(“file1_2015_NO_NA3_delete_yearbefore_bind.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2016_NO_NA3_delete_yearbefore_bind, paste0(“file1_2016_NO_NA3_delete_yearbefore_bind.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2017_NO_NA3_delete_yearbefore_bind, paste0(“file1_2017_NO_NA3_delete_yearbefore_bind.csv”), row.names = F,fileEncoding=“euc-kr”)

READ

file1_2013_NO_NA3 <- read.csv(‘file1_2013_NO_NA3.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’),fileEncoding=“euc-kr”) file1_2014_NO_NA3_delete_yearbefore <- read.csv(’file1_2014_NO_NA3_delete_yearbefore_bind.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’),fileEncoding=“euc-kr”) file1_2015_NO_NA3_delete_yearbefore <- read.csv(’file1_2015_NO_NA3_delete_yearbefore_bind.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’),fileEncoding=“euc-kr”) file1_2016_NO_NA3_delete_yearbefore <- read.csv(’file1_2016_NO_NA3_delete_yearbefore_bind.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’),fileEncoding=“euc-kr”) file1_2017_NO_NA3_delete_yearbefore <- read.csv(’file1_2017_NO_NA3_delete_yearbefore_bind.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,’’),fileEncoding=“euc-kr”)

file1_2014_NO_NA3_delete_yearbefore_bind <- read.csv(‘file1_2014_NO_NA3_delete_yearbefore_bind.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’),fileEncoding=“euc-kr”) file1_2015_NO_NA3_delete_yearbefore_bind <- read.csv(’file1_2015_NO_NA3_delete_yearbefore_bind.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’),fileEncoding=“euc-kr”) file1_2016_NO_NA3_delete_yearbefore_bind <- read.csv(’file1_2016_NO_NA3_delete_yearbefore_bind.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,‘’),fileEncoding=“euc-kr”) file1_2017_NO_NA3_delete_yearbefore_bind <- read.csv(’file1_2017_NO_NA3_delete_yearbefore_bind.csv’,sep=“,”,header = T, stringsAsFactors = F, na.strings = c(‘NA’,’’),fileEncoding=“euc-kr”)

찾기

size=nrow(data_set2) for(i in c(1:size)){ if(data_set2$당월_매출_금액[i]==‘14865728’){ print(i) stop() } } data_set2[22,] data_set1[1,]

NULL 확인

colSums(is.na(file1_2014_NO_NA3_delete_yearbefore_bind)) colSums(is.na(file1_2015_NO_NA3_delete_yearbefore_bind)) colSums(is.na(file1_2016_NO_NA3_delete_yearbefore_bind)) colSums(is.na(file1_2017_NO_NA3_delete_yearbefore_bind)) colSums(is.na(file1_2014_2017_NO_NA3_delete_yearbefore_bind))

rbind

file1_2014_2017_NO_NA3_delete=rbind(file1_2013_NO_NA3,file1_2014_NO_NA3_delete,file1_2015_NO_NA3_delete,file1_2016_NO_NA3_delete,file1_2017_NO_NA3_delete) file1_2014_2017_NO_NA3_delete_yearbefore_bind=rbind(file1_2014_NO_NA3_delete_yearbefore_bind,file1_2015_NO_NA3_delete_yearbefore_bind,file1_2016_NO_NA3_delete_yearbefore_bind,file1_2017_NO_NA3_delete_yearbefore_bind) file1_2014_2017_NO_NA3_delete_yearbefore_jumpo_bind=rbind(file1_2014_NO_NA3_delete_yearbefore_jumpo_bind,file1_2015_NO_NA3_delete_yearbefore_jumpo_bind,file1_2016_NO_NA3_delete_yearbefore_jumpo_bind,file1_2017_NO_NA3_delete_yearbefore_jumpo_bind) file1_2014_2017_NO_NA3_delete_yearbefore_cnt_bind=rbind(file1_2014_NO_NA3_delete_yearbefore_cnt,file1_2015_NO_NA3_delete_yearbefore_cnt,file1_2016_NO_NA3_delete_yearbefore_cnt,file1_2017_NO_NA3_delete_yearbefore_cnt)

cbind

file1_2014_2017_NO_NA3_delete_yearbefore_jumpo_cnt_bind=cbind(file1_2014_2017_NO_NA3_delete_yearbefore_jumpo_bind,file1_2014_2017_NO_NA3_delete_yearbefore_cnt_bind)

read

file1_2014_2017_NO_NA3_delete_yearbefore_jumpo_bind <- read.csv(‘file1_2014_2017_NO_NA3_delete_yearbefore_jimpo_bind.csv’,header = T, stringsAsFactors = F, na.strings = c(‘NA’,’’),fileEncoding=“euc-kr”)

Write

write.csv(file1_2014_2017_NO_NA3_delete, paste0(“file1_2014_2017_NO_NA3_delete.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2014_2017_NO_NA3_delete_yearbefore_bind, paste0(“file1_2014_2017_NO_NA3_delete_yearbefore_bind.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2014_2017_NO_NA3_delete_yearbefore_jumpo_bind, paste0(“file1_2014_2017_NO_NA3_delete_yearbefore_jimpo_bind.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2014_2017_NO_NA3_delete_yearbefore_jumpo_bind, paste0(“file1_2014_2017_NO_NA3_delete_yearbefore_jimpo_bind.csv”), row.names = F,fileEncoding=“euc-kr”) write.csv(file1_2014_2017_NO_NA3_delete_yearbefore_jumpo_cnt_bind, paste0(“file1_2014_2017_NO_NA3_delete_yearbefore_jumpo_cnt_bind.csv”), row.names = F,fileEncoding=“euc-kr”)

TEST

data_set1=file1_2014_2017_NO_NA3_delete_yearbefore_jumpo_cnt_bind

((data_set1\(yearbefore+1)/data_set1\)당월_매출_금액)

yearbefor 가 NA 인 것들 분석

특이 Row 필터링

월_평균_소득_금액, 지출_총금액 (row 삭 제)

file1_2014_2017_NO_NA3_delete_yearbefore_bind_NA <- filter(file1_2014_2017_NO_NA3_delete_yearbefore_bind,is.na(file1_2014_2017_NO_NA3_delete_yearbefore_bind$yearbefore))

1 month befor 매출액

i=1 data_set1=file1_2014_NO_NA3_delete function_NO_NA3_monthbefore <- function(arg1) { data_set1=arg1 size=nrow(data_set1) monthbefore=data.frame(rep(1,size)) for(i in c(1:size)){ if(any((data_set1\(상권_코드 == data_set1\)상권_코드[i])&(data_set1\(서비스_업종_코드 == data_set1\)서비스_업종_코드[i])&(data_set1\(기준_년월_코드==data_set1\)기준_년월_코드[i]-1))){ monthbefore[i,1] = data_set1\(당월_매출_금액[(data_set1\)상권_코드 == data_set1\(상권_코드[i])&(data_set1\)서비스_업종_코드 == data_set1\(서비스_업종_코드[i])&(data_set1\)기준_년월_코드==data_set1$기준_년월_코드[i]-1)] print(monthbefore[i,1]) } else { yearbefore[i,1] = NA print(monthbefore[i,1]) } } return=yearbefore }

추가 컬럼 작업

1 year before 점포수

function_NO_NA3_yearbefore_jumpo <- function(arg1,arg2) { data_set2=arg1 data_set1=arg2 size=nrow(data_set1) yearbefore=data.frame(rep(1,size)) for(i in c(1:size)){ if(any((data_set2\(상권_코드 == data_set1\)상권_코드[i])&(data_set2\(서비스_업종_코드 == data_set1\)서비스_업종_코드[i])&(data_set2\(기준_년월_코드==data_set1\)기준_년월_코드[i]-100))){ yearbefore[i,1] = data_set2\(점포수[(data_set2\)상권_코드 == data_set1\(상권_코드[i])&(data_set2\)서비스_업종_코드 == data_set1\(서비스_업종_코드[i])&(data_set2\)기준_년월_코드==data_set1$기준_년월_코드[i]-100)] print(yearbefore[i,1]) } else { yearbefore[i,1] = NA print(yearbefore[i,1]) } } return=yearbefore }

function_NO_NA3_yearbefore_cnt <- function(arg1,arg2) { data_set2=arg1 data_set1=arg2 size=nrow(data_set1) yearbefore=data.frame(rep(1,size)) for(i in c(1:size)){ if(any((data_set2\(상권_코드 == data_set1\)상권_코드[i])&(data_set2\(서비스_업종_코드 == data_set1\)서비스_업종_코드[i])&(data_set2\(기준_년월_코드==data_set1\)기준_년월_코드[i]-100))){ yearbefore[i,1] = data_set2\(당월_매출_건수[(data_set2\)상권_코드 == data_set1\(상권_코드[i])&(data_set2\)서비스_업종_코드 == data_set1\(서비스_업종_코드[i])&(data_set2\)기준_년월_코드==data_set1$기준_년월_코드[i]-100)] print(yearbefore[i,1]) } else { yearbefore[i,1] = NA print(yearbefore[i,1]) } } return=yearbefore }

file1_2014_NO_NA3_delete_yearbefore_jumpo=function_NO_NA3_yearbefore_jumpo(file1_2013_NO_NA3,file1_2014_NO_NA3_delete) file1_2015_NO_NA3_delete_yearbefore_jumpo=function_NO_NA3_yearbefore_jumpo(file1_2014_NO_NA3_delete,file1_2015_NO_NA3_delete) file1_2016_NO_NA3_delete_yearbefore_jumpo=function_NO_NA3_yearbefore_jumpo(file1_2015_NO_NA3_delete,file1_2016_NO_NA3_delete) file1_2017_NO_NA3_delete_yearbefore_jumpo=function_NO_NA3_yearbefore_jumpo(file1_2016_NO_NA3_delete,file1_2017_NO_NA3_delete)

file1_2014_NO_NA3_delete_yearbefore_cnt=function_NO_NA3_yearbefore_cnt(file1_2013_NO_NA3,file1_2014_NO_NA3_delete_yearbefore) file1_2015_NO_NA3_delete_yearbefore_cnt=function_NO_NA3_yearbefore_cnt(file1_2014_NO_NA3_delete_yearbefore,file1_2015_NO_NA3_delete_yearbefore) file1_2016_NO_NA3_delete_yearbefore_cnt=function_NO_NA3_yearbefore_cnt(file1_2015_NO_NA3_delete_yearbefore,file1_2016_NO_NA3_delete_yearbefore) file1_2017_NO_NA3_delete_yearbefore_cnt=function_NO_NA3_yearbefore_cnt(file1_2016_NO_NA3_delete_yearbefore,file1_2017_NO_NA3_delete_yearbefore)

2 계수추정값

전체 data

변수명 OLS(전체) Tau 0.1 Tau 0.5 Tau 0.9
Intercept 2.502 *** -0.294 1.535 4.451
총유동인구수 0.070 *** 0.076 0.053 0.055
총직장인구수 0.023 *** 0.032 0.017 0.018
총상주인구수 -0.010 *** -0.008 -0.006 -0.014
월평균소득 0.058 ** -0.140 -0.015 0.116
집객시설수 0.008 *** 0.005 0.001 -0.002
남자비율 0.102 *** 0.255 0.112 -0.132
주말비율 0.129 *** 0.545 0.023 -0.256
전년 매출 1.884 *** 2.291 2.065 1.645

1-1)외식업

변수명 OLS(외식업) Tau 0.1 Tau 0.5 Tau 0.9
Intercept 2.395 *** -0.431 1.654 4.332
총유동인구수 0.093 *** 0.106 0.063 0.070
총직장인구수 0.026 *** 0.074 0.022 0.017
총상주인구수 -0.012 *** -0.010 -0.007 -0.017
월평균소득 0.058 *** -0.059 0.012 0.154
집객시설수 0.001 *** 0.003 -0.001 -0.001
남자비율 -0.017 * 0.083 0.015 -0.154
주말비율 0.416 *** 0.450 0.254 0.434
전년 매출 1.844 *** 2.245 2.016 1.583

1-2)서비스업

변수명 OLS(서비스업) Tau 0.1 Tau 0.5 Tau 0.9
Intercept 2.984 *** 0.798 2.156 4.486
총유동인구수 0.080 *** 0.068 0.068 0.090
총직장인구수 0.026 *** 0.054 0.029 0.030
총상주인구수 -0.012 *** 0.001 -0.009 -0.028
월평균소득 0.058 *** -0.126 -0.009 0.121
집객시설수 0.001 *** 0.006 0.001 -0.003
남자비율 -0.017 *** 0.157 0.065 -0.099
주말비율 0.416 *** 0.150 -0.281 -0.559
전년 매출 1.844 *** 2.121 1.963 1.622

1-3)도소매업

변수명 OLS(도소매업) Tau 0.1 Tau 0.5 Tau 0.9
Intercept 2.389 *** -0.125 1.166 4.059
총유동인구수 0.051 *** 0.044 0.055 0.045
총직장인구수 0.020 *** -0.002 0.017 0.018
총상주인구수 -0.009 *** -0.018 -0.004 -0.005
월평균소득 -0.010 *** -0.262 -0.030 0.177
집객시설수 0.002 *** 0.007 0.001 -0.002
남자비율 0.278 *** 0.251 0.408 0.122
주말비율 0.385 *** 0.881 0.156 -0.247
전년 매출 1.909 *** 2.386 2.111 1.645

2-1) 매출 하락그룹

변수명 OLS(그룹1) Tau 0.1 Tau 0.5 Tau 0.9
Intercept -0.851 *** -1.517 -0.889 -0.363
총유동인구수 0.013 ** 0.028 0.006 0.001
총직장인구수 0.001 0.508 -0.001 0.003 0.001
총상주인구수 -0.001 0.937 -0.001 -0.001 0.001
월평균소득 -0.056 *** -0.162 -0.043 -0.006
집객시설수 0.003 *** 0.008 0.002 0.001
남자비율 0.115 *** 0.190 0.089 0.015
주말비율 0.304 *** 0.455 0.250 0.042
전년 매출 2.337 *** 2.406 2.371 2.315

2-2) 매출 유지그룹

변수명 OLS(그룹2) Tau 0.1 Tau 0.5 Tau 0.9
Intercept 0.211 *** -0.161 0.274 0.470
총유동인구수 0.011 *** 0.009 0.016 0.006
총직장인구수 0.003 *** 0.003 0.003 0.002
총상주인구수 -0.001 0.195 -0.001 -0.001 -0.001
월평균소득 -0.011 *** -0.008 -0.016 -0.006
집객시설수 0.001 0.275 0.001 0.001 -0.001
남자비율 0.024 *** 0.016 0.037 0.014
주말비율 -0.012 *** 0.011 -0.020 -0.021
전년 매출 2.281 *** 2.301 2.274 2.274

2-3) 매출 상승그룹

변수명 OLS(그룹3) Tau 0.1 Tau 0.5 Tau 0.9
Intercept 3.612 *** 0.705 2.301 5.241
총유동인구수 0.041 *** 0.004 0.025 0.066
총직장인구수 0.011 *** 0.001 0.005 0.019
총상주인구수 -0.006 *** -0.002 -0.006 -0.011
월평균소득 0.126 *** 0.012 0.084 0.278
집객시설수 -0.001 * -0.001 -0.001 -0.001
남자비율 -0.122 *** -0.006 -0.081 -0.320
주말비율 -0.135 *** -0.030 -0.138 -0.229
전년 매출 1.751 *** 2.243 1.975 1.460

3-1) 주요상권-강남

변수명 OLS(강남) Tau 0.1 Tau 0.5 Tau 0.9
Intercept 2.809 *** -0.082 1.582 4.630
총유동인구수 0.070 *** 0.040 0.046 0.082
총직장인구수 0.108 *** 0.019 0.091 0.199
총상주인구수 -0.099 *** -0.047 -0.076 -0.143
월평균소득 0.011 *** -0.037 -0.001 0.058
집객시설수 0.005 * 0.013 0.002 -0.001
남자비율 0.187 *** 0.495 0.146 -0.200
주말비율 0.305 *** 0.602 0.200 0.005
전년 매출 1.832 *** 2.172 2.040 1.645

3-2) 주요상권-마포

변수명 OLS(마포) Tau 0.1 Tau 0.5 Tau 0.9
Intercept 3.203 *** 0.177 1.970 5.194
총유동인구수 0.094 *** 0.052 0.062 0.192
총직장인구수 0.060 *** 0.094 0.042 0.017
총상주인구수 -0.011 ** -0.015 0.008 -0.015
월평균소득 -0.030 0.063 -0.136 -0.033 0.044
집객시설수 0.002 * 0.007 0.001 -0.001
남자비율 0.178 *** 0.423 0.171 -0.221
주말비율 0.169 *** 0.413 0.112 -0.012
전년 매출 1.792 *** 2.204 2.001 1.542

3-3) 주요상권-관악

변수명 OLS(관악) Tau 0.1 Tau 0.5 Tau 0.9
Intercept 2.745 *** -0.456 1.460 4.947
총유동인구수 0.046 ** 0.050 0.035 0.015
총직장인구수 -0.008 0.412 0.010 0.014
총상주인구수 -0.003 0.808 0.146 -0.028
월평균소득 -0.053 * -0.211 -0.018 0.060
집객시설수 0.004 *** 0.006 0.001 -0.001
남자비율 0.211 *** 0.398 0.195 0.053
주말비율 0.201 *** 0.677 0.002 -0.285
전년 매출 1.913 *** 2.322 2.090 1.673