찾다
백엔드 개발파이썬 튜토리얼现在看,在统计学或(理论/应用)计量经济学领域,python 能完美地代替 R 和 stata 吗?

回复内容:

更新谢谢大家的赞同、感谢和评论。我再贴一个之前用Python做的数据处理,定义了一个比较复杂的新变量,算是简单的feature engineering吧。这个任务如果用Stata来做就会比较头疼。另外,这个例子也可以用来体验一下IPython Notebook (要用网页版看,手机版效果不佳)。
GitHub链接:Machine-Learning-Mini-Project/Feature Engineering.ipynb
------
原回答我来分享一下自己关于Python和Stata的经验,算是抛砖引玉(我R用得很少就不讨论了)。我要强调一下,我对Stata和Python都只能算是入门,所以下面对二者的比较很可能限于我的水平而不够中肯。还望指正。

先说结论对于应用性的数据分析,从只使用Stata,到较为流利地使用Python,很可能会受益匪浅,并伴随着豁然开朗的愉悦体验。这些技能适用面比Stata更广,并且只要肯花些力气,学会基本的东西起来并不会有太多困难。加之Stack Overflow之类社区对学习效率的巨大提升,学习Python的投资回报率很高。

我是做应用微观的,大部分的研究项目不涉及任何高深的计量方法,基本上是走用心问问题,然后下苦功夫搜集一手数据的“苦情”路线(偏经济史方向的研究是从原始历史档案中搜集的数据,偏管理科学方面的研究是从用的一家公司的员工互相评价的绩效考核数据)。所以对软件的需求主要是数据清理、变换、可视化之类。

我最初是用Stata. 当时觉得Stata还是蛮方便的,特别是定义一下新变量(bysort: gen之类的语法很好用),以及跑跑OLS/Logit回归,然后输入表格到Latex. 这些基础功能Stata实现起来真是非常方便。不过,美中不足的是,一旦要自己写写函数,就开始不习惯Stata编程的方式了,所以代码不容易重复使用,Do File一长,慢慢就觉得有些乱。再就是矩阵操作和运算功能不太好用。

后来随着自己对data science和machine learning的兴趣,在edX, Coursera, Udacity等平台上了一些基于Python的课程。其中对实用工具的学习收获最大的是edX上MIT的两门Python课程(6.00.1x和6.00.2x),以及Udacity上的Intro to Data Science. 上了这些课以后,自己做了一些machine learning的小项目。当时学习的目的本不是为了应用到自己的经济学研究中去——那段时间里,除了一个博弈论的模型我无从下手分析,用Python做了一下agent-based simulation刻画了均衡的性质外,并没有真正拿来完整地做一个项目。

有意思的是几个月以后,我开始了一个新的项目,虽然仍然不需要高深的统计和计量,但是在数据的处理上,比之前更复杂——需要把数据汇总成一些转换矩阵 (transition matrix),然后做一些计算,以及做大量的数据可视化。有感于之前使用Stata的力不从心,开始新的项目的时候,我尝试着完全用Python Pandas来做数据操作(data manipulation)、用Matplotlib画图。另外一个原因是,当我开始用IPython Notebook以后,便欲罢不能了——代码和分析结果(图表)被整合在一个文档里(一块代码后面紧跟着输出结果),非常适合整理和分享。谁用谁知道。

最开始从Stata转到Python的时候,还是不太习惯Pandas DataFrame,特别是对于Reshaping, MultiIndex, pivot_table等功能。所以还是蛮怀念Stata. 后来慢慢感受到Pandas强大的数据操作功能。

简单来说,使用Python以后,我最满意的效率提高在于所有的分析都自动化了,从原始数据到最终所需要的图表、结果,不需要一些半自动化的手工调整。而且代码的可重复利用程度显著提升。另外就是,使用Python以后,得益于数据操作能力的增强,我变得比之前更频繁地将数据可视化,几乎所有的回归分析我都会做相应地描述性分析和可视化。

最后,不得不提的是Python相关社区的强大。我有不会的就Google,搜索出来的Stack Overflow的问答、以及一些技术博客里面的内容,基本上都能解决问题。然而,使用Stata的时候,常常会有无力感,卡住了就卡住了,纠结很久只能靠读文档然后自己摸索。

---
补充:有朋友问到我用什么做图。我就用Matplotlib. 虽然觉得算不上太好用,但是目前基本的功能也差不多够了。下面贴一些我一个经济史研究中的一些图。都是一些很基本的东西,只是为了让感兴趣的朋友大概了解一下我的使用情况。见笑啦:)

你是统计学家不是程序员你是统计学家不是程序员你是统计学家不是程序员

计算机语言是一种用来实现你想法的工具,但支撑你想法的不是python 或者R ,是概率和统计,是数学。

我以前也有过类似的困惑所以特地找教授聊过,以上就是我得到的答案。

