사회과학 연구를 위한 Stata, R, Mplus, Python: 소프트웨어 고르기
영어 원문: Stata, R, Mplus, and Python for Social Science Research: Choosing the Software (2026년 10월 28일 게시)
학생들은 어떤 통계 프로그램을 배워야 하는지 자주 묻곤 합니다. 보통 Stata와 R 중 무엇을 배울지의 문제로, 최근에는 Python이 다른 프로그램들을 불필요하게 만드는지의 문제로 질문을 받습니다. 저의 대답은 네 가지 프로그램을 모두 사용하며, 사용하는 방법론에 따라 어떤 프로그램을 열지가 결정된다는 것입니다. 이는 이 프로그램들이 발전해 온 역사와 맞닿아 있습니다. 특정 방법론의 가장 진보된 구현체는 그 방법론을 누가 개발했는지에 따라 서로 다른 프로그램에서 먼저 등장하는 경향이 있습니다. 양적 방법론이 처음이시라면, 이 사이트의 beginner’s guide to quantitative methods in social work research에서 프로그램을 선택하기 전에 무엇을 배워야 하는지 다루고 있으니 참고하시기 바랍니다.
학문 분야별 도구
구문(syntax) 기반 프로그램에서 실제로 실행할 수 있는 기능의 상당 부분은 사용자들이 작성한 패키지에서 비롯됩니다. StataCorp가 대부분의 핵심 추정량을 직접 작성하고 유지 관리하는 Stata의 경우에는 덜하지만, 거의 모든 방법론이 연구자가 기여한 패키지 형태로 제공되는 R과 Python의 경우에는 훨씬 더 그렇습니다. 따라서 한 프로그램에서 사용할 수 있는 패키지는 어떤 분야의 연구자들이 그 프로그램을 사용하는가에 달려 있으며, 유용한 선택 방법은 그 연구자들이 누구인지 살펴보는 것입니다. 어떤 방법론은 여러 프로그램에 모두 존재하지만, 어떤 방법론은 단 하나의 프로그램에서만 지원되기도 합니다.
Stata는 경제학자들, 특히 계량경제학과 준실험 설계 분야에서 주로 사용하는 프로그램으로 보입니다. one analysis of that archive에 따르면, 2005년부터 2019년까지 American Economic Association 학술지의 재현(replication) 파일 중 코드 파일의 약 3분의 2가 Stata였고 R은 약 3%에 불과했습니다. 최근의 이중차분법(difference-in-differences) 추정량 중 다수는 이를 제안한 계량경제학자들에 의해 Stata 명령어로 공개되었는데, Pedro Sant’Anna 및 Brantly Callaway와 함께한 Fernando Rios-Avila의 csdid, Clément de Chaisemartin, Xavier D’Haultfœuille 및 동료들의 did_multiplegt_dyn 등이 그 예입니다.
R은 데이터 과학자들과 양적 심리학자 및 심리측정학자들에 의해 널리 사용됩니다. Patrick Mair, Yves Rosseel(lavaan의 저자), Kathrin Gruber가 관리하는 CRAN Psychometrics task view에는 문항반응이론, 요인분석, 구조방정식 모델링 및 관련 모델을 위한 240개 이상의 패키지가 연결되어 있습니다. R은 계량경제학에서도 강력하며, Econometrics task view에는 Stata 사용자들이 설치하는 것과 거의 동일한 이중차분법 추정량들이 나열되어 있습니다.
Mplus는 Muthén & Muthén이 잠재변수 모델링을 위해 개발한 프로그램으로, 주 사용자는 심리측정학자 및 구조방정식 모델링을 전문으로 하는 연구자들입니다. 혼합 모델, 베이지안 SEM, 동적 구조방정식 모델링이 모두 feature list에 포함되어 있습니다. 잠재 집단을 왜곡하지 않고 예측 변인 및 원위 결과와 연결하는 방법론인 Asparouhov and Muthén이 설명한 3단계 접근법이 Mplus에 기본 옵션으로 내장되어 있습니다.
Python은 주로 프로그래머들의 언어입니다. 머신러닝, 딥러닝, 언어 모델은 Python이나 R로 수행되며, scikit-learn과 Hugging Face의 transformers 같은 주요 라이브러리는 Python 라이브러리입니다.
| 프로그램 | 주요 사용자 | 강점 | 예시 |
|---|---|---|---|
![]() | 경제학자 및 계량경제학자 | 준실험 설계, 서베이 데이터, 분해 분석 | csdid, did_multiplegt_dyn, oaxaca, fairlie, firthlogit, svy, margins |
![]() | 데이터 과학자 및 심리측정학자 | 심리측정, 네트워크, 메타분석, 공간 데이터 | lavaan, semTools, mirt, ergm, qgraph, bootnet, metafor, brms, sf |
![]() | 심리측정학자 및 SEM 방법론자 | 잠재변수 및 혼합 모델 | Three-step 및 BCH, Bayesian SEM, dynamic SEM, TYPE=COMPLEX |
![]() | 프로그래머 및 머신러닝 연구자 | 딥러닝, NLP, LLM, API | scikit-learn, transformers, Anthropic, OpenAI, and Gemini SDKs, Google API client libraries |
연구 목적별 프로그램
- Deep learning, NLP, and LLM research. Python Hugging Face를 통해 트랜스포머 기반 딥러닝, NLP 또는 LLM 연구를 수행하고자 한다면 Python 프로그래밍을 배워야 합니다. Hugging Face의 transformers와 Hub client, 그리고 주요 언어 모델 API의 공식 SDK는 Python 라이브러리이며, 문서와 코드 예제도 Python으로 작성되어 있습니다.
- 머신러닝을 이용한 예측. Python R 랜덤 포레스트, 그래디언트 부스팅, 교차 검증 예측은 Python의 scikit-learn에서 기본으로 제공되며 R에서도 잘 지원됩니다. Stata도 일부를 실행할 수 있지만, 모델의 범위와 문서화는 Python과 R이 훨씬 더 방대합니다.
- 이질적 처치 효과 및 인과 머신러닝. R Python Stata R의 grf는 인과 포레스트를 적합합니다. Python에서는 EconML이 조건부 평균 처치 효과를 추정하고 DoubleML이 이중 머신러닝(R 버전도 제공)을 구현합니다. Stata 사용자에게는 2024년 Stata Journal에 소개된 ddml이 있습니다.
- 플랫폼 및 웹 서비스로부터 데이터 수집. Python Google의 YouTube Data API 클라이언트 라이브러리와 같이 대부분의 플랫폼 API를 위한 공식 클라이언트 라이브러리는 R이나 Stata가 아닌 Python 및 기타 범용 프로그래밍 언어로 작성되어 있습니다.
- 가중치, 층화, 군집이 포함된 복합 표본 데이터. Stata R Stata의 svy 접두사는 로지스틱, 다층, 카운트 모형을 포함한 대부분의 추정량에 표본 가중치, 층화, 군집을 적용하며 사후 margins 명령문도 원활히 작동합니다. R의 survey 패키지도 훌륭한 대안입니다. Python은 셋 중 가장 취약합니다.
- 다층 모형 및 기타 군집 데이터. Stata R Stata의 mixed, melogit 및 기타 me 명령문과 xtgee는 학교 내 학생, 기관 내 내담자, 개인 내 반복 측정을 다룹니다. R의 lme4와 glmmTMB도 동일한 계열의 모형을 적합합니다.
- 준실험 설계 및 계량경제학. Stata R Stata에서는 시차적 이중차분법을 위한 csdid와 did_multiplegt_dyn, 평행 추세 민감도를 위한 honestdid, 합성 이중차분법을 위한 sdid, 다중 고정효과를 위한 reghdfe, 도구변수를 위한 ivreg2가 있습니다. R에서는 fixest와 did 패키지가 있으며, Python에는 패널 및 도구변수 모형을 위한 linearmodels가 있습니다. 이 중 여럿이 Stata와 R 모두에 존재하며 Stata의 honestdid는 R 패키지를 이식한 것입니다.
- 집단 간 격차 분해. Stata Blinder-Oaxaca 분해를 위한 Ben Jann의 oaxaca 및 이진 결과를 위한 fairlie.
- 회귀 표 및 계수 플롯. Stata 표 작성을 위한 Ben Jann의 estout(esttab) 및 계수 플롯을 위한 coefplot이 있으며, 최근 버전 Stata의 자체 etable 및 collect도 제공됩니다.
- 잠재계층 및 잠재프로파일 분석. Mplus 특히 계층이 예측변수나 원위 결과(distal outcomes)와 관련될 때 Asparouhov and Muthén이 설명한 3단계 접근법이 내장되어 있는 Mplus가 탁월합니다. 다른 프로그램에서는 lclass()를 사용하는 Stata의 gsem, R의 poLCA, 그리고 3단계 추정을 구현하는 Python의 StepMix가 잠재계층 모형을 적합합니다.
- 구조방정식 모델링 및 측정. Mplus R 복합 표본 데이터를 위한 TYPE=COMPLEX를 지원하는 다층, 베이지안, 동적 SEM에는 Mplus(기능 목록), 측정 불변성 검정을 포함하는 무료 소프트웨어로는 R의 lavaan과 semTools, 문항반응이론에는 mirt가 있습니다. Stata의 sem과 gsem은 많은 표준 모형을 지원하며 Python의 semopy는 이에 비해 여전히 제한적입니다.
- 네트워크 분석. R 통계적 네트워크 모형을 위한 statnet 제품군의 ergm, 그리고 증상이나 문항 간 네트워크를 위한 Sacha Epskamp의 qgraph, bootnet, psychonetrics.
- 메타분석. R Stata R에서는 Wolfgang Viechtbauer의 metafor, Stata의 meta 제품군은 표준 메타분석을 다룹니다.
- 베이지안 다층 모형. R brms는 일반 회귀와 유사한 수식 구문으로 Stan을 통해 베이지안 회귀 모형을 적합합니다.
- 매칭 및 가중치 조정. R Stata R에서 Noah Greifer의 MatchIt, WeightIt, cobalt는 매칭, 균형 가중치, 균형 진단을 지원합니다. Stata에는 teffects와 사용자가 작성한 psmatch2가 있습니다.
- 지도 및 공간 데이터. R Python tidycensus와 함께 사용하는 R의 sf, 또는 Python의 geopandas.
통계를 위한 Python
Python은 본래 설계된 목적에는 매우 훌륭하지만, 사회과학의 주력 통계 프로그램으로는 다소 아쉬운 선택입니다. Python의 통계 라이브러리들은 계량경제학적 추정에 맞춰 설계되지 않았으며 구조방정식 모델링은 일부만 지원됩니다. statsmodels가 많은 표준 모델을 다루지만, 복합표본 분석 패키지인 samplics는 현재 공식 웹페이지에 “더 이상 유지 관리되지 않음”이라고 안내하고 있습니다. 필요한 모델이 없는 경우 대안은 처음부터 끝까지 직접 작성하는 것인데, 이는 문서화되고 출판되었으며 다수의 사용자에 의해 검증된 추정기를 사용하는 사회과학의 통상적인 분석 관행과는 사뭇 다릅니다.
API
이러한 목적을 위한 API는 두 가지 유형으로 나뉩니다. 공공 통계 데이터의 경우 Stata를 포함하여 세 프로그램 모두 우수한 도구를 갖추고 있습니다. Stata는 내장된 import fred 명령어로 연방준비은행 데이터를 불러오며, getcensus는 인구조사국(Census Bureau) API로부터 American Community Survey 데이터를 가져옵니다. R에서는 Kyle Walker가 개발한 tidycensus가 경계 지오메트리(boundary geometry)가 첨부된 동일 데이터를 반환하여 즉시 지도화할 수 있도록 지원합니다.
플랫폼 데이터와 AI 모델의 경우 Python은 Stata보다 훨씬 앞서 있으며 R보다도 앞서 있습니다. Google의 YouTube Data API 클라이언트 라이브러리는 Python, Java, JavaScript, PHP 등을 지원하지만 R은 지원하지 않습니다. Anthropic, OpenAI, Google Gemini, Hugging Face Hub의 공식 클라이언트 라이브러리 모두 Python을 포함하고 있으나 R은 목록에 없습니다. R 사용자는 Posit의 패키지인 ellmer를 통해 여러 언어 모델을 호출할 수 있고, StataCorp는 Python을 통해 각 API를 호출하는 ChatGPT, Claude, Gemini, Grok 호출용 Stata 명령어를 공개했으나, 코드 예제와 최신 기능은 항상 Python에 가장 먼저 제공됩니다.
소프트웨어 기본값
동일한 모델을 두 프로그램에서 실행하더라도 항상 같은 수치가 나오는 것은 아니며, 그 차이는 대개 기본 설정값에서 비롯됩니다. scikit-learn의 경우 LogisticRegression 문서에 “기본적으로 규제(regularization)가 적용된다”고 명시되어 있어, 기본 설정으로 적합한 로지스틱 회귀는 페널티 모델이 되며 그 계수는 Stata나 R의 비페널티 로짓과 일치하지 않습니다. statsmodels에서는 직접 추가하지 않는 한 보통 최소제곱법(OLS)에 절편이 포함되지 않으며, OLS 문서에서도 이를 직접적으로 “절편은 기본적으로 포함되지 않으므로 사용자가 추가해야 합니다”라고 안내하고 있습니다.
군집 표준오차(clustered standard errors)는 덜 직관적인 사례입니다. R 패키지 fixest의 standard errors vignette는 하나의 회귀분석을 기업별로 군집화하여 동일한 계수에 대해 세 가지 서로 다른 표준오차를 보고합니다. sandwich 패키지를 적용한 R의 lm에서 0.0649, plm에서 0.0569, 그리고 fixest가 재현하는 Stata의 xtreg에서 0.0633입니다. 해당 비네트의 결론은 소표본 보정이 “표준오차에 무시할 수 없는 영향을 미칠 수 있다”는 것입니다. fixest가 xtreg과 일치하도록 작성되었다는 점은 계량경제학에서 Stata가 여전히 기준점이 되고 있음을 시사합니다.

