与Stata相关的职位

斯塔塔是我最喜欢的通用统计信息包。可悲的是,它也是我最喜欢的过去时光之一,但是你在那儿。这是我与Stata相关的博客文章的集合。如果这与您相关,您可能还对 斯塔塔课程的一系列幻灯片 我几年前教过(德语)

一月 262014
 

R Package Parallel:如何解决不存在的问题

有点愚蠢的是,我的大学授予我进入Mogon的权限:不是上帝,不是死亡金属乐队,而是他们的超级计算机,该计算机目前在全球最快的计算机500强中排名第182位。它拥有约34,000+核和超过80 TB的RAM,但基本上 ’只是一大堆Linux机器。这意味着我对如何处理有一个粗略的想法,并且它为我愉快地运行了我的本机Linux 斯塔塔和MPlus(以及希望的Jags)二进制文件。它还安装了R,这就是我苦难开始的地方。

I have a lengthy R job that deals 与 census data. Basically, it looks up the absolute number of minority residents in some 25,000 output areas and their 即时 neighbours and calculates a series of percentages from these figures. I think this 可以 原则上可以在Stata中完成,但是R提供了方便的库来处理地理编码数据(sp和朋友),非矩形数据结构以及功能齐全的编程语言的所有陷阱,因此如果不这样做,那将是愚蠢的使用它。唯一的问题是R相对较慢且是单线程的,我的脚本被他们尴尬地称为并行:相同的琐碎函数应用于33个向量,每个向量具有25,000个元素。对向量的每次计算大约需要8秒钟才能完成,总共大约需要5分钟。将读取数据所需的时间和一些相当大的查找表相加(重复计算哪个输出区域彼此之间足够接近才能被视为邻居,这将非常耗时),我们正在寻找在八到十分钟内跑步一遍。

莫贡

莫根图片来源:ZDV JGU Mainz

虽然我不 计划 经常运行此脚本–一旦计算完成并保存,结果就可以一次又一次地用于分析中–我完全希望我可以更改某些操作,包括不同的变量等,因此我开始玩弄 平行 R的程序包突然可以使用我的许多核心。

十二个小时后,我学习了调度系统(LSF)的基础知识,解决了在家庭,办公室,中央和超级计算机之间同步数据的问题,对方法有了一些了解 平行 可以正常工作,否则基本上没有任何结果:即使在超级计算机上运行脚本的并行化版本的最佳尝试也比我功能强大的办公计算机上的序列化版本慢一点(而且没有时间(15到90秒之间))脚本花了很多时间等待转移到群集的合适节点上。我尝试了不同的事情:更换 lapplymclapply,无论核心数量如何,速度都较慢;使用 clusterApply 代替 lapply (相同的结果),并将33个串行作业分派到后台,这甚至更糟,大概是因为存储返回的值导致更改了相当大的数据结构,这些数据结构传播到了所涉及的所有内核。

得到教训?

因此,是的,为了在脚本中节省几分钟的时间,而我估计在接下来的几周中该脚本将运行不超过四到五次,因此我花了12个小时来获得结果。但是至少我学到了一些东西(除了旧有的明显重复‘永不更改中途运行系统’咒语)。首先,即使需要八秒钟来进行求和,一个25,000个元素的向量也可能会很短,才能真正受益于将计算转移到更多核中。虽然分叉应该很便宜,但是设置额外线程的开销将占所有节省的成本。其次,并行运行作业而不真正了解这会产生什么开销是一个愚蠢的主意,并且知道这会造成什么开销以及如何避免这种开销很不值得(见上文)。第三,我可以随时重用基础架构’创建(用于更有意义的实验)。第四,我接下来在Mogon进行的工作应完全避免半熟的中层并行化。相反,我将细粒度的隐式并行性(内置于Stata和Mplus中)和非常粗糙的显式并行性(通过将冗长的脚本分解为可以独立运行的小块)相结合。绝对需要进一步的研究。

十一月 222013
 

测量测量偏差

在我们的 最近的政治分析论文 (脱下衣服的作者’ version),乔斯琳·埃文斯(Jocelyn Evans)和我展示马丁,特劳格特和肯尼迪 ’两方测量准确性的衡量标准可以扩展到多方案例(对于比较主义者和对美国以外的世界感兴趣的其他人更有意义)。这种扩展导致了一系列针对特定政党的偏见度量,以及两种总体调查偏倚的标量度量。

此外,我们证明了我们的新度量与熟悉的多项式logit模型紧密相关(就像MTK度量与二项式logit紧密相关)。此演示不是“令人厌烦的代数”练习。相反,它导致标准误差的直接推导,并有助于在标准统计数据包中实施我们的方法。

选民投票
那些日子脚步.com / 抄送-SA

我们的免费软件的更新

我们已经在Stata中对这样的实现进行了编程,因此在R中实现我们的方法应该不是很困难(有志愿者吗?)。我们的Stata代码已经在SSC上使用了几个月,但最近已进行了重大更新。新版本1.0包括对现有命令Surveybias.ado和Surveybiasi.ado的各种错误修复,稍微好一些的文档,两个应该帮助您开始使用该方法的玩具数据集以及一个新命令Surveybiasseries.ado。

调查偏见series有助于比较一系列(选举前)民意调查。它需要一个数据集,其中每一行都对应于调查的边距(预测的投票份额)。这样的数据集可以从已发布的资源中快速构建。不需要访问原始数据。 调查偏见series计算每个民意测验的准确性测度,并将其存储在一组新变量中,然后将其用作民意测验准确性模型中的因变量。

估计调查偏差入门

斯塔塔的Surveybias的新版本应在接下来的几周内出现在SSC上(仔细检查版本号(以前是0.65,现在应该是1.0)和发布日期),但是您可以立即从此处安装它网站:

net from //www.zxdzkj.com/stata 
net install 调查偏见

要查看执行中的新命令,请尝试此操作

use fivefrenchsurveys, replace

会将来自法国大选(2012)期间进行的五次选举前民意测验的信息加载到内存中。投票份额是指参加第一轮比赛的八名候选人。

调查偏见series in 1/3 , popvaria(*true) samplev(fh-other) nvar(N) gen(frenchsurveys)

将针对整套候选人计算我们在前三次调查中的准确性测度及其标准误。

调查偏见series in 4/5, popvariables(fhtrue-mptrue) samplevariables(fh-mp) nvar(N) gen(threeparty)

将针对第3项调查计算针对三方投票(即奥朗德,萨科齐,勒庞)的偏见。 4和5(投票共享自动重新缩放为单位,无需重新编码)。新的变量名称以“frenchsurveys” and “threeparty” and should be otherwise self-explanatory (i.e. 三方bw is $B_w$ for the three party case, and 三方sebw the corresponding standard error). Feel free to 情节 and model to your heart’s content.

七月 172013
 

复制数据 为了我们的到来 关于我们新的多项民意调查的准确性指标的政治分析文件 (例如大选前的民意测验)刚刚在PA 数据宇宙上在线发布。因此,如果您想评估2012年总统大选期间法国民意测验的表现(或者迫不及待地要重新运行我们对 体重‘的采样分布),下载我们的数据并开始播放。

A current version of our 斯塔塔 add-on 调查偏见 is included in the bundle. Alternatively, you can install the 软件 into you personal ado dir by typing ssc install 调查偏见.

七月 102013
 
二手打孔卡
BinaryApe / 脚步 / 抄送

在最近的一篇论文中,我们 在民意调查中得出各种偏倚的多项度量 (例如,大选前的民意测验)。换句话说,使用我们的方法,您可以计算多党选举中调查偏差的标量度量。

Thanks to Kit Baum over at Boston College, our 斯塔塔 add-on 调查偏见.ado is now available from 统计软件组件 (SSC)。附加组件将分类变量的名称和所述变量作为其参数’人口中的真实分布。为了什么’s worth, the program tries to be smart: 调查偏见 vote, popvalues(900000 1200000 1800000), 调查偏见 vote, popvalues(0.2307692 0.3076923 0.4615385), and 调查偏见 vote, popvalues(23.07692 30.76923 46.15385) should all give the same result.