当然我并不是在为年年喊着我要学python 到现在还没动手找借口,以及R 大法好。 R的一个优势是它是统计学家写的,R的劣势也是它是由统计学家写的。
在我的定义里,R/python/matlab,是基本可以相互替代的,越难选择越是说明都可以。我修ML的时候曾问过老师哪个最适合,老师回答皆可。不管统计计量还是时间序列,我一直用的是R,相当满意,毕竟玩统计的写给自己用的,知道自己需要什么,足够专业。
至于stata,我是与spss/eviews归为一类,称为计量软件,与R这种统计语言还是有本质区别的。 谢谢邀请.这个方面,我只接触过皮毛的生物信息.强行答一下.
认识的一些做生物信息方面的还有专门做数据分析的,用python的还算可以,毕竟数据挖掘方便一些.
python,各方面都可以,但是各方面都不是最好(必然是没有最好,只有更好).
代替应该不会,毕竟R之类的专业做这个的, 我觉得学术界和业界的情况会不太一样。
学术界就像现在最高票答主说的, R 或者PYTHON 只是工具,更重要的是思想。 所以Python的出现只是给研究人员提供了一些新的工具。 之前搞运筹学的老板好像就是用Python比较多(另外一位运筹学教授用C...) 。 可能这个很大程度决定于教授本身的风格和研究方向吧。所以在python没有出现足够碾压其他语言的优势的时候,R应该还是不会被取代的。

业界就不一样了。 python因为容易上手,可读性强等总总原因,取代R还是有机会的。 如果仅仅只想做数据处理,R不错。
如果想将来数据处理之余再自己爬爬网页挖挖数据顺便做个博客,还是一开始学Python比较方便。 厚着逼脸答一下。着重说一下统计/大数据/数据科学领域啊。stata没有什么可比性。别说stata。。sas都逐渐没有了可比性。python和r各有各的好。简单讲,这俩工具是cs和统计两个流派气息很重的工具。相较之下python更能体现cs的思维,而r对于统计的人来说基本是承载着从理论到实现的一个应用。当然这也跟这两个语言的历史有深远关系。python本身就是和c联系紧密,而r是基于s语言。虽然现在他们都有各自可以call其他底层语言的能力,但是这些历史原因也造就了他们的特质。python更像是一个全能型工具,拿来写ui什么的也是完全没问题(这不是说r 不可以做ui只是难用)。另外在大数据背景下,python的兼容性明显要强很多。python那些nlp的东西也是很大的优势。而r的明显优势也是跟他的统计思维有关系。就像有答案说的,这统计的人写给自己使用的,因此关于分析的那一套东西,r的各种包太多了太丰富了,一旦统计上有一丁点的突破,就会有developer写出一个包把理论转化为易操作的函数也就是做了理论的算法实现。当然其他领域有一点能用的,r也会有人给写个包。。。这一点如果不长期关注统计,不深入的使用python和r可能无法体会。python其实也有这个特质但是跟r还不能比。这也跟python的传统用户多为cs背景而不是统计分析背景有关系。python跟底层语言的交互带来的方便也是一大特点,所以你看很多做量化交易的不会选r而自然选python(当然底层语言的大牛在这个领域有着不可动摇的话语权)。直接对比,个人觉得r比较适合用来做策略,模型开发。python比较适合拿来整体实现你的模型。总的来说这两种语言是不断的在相互学习。未来的话,这两种语言很有可能会长期存在,不断吃掉其他分析语言比如sas, matlab的市场份额。曾经让很多分析语言商业化进而得以大规模推广的策略,已经逐渐的不适应这个新的大数据时代了。开源成为了很大的一个优势,知识共享成果共享很重要。闭门造车的速度毕竟太慢。再一个是老的语言,特别是像sas这种,夸张一点讲,还存在的一个很大的原因就是有一大帮传统用户,企业用户。然而这些传统用户在今天已经很难创造大的价值了。特别是以coperate america,500 强很多公司为代表的那些企业。不过说两句题外话,1数据科学除了分析之外也会有很多底层开发的需求,所以能懂一两种底层语言是很大的优势。2另外未来也很看好scala。

求轻拍。 当然可以 相比python来说r是高级程序语言 相对而言比较user friendly 但是局限性也更大 如果编程足够强 当然可以用python做所有r可以做的事情 而且速度更快 其实都是工具而已,精通一个,剩下的也不难吧。 查了一下,statsmodels的开发者曾经说过一段话:

“from twitter:

‘I can see that. much of python stats strikes me as poor imitation of R. like matplotlib:matlab, OO:MS Office’

referring to statsmodels

I'm not sure whether the implied criticism is on "poor" or "imitation"


I would like to "officially" correct this :)

statsmodels is not only a poor imitation of R, it is also a poor imitation of Stata. It is in some parts a poor imitation of SAS, and maybe even in some parts a poor imitation of Matlab or GAUSS or ...., and maybe in some parts it's even a good imitation.

But I think it is a good imitation of statsmodels,
although with still some very important gaps in coverage of statistics and econometrics.”

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬에서 두 목록을 연결하는 대안은 무엇입니까?파이썬에서 두 목록을 연결하는 대안은 무엇입니까?May 09, 2025 am 12:16 AM

