标签: stata

在没有Stata软件的情况下将dta文件转换为csv

有没有办法将dta文件转换为csv

我的计算机上没有安装Stata版本,所以我做不了类似的事情:

File --> "Save as csv"
Run Code Online (Sandbox Code Playgroud)

csv file-conversion stata

65
推荐指数
6
解决办法
12万
查看次数

将数组或DataFrame与其他信息一起保存在文件中

统计软件Stata允许将短文本片段保存在数据集中.这可以使用notes和/或完成characteristics.

这对我来说是一个很有价值的功能,因为它允许我保存各种信息,从提醒和待办事项列表到有关我如何生成数据的信息,甚至是特定变量的估算方法.

我现在正试图在Python 3.6中提出类似的功能.到目前为止,我已经在线查看了一些帖子,但这些帖子并没有完全解决我想做的事情.

一些参考文章包括:

对于小型NumPy数组,我得出结论,函数numpy.savez()和a 的组合dictionary可以在单个文件中充分存储所有相关信息.

例如:

a = np.array([[2,4],[6,8],[10,12]])
d = {"first": 1, "second": "two", "third": 3}

np.savez(whatever_name.npz, a=a, d=d)
data = np.load(whatever_name.npz)

arr = data['a']
dic = data['d'].tolist()
Run Code Online (Sandbox Code Playgroud)

但问题仍然存在:

是否有更好的方法可以将其他信息包含在包含NumPy数组或(大)的文件中Pandas DataFrame

我在听到有关特定特别感兴趣的优点缺点,你可能有例子的任何建议.依赖性越少越好.

python numpy hdf5 stata pandas

56
推荐指数
3
解决办法
9919
查看次数

阅读R中的Stata 13文件

有没有办法在R中读取Stata版本13数据集文件?

我试图做以下事情:

> library(foreign)
> data = read.dta("TEAdataSTATA.dta") 
Run Code Online (Sandbox Code Playgroud)

但是,我收到了一个错误:

read.dta("TEAdataSTATA.dta")中的错误:
不是Stata版本5-12 .dta文件

有人可以指出是否有办法解决这个问题?

r stata

50
推荐指数
4
解决办法
5万
查看次数

R和Stata中全局变量危险的例子

在最近与同学的对话中,我一直主张避免全局,除了存储常量.这是一种典型的应用统计类型程序,每个人编写自己的代码和项目大小都很小,所以人们很难看到由于草率的习惯造成的麻烦.

在谈论避免使用全局变量时,我主要关注全局变量可能导致问题的以下原因,但我想在R和/或Stata中使用一些示例来遵循原则(以及您可能认为重要的任何其他原则) ),我很难想出可信的人.

  • 非本地化:Globals使调试更难,因为它们更难理解代码流
  • 隐式耦合:Globals通过允许远程代码段之间的复杂交互来打破函数式编程的简单性
  • 命名空间冲突:重用通用名称(x,i等),导致命名空间冲突

对这个问题的一个有用的答案是一个可重现的,自包含的代码片段,其中全局变量会导致特定类型的麻烦,理想情况下是另一个代码片段,其中问题得到纠正.如有必要,我可以生成更正的解决方案,因此问题的示例更为重要.

相关链接:

全局变量很糟糕

全球变量是否不好?

scope r global-variables stata

44
推荐指数
7
解决办法
3438
查看次数

相当于Python中的Stata宏

我正在尝试使用Python进行统计分析.

在Stata中,我可以定义本地宏并根据需要展开它们:

program define reg2
    syntax varlist(min=1 max=1), indepvars(string) results(string)
    if "`results'" == "y" {
        reg `varlist' `indepvars'
    }
    if "`results'" == "n" {
        qui reg `varlist' `indepvars'
    }
end

sysuse auto, clear
Run Code Online (Sandbox Code Playgroud)

所以代替:

reg2 mpg, indepvars("weight foreign price") results("y")
Run Code Online (Sandbox Code Playgroud)

我可以:

