Skip to content

analysis(hyun2-land-permit-spillover-2020): 토지거래허가구역 풍선효과 분석 결과 - #47

Merged
jsshin2022 merged 11 commits into
CausalInferenceLab:mainfrom
Hyun2:Hyun2/land-permit-spillover-results
Oct 25, 2026
Merged

jsshin2022 merged 11 commits into
CausalInferenceLab:mainfrom
Hyun2:Hyun2/land-permit-spillover-results

Conversation

@Hyun2

@Hyun2 Hyun2 commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator

무엇을 했나요?

2020-06-23 토지거래허가구역 지정(잠실·삼성·대치·청담)의 분석 결과를 올립니다. 분석 계획은 #26으로 먼저 병합했고, 이 PR은 그 계획대로 낸 수집 code, 주 분석, 결과, 해석입니다.

결과 요약: 주 분석의 세 비교가 모두 «판별 불가»입니다. 지정 뒤 지정 동과 옆 동의 ㎡당 가격은 먼 동보다 덜 올랐습니다. 그러나 같은 크기의 차이가 지정 전(2019-12 무렵)부터 있었고, 세 비교를 함께 보정한 Holm p(여러 검정을 함께 볼 때 보정한 p값)가 모두 0.05보다 큽니다. 풍선효과(옆 동이 더 올랐다)를 지지하는 근거는 없었습니다. 같은 발표에서 대치·청담의 실거래 기획조사도 넓어졌으므로, 추정 대상은 허가구역만이 아니라 «허가구역 + 기획조사»입니다.

비교 추정 (log) 95% 범위 Holm p 지정 전 흐름 판정
지정 동 − 먼 동 (직접 효과) −0.129 −0.233 ~ −0.024 0.086 «원래 흐름 차이 의심» 판별 불가
옆 동 − 먼 동 (풍선효과) −0.070 −0.147 ~ +0.007 0.121 «원래 흐름 차이 의심» 판별 불가
옆 동 − 그다음 동 (거리 차이) −0.081 −0.168 ~ +0.005 0.113 표지 없음 판별 불가

«원래 흐름 차이 의심»은 계획의 지정 전 검정(p < 0.10)에 걸린 비교에 붙는 표지입니다. 이 표지가 붙은 행의 추정은 정책 효과로 읽지 않습니다. 추세 위반 한계는 discussion.md 결과표에 함께 적었습니다.

make flow는 옆 동 vs 먼 동 비교 하나만 맡으며, 판정은 «크기를 판별하지 못함»(추정 −0.004 [−0.152, +0.143], 가짜 지정일 2019-12 검정 p 0.005)입니다. 결론은 analysis-plan.yaml의 주 분석 규칙으로 내립니다.

케이스

cases/hyun2-land-permit-spillover-2020

체크리스트

  • plan.yaml을 결과를 보기 전에 작성·커밋했습니다 (이후 변경 시 이유를 커밋 메시지에 기록)
  • 데이터 출처와 라이선스(공공누리 유형 등)를 plan.yaml > data_sources에 명시했습니다
  • API 키·.env·개인정보가 담긴 원자료·재배포 불가 데이터를 포함하지 않았습니다
  • 그림/수치는 fetch.py → make flow 실행으로 재현 가능합니다 (해석은 discussion.md)
  • make check (ruff + pytest)가 통과합니다
  • 다른 사람의 폴더나 core/를 (합의 없이) 수정하지 않았습니다
  • 원자료·가공 데이터 파일을 커밋하지 않았습니다 (시뮬레이션·조례 목록 제외)

체크리스트 근거:

  • 계획: #26으로 병합. 지정 이후 가격을 처음 읽은 시점(2026-10-19)과 그 전후에 본 숫자는 analysis-plan.yaml의 disclosures에 적었습니다.
  • 라이선스: 공공데이터포털 표기 «이용허락범위 제한 없음», 공공누리 유형 표기가 없어 license: other로 적었습니다.
  • 데이터: data/는 .gitignore에 걸려 있고, fetch.py로 각자 받습니다(DATA_GO_KR_API_KEY 필요).
  • 재현: 주 분석 숫자는 make flow가 아니라 estimate.py pre → estimate.py post로 만듭니다(README "다시 만들기"). estimate.py post를 다시 돌려 results/post-period.json이 byte 단위로 같게 나오는 것을 확인했습니다.
  • 수정 범위: 케이스 폴더 밖으로는 catalog/policies.yaml(정책 항목 추가)과 catalog/topics.yaml(1줄)만 바꿨습니다.

리뷰어에게

  • 최신 main의 core/report 변경으로 make flow 판정 이름이 «조건부»에서 «크기를 판별하지 못함»으로 바뀌어, 최신 main에서 make flow를 다시 돌리고 문서의 판정 이름을 맞췄습니다. 추정치는 같습니다.
  • 특히 봐 주셨으면 하는 곳: discussion.md의 해석이 «판별 불가»를 넘어서는 표현을 쓰지 않았는지, 그리고 2019-12-16 대책을 원인 후보로 적은 부분이 추정으로 충분히 표시됐는지.
  • 이 분석은 학습·연구용이며 공식 평가가 아닙니다.

Hyun2 added 11 commits October 25, 2026 12:42
서울 25개 구 × 2019-06~2021-03과 강남·서초·송파 × 2014-06~2019-05, 742쪽. 받은 응답과 sha256은 data/에만 두고 커밋하지 않는다. data/deals.csv.gz(주 분석)와 data/panel.csv(make flow)를 만든다.
analysis-plan.yaml 계산 코드. pre 단계는 2020-06 이전 가격만 읽는다. results/pre-period.json에는 입력 sha256이 들어 있고, post 단계는 같은 입력일 때만 돈다.
세 비교 모두 결론 규칙상 «판별 불가». 계획과 지정 전 단계는 바꾸지 않았다. disclosures에 결과와 재현 확인을 덧붙였다.
discussion.md에 주 분석 결과와 해석·한계를 쓰고, README에 실행 순서(fetch.py → estimate.py → make flow)를 적었다.
옆 동 vs 먼 동 한 비교. 판정 «조건부»(신뢰구간이 0 포함, 가짜 지정일 2019-12 검정 유의). report.md 끝에 discussion.md가 붙는다.
정책 T3-2020을 더하고 부동산 거래 규제 주제에 잇는다. 날짜와 지정 범위는 국토교통부 문답(2020-06-23, 정책브리핑)에서 확인했다. sample_case로 이 케이스가 주제 화면에 나온다.
실행 기록(run_manifest.json)이 커밋된 상태(git_dirty false)를 가리키게 다시 돌렸다. 숫자와 판정은 같고 시각만 바뀐다.
@Hyun2
Hyun2 requested a review from jsshin2022 as a code owner October 25, 2026 13:18
@jsshin2022
jsshin2022 merged commit abce76f into CausalInferenceLab:main Oct 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants