标签: stata

将代码从vim发送到stata

我一直在大学使用Vim在Windows中编写Stata脚本一段时间.我正在学习R,我想完全切换到Linux作为我的操作系统(我最近在笔记本电脑上切换到Ubuntu).R在Windows和Linux中都可以与Vim一起使用,但是我有时候还需要使用Stata.在Windows中,我一直使用Stata用户提供的简单AutoIt脚本将行/整个文件发送到stata进行评估.这个脚本在Linux中不起作用.

这就是脚本的样子

; AutoIt v3 script to run a Stata do-file from an external text editor
; Version 3.1, Friedrich Huebler, fhuebler@gmail.com, www.huebler.info, 30 March 2009

; Declare variables
Global $ini, $statapath, $statawin, $dofile, $winpause, $keypause, $clippause

; File locations
; Path to INI file
$ini = @ScriptDir & "\rundo.ini"
; Path to Stata executable
$statapath = IniRead($ini, "Stata", "statapath", "C:\Program Files\Stata10\wsestata.exe")
; Title of Stata window
$statawin = IniRead($ini, "Stata", "statawin", "Stata/SE 10.1")

; Path to do-file that is …
Run Code Online (Sandbox Code Playgroud)

python linux vim bash stata

8
推荐指数
1
解决办法
1389
查看次数

Stata:检查本地宏是否未定义

我正在写一个Stata do文件,如果用户不提供某些参数,我想提供默认值.为此,我想检查宏是否未定义.

我想出了一个hacky方法来做到这一点:

