STATA中对矩阵的处理方法.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STATA中对矩阵的处理方法

Stata中对矩阵的处理方法 概述 在STATA中,我们可以交互式的对矩阵进行操作。在STATA的程序编制中,矩阵也是非常重要的一个内容。 矩阵的定义 在STATA中矩阵的定义在某些方面和细节上是超过了数学的定义的。对于STATA而言,一个矩阵是一个被赋予了名字的一个单位,其包含r*c个元素(0rmatsize, 0cmatsize),元素的组成为双精度数值,没有缺失数值。 在这样的情况下,我们有一个3*2的矩阵,名字为A,其包含元素1,2,3,4,5和6。 第一行,第二列(在STATA中记为)的元素为2。列被命名为C1和C2,而行被命名为R1,R2和R3。这些是默认的STATA命名。这些标志在数学上也许并没有太多的作用,但是当我们在STATA中标记输出的时候其却可以帮助我们很多。 这些名字的处理与数值是相同的,例如 我们如上就定义了,注意到在B矩阵中,行的名称与列的名称是相同的。乘法的定义告诉我们对于任意a*b和b*c矩阵,结果是a*c的。这样,结果的行名和列名则分别为第一个矩阵的行名和第二个矩阵的列名。我们构造,而转置矩阵,其改变的是行和列的名称,所以我们可以得到上面的行名和列名的标志。 Matsize STATA当中矩阵的规模被限制为是不能大于matsize*matsize,matsize的默认值是40,但是你可以使用set matsize命令来重新设定。 最大的matsize是800,这样矩阵是不适合存放大量数据的。这样一个限制并不是一个很强的限制因为在统计公式中的矩阵常常具有的形式是(X’WZ),而STATA提供给我们了一个命令,matrix accum,来有效的形成这样的矩阵,我们可以参考后面的说明。 行名与列名 矩阵的行和列通常都是有名字的。STATA可以在建立矩阵的时候建立这些名字而运算符可以在计算中使用这些名字。而最终得到的行名和列名也是可以满足矩阵的基本结论的。 例如,考虑对于实际数据进行计算的 注意到矩阵中的这些名字都不是来自于我们的指定,而是自动进行的。当我们生成矩阵 时,STATA会生成下面的结果 Matrix accum会形成来自于数据的X’X矩阵而其行名和列名被规定为所使用的变量名。这些名字是正确的,因为。例如,(1,1)元素是weight变量的平方和,而(2,1)元素是weight和foreign变量的乘积的加总。 类似的,matrix vecaccum生成y’X,矩阵,而其同样以使用的变量名称对行名和列名进行了命名。所以matrix vecaccum yprimeX=mpg weight foreign的结果为 最后一个步骤,也对名字进行了操作,而且,如果你仔细的想一下,你可以推导出这些规则。(求逆)和转置运算相同,所以行和列的名字被互换。但是在这种情形下,矩阵是对阵的,所以结果导致名字不变。而乘积会使名字为第一个矩阵的列名和第二个矩阵的行名。最终的结果为 这里的解释可以为 研究者们很久以前就注意到矩阵的符号可以简化复杂计算的表达,但是他们还没有意识到的是,对应于每一个矩阵运算的数学定义,对于矩阵的名称也会有一个效果,其可以简化矩阵运算的复杂性。 行名与列名使用的目的 在大多数的情况下,矩阵是在STATA编程中进行使用,而STATA可以使用行名和列名来得到比较好的结果。例如,假设我们写一个代码,交互式的或者是在程序中,生成系数b以及协方差矩阵V。 我们可以加入两行来得到标准的估计输出。 STATA的estimates命令知道可以生成这个输出是因为系数向量以及协方差矩阵的行名和列名。进一步的,在大多数情况下我们不需要在我们的代码中给出b和V的行名和列名,因为,给定矩阵命名工作的方式,它们可以自动进行。 另外,有时候行名和列名可以帮助我们检测出编程的错误。假设我们写一个代码来生成矩阵b和V,但是出现了一个错误,有的时候我们的错误可以导致错误的行名和列名。假设此时并不是我们刚才计算的b值被显示出来,我们可能会生成: 现在如果我们要用于估计的话,STATA会拒绝,而且其会告知我们名字存在着一个问题。 但是,需要认真理解的是STATA满足的是矩阵代数的法则。而名称有的时候不能满足要求。比如矩阵的加法,C=A+B,其结果会导致而不论名字是怎样的。而对于不同名字的矩阵相加其并不是一个错误。 再一次说明,矩阵的行名和列名是用来标志输出的,它们并不影响矩阵代数的操作。 三部分的名字 行名和列名由三个部分所组成:equation_name; ts_operator, subname 在我们前面所举的例子中,前两个部分是空白的:行名和列名这时只包括subnames。这是典型的。在做单方程回归时(比如由regress,probit,logistic等),如果你调用结果矩阵,则你会发现行名和列名的形式为subnam

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档