计量经济学课件教案第二章_编程与矩阵基础.doc_第1页
计量经济学课件教案第二章_编程与矩阵基础.doc_第2页
计量经济学课件教案第二章_编程与矩阵基础.doc_第3页
计量经济学课件教案第二章_编程与矩阵基础.doc_第4页
计量经济学课件教案第二章_编程与矩阵基础.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

第二章 编程与矩阵基础 一、程序 (一)标准的程序文件格式 我们已经多次强烈建议大家尽量用程序来完成自己的工作。在写程序时, 有一些经验写法,遵循这些写法将会提高工作效率。 *=begin= clear /相当于让 STATA 处于初始状态,清除所有使用过的痕迹 cd d:/stata9 /设定路径,将数据、程序和输出结果文件均存入该文件夹 capture log close /如某输出结果文件已打开,关闭之,若不存在则忽略 log using myfile, replace /将运行结果存到一个输出文件 myfile 中 set more off /在程序执行过程中,不要因为结果窗口屏幕已满而停下来 *下面开始写完成特定任务的命令,如 sysuse auto, clear su tab forei log close /关闭结果输出文件,在前面设定的文件目录中可以找到。 *=end= Log 命令记录所有已执行命令或执行结果, 结果文件的存贮类型有两种,一 种后缀名为*.smcl,一种为*.txt,如果不指明为 txt,默认为*.smcl。后面的 replace 选项用于覆盖原来的同名结果文件。 (二)创造自己的命令:与 STATA 互致问候 在写程序的过程中,如果遇到要反复调用同一段代码时,明智的选择是将 这段代码写成子程序,然后直接调用子程序即可。 试一试,在命令窗口输入“hello”,会出现什么结果? hello unrecognized command 红字告诉你,STATA 无法认识这个命令。 我们可以自己创造一个叫 hello 的命令,当你运行这个命令的时候,STATA 就会向你问好“你好,老兄!”,下面是程序。 在程序编辑器内键入以下内容并执行之 *=begin= capture program drop hello program hello di “你好,老兄” /请注意引号一定要在英文半角状态下输入 end hello *=end= * 然后在命令窗口键入 hello * STATA 将在结果窗口显示出 *你好,老兄 *我们来做做其他工作,然后再次调用该命令 hello,看灵还是不灵。 l make price in 1/5 hello 这个命令居然像 describ 或者 list 一样!是的,这是一个名为 hello 的命令, 一旦该程序被读入内存(即被执行一次),只要你不退出 stata 或者删除该程序 (program drop hello),他就随时待命,你可以像用其他命令一样来使用它。 那么如果我们退出 stata 后还想执行这个程序,怎么办呢?你可以把两条红 线之间的这个文件存起来,最好是存在 STATA 的默认路径下,文件名为 hello.do(注意后缀为.do),退出 STATA 并重启,在命令窗口输入命令 do hello 则输出结果: “你好,老兄” 这就是最简单的程序文件,如果你想每次打开 STATA 后都先向 STATA 打 个招呼,我们可以将这个程序写好后存入 stata/ado/h 下面,文件名为 hello.ado(注意后缀为.ado)。则每次开机后就可以直接输入: hello STATA 也将回应你: “你好,老兄” 问题是这个 hello 命令只会说“你好,老兄”,能不能我让它说啥就说啥? */ *=begin= capture prog drop hello prog hello di as error “1” /*请注意左单引号位于标准健盘左上角, 右单引号在回车健旁*/ end *=end= *这时,我们想让他说什么就在 hello 后面说什么。 hello 吃了吗?吃了吗? hello 吃了,你呢?吃了,你呢? (三)暂元 暂元是程序中的临时变量,分为暂元名和暂元内容两部分,类似于变量名和变 量值。 *=begin= sysuse auto, clear l price length weight in 1/5 local v3 “price length weight” /将 price length weight 这组字符赋给暂元 名 v3 l v3 in 1/5 /*等价于 l price length weight in 1/5。注意v3中,左 边不是单引号,而是标准键盘上第二排最左边的哪 个撇号。*/ local cmd “list” /将 list 这组字符赋给暂元名 cmd cmd v3 in 1/5 /等价于 list price length weight in 1/5 local pre “pri” /将 pri 这组字符赋给暂元名 pre local suf “ce” /将 ce 这组字符赋给暂元名 suf cmd presuf /等价于 list price tab rep=26*3 /等价于 tab rep78, 注意到 26*3=78 *=end= (四)标量 scalar a=2 /赋予标量 a 的值为 2 dis a+2 /a+2=2+2=4 scalar b=a+3 /b=a+3=2+3=5 sysuse auto, clear sum price return list /计算结果同时被存入到标量中 local sum=r(sum) /将总和存入一个叫 sum 的暂元中 di sum 二、循环语句 (一)FORVALUES 程序示例: *=begin= forvalues i=1/5 display i /和上一个命令完全等价,只是写法更简洁 *=end= 程序示例: *=begin= forvalues i=4 (-0.2) 0 /起始值可大于终值,但步长应为负,步长可为小 数 display i *=end= 例:用循环语句编写程序,计算 1+2+3+100 程序示例: *=begin= scalar s=0 /scalar 命令生一个标量 s forvalue i=1/100 scalar s=s+i /该标量 s 不断被替换,每一次都被加一次 scalar list s *=end= (二)FOREACH 例(按项循环):逐行显示粮食(rice wheat flax maize)和货币(Dollar Lira Pound RMB) *=begin= local grains “rice wheat flax maize” foreach x of local grains di “x” *=end= 例(按数值循环):逐行显示 1 2 3 4 8 105 foreach num of numlist 1/4 8 105 di num *=end= 这一用法与 forvalues 较相似,但不要求数据完全是等步长连续,这在很多 情形下会十分方便,比如在我们合并练习 2 中的数据文件时。 (三)嵌套循环 例:生成 5 个变量,10 个观察值,使得第 i 个变量的第 j 个观察值等于 i+j *=begin= clear set obs 10 forvalues i=1/5 /i 的初始赋值为 1,依次执行 2,3,4,5 然后退 出 g vi=. /将生成一个新变量 v1,完成 v1 的赋值后将生成 v2, forvalues j=2(2)8 / j 的初值为 2,然后为 4,6,8,然后退出内层循 环 replace vi=i+j in j /在第 2 行替换 v1=1+2=3, l /对照输出结果理解循环是如何执行的 *=end= 三、条件语句 IF (一)简单的条件语句 如果是国产车,则价格降 100 元,如果是进口车,则价格提升 200 元。 sysuse auto, clear g p=price-100 if forein=0 replace p=price+100 if foreign=1 l p forei (二)循环语句套条件语句 例:求 6-500 之间能同时被 2,3,5 整除的数 *=begin= forvalues x=6/200 if mod(x,2)=0 );) .若的特征值为则的特征值为 1 11 22 111 222 00(. . . 7. 8. 9, 10, 11.( )( ) 12 13 i r AAp s d AA AA BABB AI rank Atr Ar 半正定实对称阵除具有上述性质外, 还有实算术平方根阵 ) 定义的平方根阵为 平方根阵的逆矩阵为 存在矩阵使得 实幂等对称阵除具有上述性质外, 还具有如下性质: .其特征值只能是1或0 .单位阵为唯一的满秩幂等对称阵 1 .()PX X XXMIP为幂等对称阵;也为幂等对称阵 (1)实对称阵总有实特征值,总能分解为, 其中非奇异正交阵 A (2) A 的行列式等于其特征值的连乘积 1 12 ,(,) ()0 0 0 k iiijjj jijiiijiiij ijijjjijjiijijij ijij ijij A AA A AAA AA if if 其中 总可以找到两个线性无关的正规化向量满足 1 | | | | | | | | | | | n i i ABAB A (3) A 的迹等于所有特征值的和 (4) A 的秩等于非零特征值的个数 ()() ()()() rank ABrank BifA rank Arankrank 奇奇奇奇 (5)当所有特征值均为正(负)时,A 为正(负)定短阵;当所有特征值为非负 时,A 为半正定矩阵。 00(. . . 00(. . 00(. . iiiiiiiii iiiiiiiii iiiiiiiii AAAp s d AAAp d AAAnd ) ) ) (6)若 A 的特征值为 ,则-1的特征值为 1/ 1111 2222 AAAA A奇奇奇 如果一个实对称阵还是幂等的,则除了上述性质外,还具有下列三个特殊的 性质。 幂幂等等对对称称阵阵的的三三个个性性质质 1 1 22 2 () : ( )( ) : () 0,1 r iiiiiiiii iiiiiiiiiiii iii PX X XXMIP rank Atr Ar AI AA AAAA AAA 为幂等对称阵;也为幂等对称阵 幂等对称阵的性质 单位阵为唯一的满秩幂等对称阵 其中 证明 X 为任意向量,则为实对称阵,因此满足实对称阵的上述 7 个性质X X clear mata 1 ()() ( )()()( ) n i i tr ABtr BA tr Atrtrtr A=(2,2,-82,5,-4-8,-4,38) /A 为对称正定阵 eigensystem(A,X=.,L=.) L /A 的特征值 L1,1*L1,2*L1,

温馨提示

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

评论

0/150

提交评论