如果你不这样做’t have access to the raw data but want to assess 调查 偏压 evident in published figures, there is 调查偏见i, an “immediate” command that lets you do stuff like this:  调查偏见i , popvalues(30 40 30) samplevalues(40 40 20) n(1000). Again, you may specify absolute values, relative frequencies, or percentages.

If you want to go ahead and measure 调查 偏压, install 调查偏见.ado调查偏见i.ado on your computer by typing ssc install 调查偏见 在您的Stata网络感知副本中。 And if you use and like our 软件, please cite our 即将发表的关于针对轮询偏差的多项多项式精度度量的政治分析论文.

2014年4月更新:新版本1.1可用

232013
 

所有调查均偏离变量的真实分布,但某些调查比其他调查大。这在选举研究的背景下尤其重要,因为选举研究的真相分布在选举之夜被揭晓。不会’如果能用一个单一的数字量化民意测验员X在选举前调查中表现出的偏见,这很好吗?哎呀,您甚至可以使用RHS变量(例如选举时间,样本量或调查的发起人)对民意调查进行建模,并得出臭名昭著的估计值。“house effect”,.

我和Jocelyn Evans通过扩展Martin,Kennedy和Traugott开发了一种计算该数字的方法’s measure A 多方案件。作为我们非常有创造力的家伙,我们称这个新统计为[drumroll] B。我们还导出了该度量的加权形式 体重以及用于衡量偏爱/反对任何一方的偏见的统计信息(A')。当然,我们的度量可以应用于已知分布的任何类别变量的采样。

我们在一篇论文中充分开发了所有这些优点(并通过分析法国大选前民意测验的偏见来说明它们的用处)。
(我们非常满意)刚刚被接受在《政治分析》中发表(其后附有复制文件)。

我们的模块survebias是实现这些方法的Stata ado文件。它应该在夏天从SSC可用,使您可以方便地使用新方法。一世’ll keep you posted.

012013
 

什么 is the Delta Method?

几年来,我偶尔使用了增量法,而实际上并没有真正了解到底发生了什么。最近与好奇的审阅者的相遇改变了这一情况。事实证明,增量法比切片面包更有用,而且更健康。

三角函数法的基础是1940年代由克拉默(Oehlert 1942)奠定的,它近似于某些函数的期望值(或更高的矩)。 g(\cdot) 随机变量 x 通过(截断的)泰勒级数展开。更具体地说,Agresti(2002:578)表明(在弱条件下)某些参数 \theta 具有近似正态分布且具有方差的样本 \sigma^{2}/n,抽样分布 g(\theta) 也近似正常 [g'(\theta)]^{2}\sigma^2/n,因为 g(\cdot) 在...附近近似线性 \theta。可以将delta方法推广到多元正态随机向量(Agresti 2002:579)的情况,例如某些参数估计集的联合采样分布。

简而言之,这意味着人们可以使用增量法来计算置信区间,并且可以对a的几乎每个线性或非线性变换执行假设检验。 向量 参数估计。如果您对两个系数的比率感兴趣并需要一个置信区间,则由于某种原因,您是否需要知道 e ^ {\beta} >c delta方法很可能是您的朋友。

Delta法和nlcom

斯塔塔’s procedure nlcom 是增量方法的一种特别通用且功能强大的实现。作为后估算命令, nlcom 接受对模型参数的符号引用,并为其线性和非线性组合和变换计算采样方差。如果您可以写下转换公式, nlcom 会吐出结果,标准误差和置信区间,甚至会存储估计的完整方差-协方差矩阵。也就是说,这意味着您可以滥用Stata’内置的程序来实现您自己的估算器。

什么’不喜欢吗?好吧,一方面,Stata没有给出近似效果的指标。它’总是值得检查一下结果是否合理,在特别复杂的情况下,应该使用模拟/自举进行双重检查。但基本上>nlcom 很好玩

参考文献

阿格里斯蒂,艾伦。 2002。分类数据分析。 2版。霍博肯:约翰·威利。

Oehlert,Gary W.,1992年。“关于Delta方法的注释。”美国统计学家
46(1):27–29。

十二月 192012
 

作为我最近关于之间关系的帖子的后续内容 经合组织国家的枪支所有权和凶杀案,我已滚动数据集(根据由 gunpolicy.org),然后将我的分析脚本整合到一个简洁的Stata软件包中。如果要重新创建表格和图形,或者要使用数据,只需输入

net get //www.zxdzkj.com/stata/guns

do guns-analysis

在您的Stata网络感知副本中。

如果你不这样做’与Stata一样,您可以从 //www.zxdzkj.com/stata/oecd-gun-deaths.txt 。请享用!

十月 072012
 
斯塔塔中的矩阵图

你喜欢这张图吗?我不’认为它特别吸引人,那就是花了数小时才创造出来。我真正想要的是我运行的18个模拟的矩阵表示形式。更具体地说,我针对三种不同的样本量在六个不同条件下模拟了统计信息的抽样分布。由Stata提供,进行模拟非常容易’s simulate command, which created 18 corresponding data sets. Graphing them 与 kdensity also poses no problem, but combining these graphs did, because I 可以 find no canned command that produces what I wanted: a table-like arrangement, 与 labels for the columns (i.e. sample sizes) and rows (experimental conditions). 什么 I 可以 do was set up / label a variable 与 18 categories (one for each data set) and use the ,by() option to create a trellis 情节. But that would waste a lot of ink/space by replicating redundant information. At the end of the day, I created a nine graphs that were completely empty save for the text that I wanted as row/column labels, which I then combined into two separate figures, that were then combined (using a distorted aspect ratio) 与 my 18 separate 情节s. That boils down to a lot of dumb code. E.g., this creates the labels for the six conditions. Note the fxsize option that makes the combine graph narrow, and the necessity to create an empty scatter 情节.

capture drop x
capture drop y
capture set obs 5
gen x= .
gen y= .

当地的专论= “”

值c = 1/6 {
图双向分散x y,xtitle(“”) ytitle(“”)xscale(off)yscale(off)字幕(“(`c’)”,position(0)nobox)graphregion(margin(zero))plotregion(style(none))
当地的专论“`allgraphs’ condition`c'”
图重命名条件’ , replace
}

图合并`allgraphs’,cols(1)colfirst imargin(0 0 0 0)fxsize(10)b1title(” “)

列标签是通过类似的代码创建的。最后,我组合了18个图形(名称在本地宏中),并将结果与​​标签图形组合在一起。

graph combine `graphs' ,colfirst cols(3) ycommon xcommon imargin(3 3 3 3) b1title("\$ 体重 \$") l1title("Density")
graph rename simulations, replace
graph combine sizelabels.gph condlabels.gph simulations, imargin(0 0 0 0) cols(2) holes(1)

你们中谁能想到一种更优雅的方式来实现这一目标?

斯塔塔中的矩阵图

 

四月 262012
 

对于我们的一块 选举中的距离效应 我们对数百名候选人的地址进行了地理编码。对于初学者:地理编码是将地址转换为地理坐标(经度和纬度)的一种精美技巧。感谢Google和其他一些提供商(例如OpenStreeMap),现在这是一个相对轻松的过程。但是,当一个人需要多个地理编码的地址时,就不依赖于点击。人们需要一种API,即一种软件库,该软件可以通过R,Python或其他某种编程语言来访问该服务。

好处是,我从总体上了解了Python的奇迹,尤其是geopy的魅力。缺点是编写一个简单的脚本,该脚本从Stata文件中获取许多字符串,将其转换为坐标,然后将它们返回到Stata中,花费的时间比我想象的要长。刚才我’我们了解了一个可能的捷径(通过 优秀的数据猴子博客):地理编码是用户编写的Stata命令,该命令接受包含地址字符串的变量,并返回两个包含纬度/经度信息的新变量。现在,这将节省一些时间。您可以通过键入以下内容来安装地理编码

net from http://www.stata-journal.com/software/sj11-1
net install dm0053

但是,有一个潜在的缺点:Google限制了每天(可能是每分钟)的免费查询次数。通过Python,您可以轻松地交错请求,也可以使用应该为您提供更大配额的API密钥。另一方面,一次对来自Stata的大量地址进行地理编码可能会导致同样大量的解析错误。