为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

STATA中对矩阵的处理方法

2017-12-20 15页 doc 323KB 207阅读

用户头像

is_358746

暂无简介

举报
STATA中对矩阵的处理方法STATA中对矩阵的处理方法 Stata中对矩阵的处理方法 一、概述 在STATA中,我们可以交互式的对矩阵进行操作。在STATA的程序编制中,矩阵也是非常重要的一个内容。 (一) 矩阵的定义 在STATA中矩阵的定义在某些方面和细节上是超过了数学的定义的。对于STATA而言,一个矩阵是一个被赋予了名字的一个单位,其包含r*c个元素(0
STATA中对矩阵的处理方法
STATA中对矩阵的处理 Stata中对矩阵的处理方法 一、概述 在STATA中,我们可以交互式的对矩阵进行操作。在STATA的程序编制中,矩阵也是非常重要的一个内容。 (一) 矩阵的定义 在STATA中矩阵的定义在某些方面和细节上是超过了数学的定义的。对于STATA而言,一个矩阵是一个被赋予了名字的一个单位,其包含r*c个元素(0
达,但是他们还没有意识到的是,对应于每一个矩阵运算的数学定义,对于矩阵的名称也会有一个效果,其可以简化矩阵运算的复杂性。 (一) 行名与列名使用的目的 在大多数的情况下,矩阵是在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),(1\2)建立一个2*1的矩 阵(向量)而(A\B)建立一个rowsof(A)+rowsof(B)*colsof(A)矩阵,其中, colsof(A)=colsof(B),,这样,表达具有下面的形式是被允许的。 八、矩阵函数 (一) 返回矩阵值的矩阵函数 (二) 返回标量值的矩阵函数 九、下标 1、 在矩阵和标量表达中,你可以输入matname[r,c],其中r和c都是标量表达,来获 得一个矩阵的作为标量的单一元素 2、 在矩阵和标量表达中,我们可以用,其中和是字符串 表达式,为了获得matname的一个单一元素作为一个标量,返回的元素是基于对于 行名和列名的搜寻。 3、 在矩阵和标量表达中,你可以综合使用上述两种表达形式,比如 或者。例 4、 在矩阵表达中,你可以使用来表示子矩阵: 和是标量表达。如果被赋予缺失值,其被用来表示矩阵的最后一 行,如果是缺失值,则其表示矩阵的最后一列,所以 是被允许的。 5、 在矩阵表达当中,我们可以使用来代表子矩 阵,其中,下标和是字符串表达式。矩阵的返回值是基于对行 名和列名的。 如果字符串只有一个方程名,所有的这个方程的列都被和行都被返回 6、 在矩阵表达中,任何上述的语法可以被联合 7、 当定义一个矩阵的元素时,使用 其中i 和j是标量表达式,矩阵matname必须是已经存在的。 8、 为了替换矩阵中的一个子矩阵,使用相同的语法。如果右边的表达式是一个标量或 者是1*1矩阵,元素被替换。如果是赋值一个矩阵,则替换左上角的矩阵。而矩阵 matname必须已经存在。
/
本文档为【STATA中对矩阵的处理方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索