当前位置:  开发笔记 > 编程语言 > 正文

Stata访问元素作为标量或宏的矩阵

如何解决《Stata访问元素作为标量或宏的矩阵》经验,为你挑选了1个好方法。

我在Stata中生成一列随机数,尝试不同的种子,看看哪一个给出了最好的结果.我创建了250个随机数,并将它们粘贴到下面看到的foreach循环的代码中.省略号代表~240粒种子.

save "`datadir'ProviderCounty", replace

foreach x in 89583 31214 65326 61107 54662 91414 86171 14809 19625 . . . 74397 85273 {

    use "`datadir'ProviderCounty", replace
    display `x'
    set seed `x'
    generate rannum = uniform()
    . . . 
}

我想通过将它们从Excel中读取到这样的矩阵中来替换250行的长行,然后逐个遍历矩阵.

* Import seeds randomly generated in Excel
clear
import excel "`datadirIN'Random Number Seeds.xlsx", sheet("Sheet1") cellrange(A2:A252) firstrow
mkmat Seeds, matrix(matSeeds)
scalar mlen = rowsof(matSeeds)
clear

这将在以"save ..."开头的行之间进行.和foreach线.我不知道怎么做是迭代矩阵.我需要一行用一行代替foreach行,迭代遍历矩阵并将种子号放在宏"x"中.



1> Nick Cox..:

我希望我是误解,但潜在的想法似乎是错误的.使用指定种子的唯一优点是确保详细结果的可重复性,因为使用相同程序和相同数据的其他人至少可以确保获得相同的结果(因此可以确切地检查您所做的事情) .否则,如果结果敏感地依赖于特定种子,那么样本量太小,或者问题太脆弱,任何结果都不可信.你怎么报告这个?如果你压制你必须寻找合适的结果,那么这将被广泛认为是不可接受的.如果你宣传这个事实,你就会宣传那些在可疑和无用之间加盖印章的结果.我建议酌情与主管,导师或同事讨论你的想法.如果他们建议这样做,那么无论你在哪里展示结果,都需要解释为什么你认为这是一个好主意.

总而言之,Stata矩阵具有行和列,因此给定列向量,其元素通常是matname [i, 1].订阅在Stata矩阵的任何文档中定义,例如http://www.stata.com/help.cgi?matrix

所以你似乎暗示的循环可能是

mkmat Seeds, matrix(matSeeds)

forval i = 1/`= rowsof(matSeeds)' {
    ...
    set seed `= matSeeds[`i', 1]'  
    ... 
}

http://www.stata.com/help.cgi?macro文档(在这种情况下)的标量和矩阵元素的文档评估.

编辑:此处使用的语法记录help macro在http://www.stata.com/manuals14/pmacro.pdf中.这是一个例子:

. mat foo  = J(1, 1, 42)

. set seed `=foo[1,1]'

. display c(seed)
X51535c3ec43f462544a474abacbdd93d386b

. mat foo  = J(1, 1, 666)

. set seed `=foo[1,1]'

. display c(seed)
X97b5c5aec43f462544a474abacbdd93d2d9c

这里的根本问题是,set seed它本身不会评估输入它的表达式.有各种解决方法,包括定义本地宏,然后键入宏引用.Stata的工作方式是在set查看其参数之前评估宏.此处显示的语法通过动态评估来切断宏.

这里使用的情况是,expand_optr是一个等号,=后跟exp,即要计算的表达式.在这种情况下,表达式只是一个矩阵元素.


我的第一段是,并且是一个善意的尝试,以警告OP(和任何其他感兴趣的人),正如所解释的那样,潜在的统计观点似乎是可疑的.我坚持认为这是公平的评论.可以说,一个想法的统计优点在这里是偏离主题的,但作为一个统计人,我认为标记可能有问题的案例是合适的和道德的.OP显然认为这种方法是完全可辩护的.我仍然很困惑,但我不再说了.像往常一样,读者可以而且应该自己判断.
你可以解释为什么你认为我的评论是错误的或不相关的.听到这个是不受欢迎的,但是"尝试不同的种子以查看哪一个给出了最好的结果"是不合格的,基于随机数生成的模拟点的规范性误解.否则,我的评论无可置疑.
对于那些感兴趣的人,有一系列论文从William H. Kruskal和Frederick Mosteller开始.代表性抽样,I:非科学文献._国际统计评论_47:13-24详细研究了一个难以理解和有问题的想法.
文献中没有理由提出您的提案,这不是简单的随机抽样.有一些公认的设计可以使样本特征与人口相匹配.一些是:分层抽样,系统抽样,平衡抽样,格子抽样,两阶段抽样,在第二阶段进行分层,抽样概率与大小成比例.YvesTillé的书Sampling algorithms,Springer,2006涵盖了平衡采样,在他的R采样包中实现.
什么令你困惑的语法?它是`set`的语法,与`matrix`本身无关.你试过吗?您是否尝试过您猜测的语法?同样,欢迎驳斥错误的想法.
格雷森·耶森(Raymond Jessen),1978年,统计调查技术,统计调查技术,Wiley进行了格子抽样.还可以应用采样后调整,以在多个特征上实现更接近的采样和人口相似性.耙和校准是两种成熟的方法.参见Sarndal,CE 2007.调查理论和实践中的校准方法.调查方法33,没有.2:99-119.http://www.statcan.gc.ca/pub/12-001-x/2007002/article/10488-eng.pdf.
推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有