STATA中对矩阵的处理方法.doc_第1页
STATA中对矩阵的处理方法.doc_第2页
STATA中对矩阵的处理方法.doc_第3页
STATA中对矩阵的处理方法.doc_第4页
STATA中对矩阵的处理方法.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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的。这样,结果的行名和列名则分别为第一个矩阵的行名和第二个矩阵的列名。我们构造,而转置矩阵,其改变的是行和列的名称,所以我们可以得到上面的行名和列名的标志。(二) MatsizeSTATA当中矩阵的规模被限制为是不能大于matsize*matsize,matsize的默认值是40,但是你可以使用set matsize命令来重新设定。最大的matsize是800,这样矩阵是不适合存放大量数据的。这样一个限制并不是一个很强的限制因为在统计公式中的矩阵常常具有的形式是(XWZ),而STATA提供给我们了一个命令,matrix accum,来有效的形成这样的矩阵,我们可以参考后面的说明。二、 行名与列名矩阵的行和列通常都是有名字的。STATA可以在建立矩阵的时候建立这些名字而运算符可以在计算中使用这些名字。而最终得到的行名和列名也是可以满足矩阵的基本结论的。例如,考虑对于实际数据进行计算的注意到矩阵中的这些名字都不是来自于我们的指定,而是自动进行的。当我们生成矩阵时,STATA会生成下面的结果Matrix accum会形成来自于数据的XX矩阵而其行名和列名被规定为所使用的变量名。这些名字是正确的,因为。例如,(1,1)元素是weight变量的平方和,而(2,1)元素是weight和foreign变量的乘积的加总。类似的,matrix vecaccum生成yX,矩阵,而其同样以使用的变量名称对行名和列名进行了命名。所以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等),如果你调用结果矩阵,则你会发现行名和列名的形式为subname形式。处理时间序列的时候我们会发现这时候的矩阵的行名和列名所具有的形式是ts_operater,subname。例如我们获得这个矩阵是通过进行一个rate对L.rate所做的回归,然后求取协方差矩阵来袄的。考虑行名和列名L.rate与考虑rate或者在前面的例子里以及foreign是没有差异的。方程的名称被用于标志分块矩阵,在多方程回归当中。这里有一个具有equation_names以及subnames矩阵名称的例子。下面的一个例子中包含全部的三个部分其中val:L.rate是与前面小节相同的名称,而是名称。我们来假设上面的矩阵是一个协方差矩阵,其由一个程序所生成,这个程序可以生成系数向量b如下:下面是对结果的显示与表达。方程的名字被用于区分不同方程的结果。(三) 规定行名和列名你可以使用matrix rownames命令与matrix colnames来重新设定行名和列名。在重新设定名称之前,可以列出矩阵来判断是否名称设置的不对。一般对于手动输入的矩阵,行名被设定为,而列名被设定为我们使用下面的matrix rownames命令与matrix colnames命令来重新设定它。而且你也有可能去设定方程名称(四) 获得行名与列名Matrix list命令可以显示具有行名和列名的矩阵。在编程的背景下,你可以使用宏来得到行名和列名。其中rowfullnames和colfullnames将会返回所显示列表的全名(equation_name, ts_operator, subname)Rownames和colnames则省略方程名而只返回ts_operator,subname。Roweq和coleq则返回方程的名称。三、 向量和标量STATA没有专门处理向量的语言,其只是将向量认为是矩阵的特殊情况并用matrix命令来进行处理。STATA确实有标量,虽然不是严格必要的,但是在特殊情况下会使用,见P scalar四、 手动输入矩阵手动输入矩阵时使用在每一种情况下,你都需要按行来输入矩阵,分割元素使用逗号,而分割行使用,在某些情况下也可以省略input。这样的一个好处是你可以使用任何元素的表达式而缺点是矩阵必须是比较小的,不超过50个元素(无论matsize的值是多少)而matrix input没有这样的限制,但是不能使用下标表达式。而且,在输入矩阵以后,可能要规定行名和列名,见上面的分析。五、 使用由STATA命令所创建的矩阵有一些STATA命令包括所有的估计命令会留下你后面可以使用的矩阵。在执行了一个估计命令以后,键入estimates list,则你可以看到哪些是可以使用的。大多数的估计命令都用e(b)表示系数向量而e(V)表示估计量的方差-协方差矩阵。可以在任何矩阵表达式中使用e(b)和e(V)六、 通过累积数据来生成矩阵在编程估计的时候,具有形式和是经常出现的,其中X和Z是数据矩阵,matrix accum, matrix glsaccum和matirx vecaccum生成这样的矩阵。我们建议你不要将所有的数据导入到一个矩阵,并使用矩阵表达式来生成上述矩阵,当然如果你愿意也可以使用matrix mkmat命令,但是一定要注意在技术注释中所说的内容。最好的方式是使用matrix accum命令。七、 矩阵操作符你可以建立新的矩阵以替代旧的矩阵通过键入例如STATA提供了下面的一些运算符同时可以使用括号来改变运算顺序。特别注意,和是运算符,(1,2)会生成1*2的矩阵(向量)以及(A,B)生成rowsof(A)*colsof(A)+colsof(B)矩阵,其中rowsof(A)=rowsof(B),(12)建立一个2*1的矩阵(向量)而(AB)建立一个rowsof(A)+rowsof(B)*colsof(A)矩阵,其中,colsof(A)=colsof(B),,这样,表达具有下面的形式是被允许的。八、 矩阵函数(一) 返回矩阵值的矩阵函数(二) 返回标量值的矩阵函数九、 下标1、 在矩阵和标量表达中,你可以输入matnamer,c,其中r和c都是标量表达,来获得一个矩阵的作为标量的单一元素2、 在矩阵和标量表达中,我们可以用,其中和是字符串表达式,为了获得matname的一个单一元素作为一个标量,返回的元素是基于对于行名和列名的搜寻。3、 在矩阵和标量表达中,你可以综合使用上述两种表达形式,比如或者。例4、 在矩阵表达中,你可以使用来表示子矩阵:和是标量表达。如果被赋予缺失值,其被用来表示矩阵的最后一行,如果是缺失值,则其表示矩阵的最后一列,所以是被允许的。5、 在矩阵表达当中,我们可以使用来代表子矩阵,其中,下标和是字符串表达式。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论