*** For a local macro with the name value:
if `value'1 != 1 {
    ...do stuff
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有惯用的方法来做到这一点.

undefined stata stata-macros

8
推荐指数
2
解决办法
4884
查看次数

使用多个变量和一些时间不变的方式从宽到面重塑数据框

这是Stata在一步中处理的数据分析中的基本问题.

使用时间不变数据(x0)和2000年和2005年的时变数据(x1,x2)创建一个宽数据框:

d1 <- data.frame(subject = c("id1", "id2"),  
x0 = c("male", "female"),  
x1_2000 = 1:2,   
x1_2005 = 5:6,  
x2_2000 = 1:2,  
x2_2005 = 5:6    
) 
Run Code Online (Sandbox Code Playgroud)

ST

subject x0 x1_2000 x1_2005 x2_2000 x2_2005  
1     id1 male         1       5       1       5  
2     id2 female       2       6       2       6  
Run Code Online (Sandbox Code Playgroud)

我想像面板一样塑造它,所以数据看起来像这样:

        subject     x0 time x1 x2
1     id1   male 2000  1  1
2     id2 female 2000  2  2
3     id1   male 2005  5  5
4     id2 female 2005  6  6
Run Code Online (Sandbox Code Playgroud)

我可以用reshapest 做到这一点 …

r panel data-manipulation reshape stata

8
推荐指数
1
解决办法
9384
查看次数

使用esttab按组生成汇总统计信息,其中包含平均差异和显着性的列

我想使用esttab(ssc install estout)按组生成汇总统计信息,其中包含平均差异和显着性的列.很容易将这些生成为两个单独的表estpost,使用summarize,和ttest,并手动组合,但我想自动化整个过程.

以下代码生成所需表的两个组件.

sysuse auto, clear

* summary statistics by group
eststo clear
by foreign: eststo: quietly estpost summarize ///
    price mpg weight headroom trunk
esttab, cells("mean sd") label nodepvar   

* difference in means
eststo: estpost ttest price mpg weight headroom trunk, ///
    by(foreign) unequal 
esttab ., wide label   
Run Code Online (Sandbox Code Playgroud)

我可以打印两张桌子并将其粘贴到一张桌子上.

* can generate similar tables and append horizontally
esttab, cells("mean sd") label
esttab, wide label


* manual, cut-and-paste solution …
Run Code Online (Sandbox Code Playgroud)

stata

8
推荐指数
2
解决办法
3万
查看次数

Stata:如何将字符串变量更改为日期?

我是Stata的新手,我想知道如何将包含日期的字符串变量更改为日期格式.

变量中的数据如下所示:

YYYY-MM-DD

我应该首先删除破折号,以便Stata可以识别格式以便以后使用gen var = date()吗?

谢谢您的帮助.

string format date stata

8
推荐指数
1
解决办法
4万
查看次数

如何计算R中的观察数量,如Stata命令计数

aaa<- data.frame(sex=c(1,1,2,2,1,1), group1=c(1,2,1,2,2,2),group2=c("A","B","A","B","A","B"))
Run Code Online (Sandbox Code Playgroud)

stata命令:

count if sex==1 & group1==2
count if sex==1 & group2=="A"
Run Code Online (Sandbox Code Playgroud)

count计算满足指定条件的观察数.如果未指定条件,count将显示数据中的观察数.

怎么算R?谢谢.

r stata

8
推荐指数
1
解决办法
8万
查看次数

是否有相当于Stata的egen功能?

Stata有一个非常好的命令,egen这使得计算观察组的统计数据变得容易.例如,可以计算每个组的最大值,平均值和最小值,并将它们作为变量添加到详细数据集中.Stata命令是一行代码:

by group : egen max = max(x)
Run Code Online (Sandbox Code Playgroud)

我从来没有summarisedplyr包中找到相同的命令,这使得计算每个组的统计数据变得容易,但是我必须运行一个循环来将统计数据与每个观察结果相关联:

library("dplyr")
N  <- 1000
tf  <- data.frame(group = sample(1:100, size = N, replace = TRUE), x = rnorm(N))
table(tf$group)
mtf  <- summarise(group_by(tbl_df(tf), group), max = max(x))
tf$max  <- NA
for (i in 1:nrow(mtf)) {
  tf$max[tf$group == mtf$group[i]]  <- mtf$max[i]
}
Run Code Online (Sandbox Code Playgroud)

有没有人有更好的解决方案?

r stata

8
推荐指数
1
解决办法
3807
查看次数

如何在Teradata中设置块插入大小参数

我在Ubuntu 14.04.2 LTS服务器上的统计软件包Stata(v14.2)中使用odbc insert命令将一些数据插入Teradata DB(v14.10).

这个Stata命令有一个block选项,它使Stata以1000行的块发送数据.不幸的是,ODBC驱动程序似乎在进行单行插入(根据监视系统的DBA).

是否可以更改ODBC驱动程序行为?

如果是这样,如何指定ODBC驱动程序在.odbc.ini文件或连接字符串中使用的块大小?

我看过TD ODBC手册和谷歌搜索,但我找不到任何有用的东西.

odbc teradata stata

8
推荐指数
0
解决办法
297
查看次数

lme4 :: glmer与Stata的melogit命令

最近我一直试图将大量随机效应模型适用于相对较大的数据集.假设在最多25个时间点观察到大约50,000人(或更多).如此大的样本量,我们包含了许多我们正在调整的预测因子 - 可能有50个左右的固定效应.我lme4::glmer在R中使用模型拟合二元结果,每个主题都有随机截距.我不能详细介绍数据,但glmer我使用的命令的基本格式是:

fit <-  glmer(outcome ~ treatment + study_quarter + dd_quarter + (1|id),
              family = "binomial", data = dat)
Run Code Online (Sandbox Code Playgroud)

其中两个study_quarterdd_quarter与各约20个级别的因素.

当我尝试在R中使用此模型时,它会运行大约12-15个小时,并返回一个无法收敛的错误.我做了一堆故障排除(例如,遵循这些指导原则),没有任何改进.并且最终收敛甚至不接近(最大梯度在5-10附近,而收敛标准是0.001我认为).

然后我尝试使用melogit命令在Stata中拟合模型.该模型适合在2分钟内完成,没有收敛问题.相应的Stata命令是

melogit outcome treatment i.study_quarter i.dd_quarter || id:
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?Stata是否只有更好的拟合算法,或者更好地针对大型模型和大型数据集进行了优化?令人惊讶的是,运行时间有多么不同.

r lme4 stata mixed-models

8
推荐指数
1
解决办法
727
查看次数

轴在多条线上断开时偏离中心

我正在使用graph twoway scatter并添加自己的ylabels.

我经常有很长的标签并将它们分成多行.但是,我遇到一个问题,当我想打破一些在两行的标签,而不是其他.

当我这样做时,单线标签相对于它们的tick标记是偏心的,就像Stata期望它们也有两条线一样.

请参阅下面的简单说明:

sysuse auto, clear

/* This graph has one long label and one short but both are off-center 
relative to their tick marks */

twoway scatter length weight, ytitle("") ylabel(220 ///
`" "This one is a very long" "label, broken up" "' 140 "This one is not", ///
ang(horizontal))

/* The order of labels on the graph *does not* appear to matter */

twoway scatter length weight, …
Run Code Online (Sandbox Code Playgroud)

stata

8
推荐指数
1
解决办法
475
查看次数