Python에는 두 개의 목록을 연결하는 방법이 많이 있습니다. 1. 연산자 사용 간단하지만 큰 목록에서는 비효율적입니다. 2. 효율적이지만 원래 목록을 수정하는 확장 방법을 사용하십시오. 3. 효율적이고 읽기 쉬운 = 연산자를 사용하십시오. 4. 메모리 효율적이지만 추가 가져 오기가 필요한 itertools.chain function을 사용하십시오. 5. 우아하지만 너무 복잡 할 수있는 목록 구문 분석을 사용하십시오. 선택 방법은 코드 컨텍스트 및 요구 사항을 기반으로해야합니다.

파이썬 : 두 목록을 병합하는 효율적인 방법파이썬 : 두 목록을 병합하는 효율적인 방법May 09, 2025 am 12:15 AM

Python 목록을 병합하는 방법에는 여러 가지가 있습니다. 1. 단순하지만 큰 목록에 대한 메모리 효율적이지 않은 연산자 사용; 2. 효율적이지만 원래 목록을 수정하는 확장 방법을 사용하십시오. 3. 큰 데이터 세트에 적합한 itertools.chain을 사용하십시오. 4. 사용 * 운영자, 한 줄의 코드로 중소형 목록을 병합하십시오. 5. Numpy.concatenate를 사용하십시오. 이는 고성능 요구 사항이있는 대규모 데이터 세트 및 시나리오에 적합합니다. 6. 작은 목록에 적합하지만 비효율적 인 Append Method를 사용하십시오. 메소드를 선택할 때는 목록 크기 및 응용 프로그램 시나리오를 고려해야합니다.

편집 된 vs 해석 언어 : 장단점편집 된 vs 해석 언어 : 장단점May 09, 2025 am 12:06 AM

CompiledLanguagesOfferSpeedSecurity, while InterpretedLanguagesProvideeaseofusEandportability

파이썬 : 가장 완전한 가이드 인 루프를 위해파이썬 : 가장 완전한 가이드 인 루프를 위해May 09, 2025 am 12:05 AM

Python에서, for 루프는 반복 가능한 물체를 가로 지르는 데 사용되며, 조건이 충족 될 때 반복적으로 작업을 수행하는 데 사용됩니다. 1) 루프 예제 : 목록을 가로 지르고 요소를 인쇄하십시오. 2) 루프 예제 : 올바르게 추측 할 때까지 숫자 게임을 추측하십시오. 마스터 링 사이클 원리 및 최적화 기술은 코드 효율성과 안정성을 향상시킬 수 있습니다.

Python은 문자열로 나열됩니다Python은 문자열로 나열됩니다May 09, 2025 am 12:02 AM

목록을 문자열로 연결하려면 Python의 join () 메소드를 사용하는 것이 최선의 선택입니다. 1) join () 메소드를 사용하여 목록 요소를 ''.join (my_list)과 같은 문자열로 연결하십시오. 2) 숫자가 포함 된 목록의 경우 연결하기 전에 맵 (str, 숫자)을 문자열로 변환하십시오. 3) ','. join (f '({fruit})'forfruitinfruits와 같은 복잡한 형식에 발전기 표현식을 사용할 수 있습니다. 4) 혼합 데이터 유형을 처리 할 때 MAP (str, mixed_list)를 사용하여 모든 요소를 ​​문자열로 변환 할 수 있도록하십시오. 5) 큰 목록의 경우 ''.join (large_li

Python의 하이브리드 접근법 : 컴파일 및 해석 결합Python의 하이브리드 접근법 : 컴파일 및 해석 결합May 08, 2025 am 12:16 AM

PythonuseSahybrideactroach, combingingcompytobytecodeandingretation.1) codeiscompiledToplatform-IndependentBecode.2) bytecodeistredbythepythonvirtonmachine, enterancingefficiency andportability.

Python 's 'for'와 'whind'루프의 차이점을 배우십시오Python 's 'for'와 'whind'루프의 차이점을 배우십시오May 08, 2025 am 12:11 AM

"for"and "while"loopsare : 1) "에 대한"loopsareIdealforitertatingOverSorkNowniterations, whide2) "weekepindiTeRations.Un

Python Concatenate는 중복과 함께 목록입니다Python Concatenate는 중복과 함께 목록입니다May 08, 2025 am 12:09 AM

Python에서는 다양한 방법을 통해 목록을 연결하고 중복 요소를 관리 할 수 ​​있습니다. 1) 연산자를 사용하거나 ()을 사용하여 모든 중복 요소를 유지합니다. 2) 세트로 변환 한 다음 모든 중복 요소를 제거하기 위해 목록으로 돌아가지 만 원래 순서는 손실됩니다. 3) 루프 또는 목록 이해를 사용하여 세트를 결합하여 중복 요소를 제거하고 원래 순서를 유지하십시오.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.