심사위원이 다른 프로그램에서 모델을 다시 실행하여 다른 표준오차를 얻는다면 두 사람 모두 맞을 수 있으며, 이는 바로 재현성(reproducibility)의 문제입니다.
구문과 재현성
SPSS와 같은 메뉴 기반 프로그램은 신택스(syntax)를 따로 저장하지 않으면 분석 기록이 남지 않습니다. 구문 파일은 모든 분석 단계를 기록하므로 다른 연구자나 1년 뒤의 연구자 본인이 분석을 다시 실행하여 동일한 결과를 얻을 수 있습니다. 학생들이 사용하는 코드의 상당 부분을 생성형 AI가 작성하고 있는 지금, 이는 더욱 중요해졌습니다. 모델은 몇 초 만에 do-file이나 R 스크립트 초안을 작성할 수 있으며, 실제로 무엇이 추정되었는지 확인하는 유일한 방법은 해당 코드를 읽고 실행하며 보관하는 것입니다.
저는 분석을 평가하는 기준으로 재현성이 확고한 표준이 될 것으로 기대합니다. 경제학 학술지들은 이미 저자들에게 데이터와 코드가 담긴 복제 패키지(replication package)를 요구하고 있으며, AI 도구로 작성되는 코드가 늘어남에 따라 사회복지 및 공중보건 분야의 학술지들도 동일한 방향으로 나아갈 것으로 예상합니다.
코딩 역량과 생성형 AI
AI 모델에 원하는 것을 설명하고 모델이 반환하는 결과를 그대로 받아들이며 코드를 작성하는 방식에는 이제 이름이 붙었습니다. Andrej Karpathy는 2025년 2월에 이를 vibe coding이라고 부르며 “더 이상 코드 차이(diff)를 읽지 않는다”는 관행으로 설명했고, 이를 일회성 주말 프로젝트로 한정했습니다. Collins는 이를 Word of the Year for 2025로 선정했습니다. 학생들은 코드를 직접 작성하는 법을 배우는 것이 여전히 중요한지 합리적인 질문을 던집니다. 저는 여전히 중요하다고 생각하며, 특히 박사과정 학생들에게는 더욱 그렇습니다.
생산성에 관한 연구 근거는 엇갈립니다. 2022 experiment with GitHub Copilot에서는 프로그래머들이 명확히 정의된 과업을 55.8% 더 빠르게 완료한 반면, 2025 randomized trial by METR에서는 숙련된 오픈소스 개발자들이 AI 도구를 사용했을 때 작업 시간이 19% 더 오래 걸렸음에도, 사후 설문에서는 도구 덕분에 약 20% 더 빨라졌다고 추정했습니다. 반면 학습 효과에 대한 근거는 훨씬 일관됩니다. randomized study at Anthropic에서 AI 어시스턴트의 도움을 받아 새로운 Python 라이브러리를 학습한 엔지니어들은 사후 퀴즈에서 50점을 기록한 반면, 직접 코딩한 엔지니어들은 67점을 기록했습니다. 가장 큰 격차는 AI가 작성한 코드의 오류를 잡아내는 데 필요한 역량인 디버깅에서 나타났습니다. field experiment with high school students에서도 수학 분야에서 동일한 패턴이 발견되었습니다: 가드레일 없이 GPT-4를 사용한 학생들은 연습 문제에서는 더 좋은 성적을 거두었지만, 도구 없이 치른 시험에서는 성적이 17% 더 낮았습니다.
박사과정 학생에게 결과를 얻는 것은 목표의 일부분일 뿐이며, 그 과정을 배우는 것 자체가 곧 훈련입니다. 거기에는 기본 구문뿐만 아니라 모형의 명세(specification)가 변경될 때 모형의 기본 가정이 어떻게 변하는지 아는 것도 포함됩니다. 언어 모델은 프롬프트에서 명시하지 않은 부분에 대해 자체적인 선택을 적용합니다. analysis of prompt underspecification에 따르면, 모델은 명시되지 않은 요구사항을 기본값으로 추론하곤 하지만, 이러한 동작은 모델과 프롬프트에 따라 “취약(fragile)”합니다. 데이터 분석에서 Bertran and colleagues는 동일한 데이터셋과 가설을 여러 AI 분석가에게 부여했을 때 전처리, 모형 명세, 추론에서의 선택 차이로 인해 “효과 크기, p-값, 결론에서 상당한 편차”가 나타남을 발견했습니다. study of Claude Code and Codex on a social policy question에서는 인간 다중 분석가 기준선에 가까운 추정치를 보였지만, 확증적(confirmatory) 프롬프트가 주어지자 Claude Code의 판단이 10% 지지에서 90% 지지로 바뀌었습니다. 코드를 읽을 수 없는 연구자는 이러한 선택 중 어떤 것이 이루어졌는지 구분할 수 없습니다.
연구자가 된다는 것은 결과에 책임을 지고 이를 설명할 수 있다는 것을 의미하기도 합니다. authorship and AI tools에 관한 COPE의 입장에 따르면, 데이터 수집 및 분석에 AI를 사용하는 저자는 이를 공개해야 하며 “AI 도구에 의해 생성된 부분을 포함하여 원고 내용에 대해 전적인 책임”을 집니다. 분석 과정을 설명할 수 없다면 그것을 진정으로 알고 있는 것이 아니며, 이는 자신의 연구에 대한 자신감에도 영향을 미칩니다. two studies by Fernandes and colleagues에서 AI를 활용해 추론 문제를 푼 사람들은 자신의 수행 능력을 과대평가했고, security study에서 AI 어시스턴트를 사용한 참가자들은 보안성이 떨어지는 코드를 작성하면서도 코드가 안전하다고 믿는 비율이 더 높았으며, survey of knowledge workers에서는 생성형 AI에 대한 높은 신뢰가 비판적 사고의 저하와 연결되었습니다. 분석 훈련을 받은 연구자조차 코드를 직접 작성할 수 없다면, AI가 작성한 코드를 대체 누가 평가할 수 있겠습니까?
Stata 학습
특히 AI의 도움으로 R이나 Python에서 통계 분석을 수행하는 것이 매우 쉬워졌고, 이로 인해 Stata가 불필요해 보일 수도 있지만, 저는 여전히 Stata를 배우는 것이 유용하다고 생각합니다. 데이터 분석, 계량경제학, 그리고 사회과학에서 흔히 쓰이는 고급 통계 방법론에 있어 Stata는 버전 간 일관된 결과, 잘 문서화된 추정량, 방법론자들에 의해 직접 작성된 방대한 패키지와 옵션을 제공합니다. Stata manual에 따르면 do-파일 상단에 version을 입력하면 “향후 모든 Stata 버전에서도 do-파일이나 프로그램이 지속적으로 실행될 수 있도록 보장”됩니다.
비용
| 프로그램 | 학생용 가격(2026년 10월 기준) | 출처 |
|---|---|---|
| Stata/BE | 연간 $94, 또는 영구 라이선스 $298 | Stata 학생용 가격 안내 |
| Stata/SE | 연간 $179, 또는 영구 라이선스 $485 | 동일 |
| Mplus 9.1.1 | 기본 프로그램 $195, 조합 애드온 포함 시 $350 | Mplus 학생용 가격 안내 |
| R, Python | 무료 |
많은 대학에서 학생들을 위한 Stata 라이선스를 제공합니다. 미시간대학교에서는 소속 학과 IT 부서를 통해 대학 관리 컴퓨터에서 무료로 Stata를 이용할 수 있습니다. Mplus는 변수 개수에 제한이 있는 무료 데모 버전을 제공하며, 이는 구매하기 전에 예제를 테스트해 보기에 충분합니다.




