python和stata_从Python运行Stata do文件

我认为@ user229552指向正确的方向.可以使用Python的子进程模块.下面是一个适用于Linux OS的示例.

假设您有一个名为pydo.py的Python文件,其中包含以下内容:

import subprocess

## Do some processing in Python

## Set do-file information

dofile = "/home/roberto/Desktop/pyexample3.do"

cmd = ["stata", "do", dofile, "mpg", "weight", "foreign"]

## Run do-file

subprocess.call(cmd)

和一个名为pyexample3.do的Stata文件,具有以下内容:

clear all

set more off

local y `1'

local x1 `2'

local x2 `3'

display `"first parameter: `y'"'

display `"second parameter: `x1'"'

display `"third parameter: `x2'"'

sysuse auto

regress `y' `x1' `x2'

exit, STATA clear

然后在终端窗口中执行pydo.py按预期工作.

您还可以定义Python函数并使用它:

## Define a Python function to launch a do-file

def dostata(dofile, *params):

## Launch a do-file, given the fullpath to the do-file

## and a list of parameters.

import subprocess

cmd = ["stata", "do", dofile]

for param in params:

cmd.append(param)

return subprocess.call(cmd)

## Do some processing in Python

## Run a do-file

dostata("/home/roberto/Desktop/pyexample3.do", "mpg", "weight", "foreign")

来自终端的完整呼叫,结果如下:

roberto@roberto-mint ~/Desktop

$python pydo.py

___ ____ ____ ____ ____ (R)

/__ / ____/ / ____/

___/ / /___/ / /___/ 12.1 Copyright 1985-2011 StataCorp LP

Statistics/Data Analysis StataCorp

4905 Lakeway Drive

College Station, Texas 77845 USA

800-STATA-PC http://www.stata.com

979-696-4600 stata@stata.com

979-696-4601 (fax)

Notes:

1. Command line editing enabled

. do /home/roberto/Desktop/pyexample3.do mpg weight foreign

. clear all

. set more off

.

. local y `1'

. local x1 `2'

. local x2 `3'

.

. display `"first parameter: `y'"'

first parameter: mpg

. display `"second parameter: `x1'"'

second parameter: weight

. display `"third parameter: `x2'"'

third parameter: foreign

.

. sysuse auto

(1978 Automobile Data)

. regress `y' `x1' `x2'

Source | SS df MS Number of obs = 74

-------------+------------------------------ F( 2, 71) = 69.75

Model | 1619.2877 2 809.643849 Prob > F = 0.0000

Residual | 824.171761 71 11.608053 R-squared = 0.6627

-------------+------------------------------ Adj R-squared = 0.6532

Total | 2443.45946 73 33.4720474 Root MSE = 3.4071

------------------------------------------------------------------------------

mpg | Coef. Std. Err. t P>|t| [95% Conf. Interval]

-------------+----------------------------------------------------------------

weight | -.0065879 .0006371 -10.34 0.000 -.0078583 -.0053175

foreign | -1.650029 1.075994 -1.53 0.130 -3.7955 .4954422

_cons | 41.6797 2.165547 19.25 0.000 37.36172 45.99768

------------------------------------------------------------------------------

.

. exit, STATA clear

资料来源:

可以在以下位置找到使用Python和Stata的不同路线

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值