local options , indepvars(weight foreign price) results(y) 
reg2 mpg `options'
Run Code Online (Sandbox Code Playgroud)

甚至:

local vars weight foreign price
local options , indepvars(`vars') results(y) 
reg2 mpg `options'
Run Code Online (Sandbox Code Playgroud)

Stata中的宏帮助我编写干净的脚本,而无需重复代码.

在Python中我尝试了字符串插值,但这在函数中不起作用.

例如:

def reg2(depvar, indepvars, results):
    print(depvar)
    print(indepvars)
    print(results)
Run Code Online (Sandbox Code Playgroud)

以下运行正常:

reg2('mpg', 'weight foreign price', …
Run Code Online (Sandbox Code Playgroud)

python stata pandas statsmodels stata-macros

34
推荐指数
2
解决办法
3607
查看次数

具有异方差性的回归校正了标准误差

我想找到最接近类似于Stata输出的R实现,以便使用具有异方差校正标准误差的最小二乘回归函数.具体来说,我希望更正的标准误差在"摘要"中,而不必为我的第一轮假设检验做额外的计算.我正在寻找一种与Eviews和Stata一样"干净"的解决方案.

到目前为止,使用"lmtest"软件包,我能想到的最好的是:

model <- lm(...)
coeftest(model, vcov = hccm) 
Run Code Online (Sandbox Code Playgroud)

这给了我想要的输出,但它似乎没有使用"coeftest"来表达它的目的.我还必须使用不正确的标准错误的摘要来读取R ^ 2和F stat等.我觉得应该存在一个"一线"解决方案来解决动态R的问题.

谢谢

r stata

30
推荐指数
2
解决办法
4万
查看次数

如何识别/删除R中的非UTF-8字符

当我在R中导入Stata数据集(使用外部包)时,导入有时包含无效的UTF-8字符.这本身就令人不愉快,但是一旦我尝试将对象转换为JSON(使用rjson包),它就会破坏所有内容.

您是否有想法,如何识别字符串中的无效UTF-8字符并在此之后将其删除?

r utf-8 stata

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

如何处理R中的多种缺失?

许多调查都有不同类型缺失的代码.例如,代码簿可能表明:

0-99数据

-1没问的问题

-5不知道

-7拒绝回应

-9模块没问

Stata有一个很好的设施来处理这些多种缺失,因为它允许你分配一个通用的.丢失数据,但也允许更具体的缺失类型(.a,.b,.c,...,.z).所有查看缺失的命令都会报告所有缺失条目的答案,但是您可以稍后对各种缺失进行排序.当您认为拒绝回应对归责策略的影响与未提出的问题不同时,这尤其有用.

我从未在R中遇到过这样的设施,但我真的很想拥有这种能力.有没有办法标记几种不同类型的NA?我可以想象创建更多的数据(包含缺失类型的长度为nrow(my.data.frame)的向量,或者哪些行具有哪种类型的缺失的更紧凑的索引),但这看起来非常笨拙.

r survey missing-data stata data-structures

19
推荐指数
2
解决办法
1376
查看次数

将代码从vim发送到外部应用程序以执行

我经常在工作中使用stata.我选择的文本编辑器是(g)vim.我一直在使用这里这里提供的脚本将代码从vim发送到stata.这个功能是非常实用的,实际上是唯一阻止我完全切换到Linux的东西.脚本是用AutoIT编写的,所以我不能在linux中使用它们.它们也基本上独立于文本编辑器的选择,编写它们的人使用的是notepad ++.

基本上,这些脚本与我的vimrc中的几行一起允许我将选择或整个文件发送到正在运行的stata窗口(如果没有打开,则首先启动stata).

我正在寻找一个在linux中执行此操作的解决方案,但我不知道从哪里开始.在linux中有两个不同的stata版本,命令行的stata和xstata是gui版本.我需要使用gui版本,因为命令行版本的功能有限,所以屏幕/ tmux被排除在外.

如果这是微不足道的,我真的很抱歉错过了它,并非常感谢解决方案.我也无法找到我可以使用的vim的现有插件.如果没有,我愿意花一些时间来弄清楚如何实施解决方案.然而,正确方向的指针会非常有用.我对linux和编程一般比较陌生,但愿意学习.

关于工具:我不知道bash,但在某些时候我想要查看它.我已经在python中涉足了一点,所以这也没关系.如果此任务还有其他优势,请告诉我.

任何帮助是极大的赞赏.AutoIT脚本托管在网站上,但如果需要,我可以在此处发布我的Windows设置.

编辑

好的,经过评论中的一些争论,这里是我需要翻译的基本AutoIT脚本.(我更喜欢每次都不会覆盖系统剪贴板内容的解决方案.)

Edit2我想这就是脚本本质上的作用:它检查一个打开的stata窗口,选择它(或执行一个),将要执行的内容粘贴到一个临时文件中,切换到stata窗口,选择命令行使用ctrl-1(以及可能已经使用ctrl-a编写的任何内容),然后粘贴"tempfile"到命令行,然后命令行执行发送的代码.至少这是我理解它的方式.

最后评论

我不久前在bash中编写了一个解决方案,它在这里作为这个问题的先前版本的答案发布.

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

; File locations
; Path to INI file
$ini = @ScriptDir & "\rundo.ini"
;; contents of ini file are the following
    ;[Stata]
    ;; Path to Stata executable
    ;statapath = "C:\Program Files\Stata11\StataSE.exe"
    ;; Title of Stata window
    ;statawin = "Stata/SE 11.2"
    ;; Keyboard shortcut for Stata command window
    ;statacmd = …
Run Code Online (Sandbox Code Playgroud)

python vim bash autoit stata

19
推荐指数
1
解决办法
1443
查看次数

任何Python库都会生成发布样式回归表

我一直在使用Python进行回归分析.获得回归结果后,我需要将所有结果汇总到一个表中并将它们转换为LaTex(用于发布).是否有任何包在Python中执行此操作?像Stata中的estout这样的东西给出了下表:

在此输入图像描述

python latex regression stata statsmodels

18
推荐指数
1
解决办法
4190
查看次数