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

下载本文档

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

文档简介

1、.第二章 编程与矩阵基础一、程序(一)标准的程序文件格式我们已经多次强烈建议大家尽量用程序来完成自己的工作。在写程序时,有一些经验写法,遵循这些写法将会提高工作效率。*=begin=clear /相当于让STATA处于初始状态,清除所有使用过的痕迹cd d:/stata9 /设定路径,将数据、程序和输出结果文件均存入该文件夹capture log close /如某输出结果文件已打开,关闭之,若不存在则忽略log using myfile, replace /将运行结果存到一个输出文件myfile中set more off /在程序执行过程中,不要因为结果窗口屏幕已满而停下来*下面开始写完成特

2、定任务的命令,如sysuse auto, clear sutab foreilog close /关闭结果输出文件,在前面设定的文件目录中可以找到。*=end=Log命令记录所有已执行命令或执行结果, 结果文件的存贮类型有两种,一种后缀名为*.smcl,一种为*.txt,如果不指明为txt,默认为*.smcl。后面的replace选项用于覆盖原来的同名结果文件。(二)创造自己的命令:与STATA互致问候在写程序的过程中,如果遇到要反复调用同一段代码时,明智的选择是将这段代码写成子程序,然后直接调用子程序即可。试一试,在命令窗口输入“hello”,会出现什么结果?hellounrecognize

3、d command红字告诉你,STATA无法认识这个命令。我们可以自己创造一个叫hello的命令,当你运行这个命令的时候,STATA就会向你问好“你好,老兄!”,下面是程序。在程序编辑器内键入以下内容并执行之 *=begin=capture program drop helloprogram hellodi “你好,老兄” /请注意引号一定要在英文半角状态下输入endhello*=end=* 然后在命令窗口键入hello* STATA将在结果窗口显示出*你好,老兄*我们来做做其他工作,然后再次调用该命令hello,看灵还是不灵。l make price in 1/5hello这个命令居然像de

4、scrib或者list一样!是的,这是一个名为hello的命令,一旦该程序被读入内存(即被执行一次),只要你不退出stata或者删除该程序(program drop hello),他就随时待命,你可以像用其他命令一样来使用它。那么如果我们退出stata后还想执行这个程序,怎么办呢?你可以把两条红线之间的这个文件存起来,最好是存在STATA的默认路径下,文件名为hello.do(注意后缀为.do),退出STATA并重启,在命令窗口输入命令do hello则输出结果:“你好,老兄”这就是最简单的程序文件,如果你想每次打开STATA后都先向STATA打个招呼,我们可以将这个程序写好后存入stata/

5、ado/h下面,文件名为hello.ado(注意后缀为.ado)。则每次开机后就可以直接输入:helloSTATA也将回应你:“你好,老兄”问题是这个hello命令只会说“你好,老兄”,能不能我让它说啥就说啥?*/*=begin=capture prog drop helloprog hellodi as error “1” /*请注意左单引号位于标准健盘左上角, 右单引号在回车健旁*/end*=end=*这时,我们想让他说什么就在hello后面说什么。hello 吃了吗?hello 吃了,你呢?(三)暂元暂元是程序中的临时变量,分为暂元名和暂元内容两部分,类似于变量名和变量值。*=begin

6、=sysuse auto, clearl price length weight in 1/5local v3 “price length weight” /将price length weight这组字符赋给暂元名v3l v3 in 1/5 /*等价于l price length weight in 1/5。注意v3中,左边不是单引号,而是标准键盘上第二排最左边的哪个撇号。*/local cmd “list” /将list这组字符赋给暂元名cmdcmd v3 in 1/5 /等价于list price length weight in 1/5local pre “pri” /将pri这组字符

7、赋给暂元名prelocal suf “ce” /将ce这组字符赋给暂元名sufcmd presuf /等价于list pricetab rep=26*3 /等价于tab rep78, 注意到26*3=78*=end=(四)标量scalar a=2 /赋予标量a的值为2dis a+2 /a+2=2+2=4scalar b=a+3 /b=a+3=2+3=5sysuse auto, clearsum pricereturn list /计算结果同时被存入到标量中local sum=r(sum) /将总和存入一个叫sum的暂元中di sum二、循环语句(一)FORVALUES程序示例:*=begin=

8、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命令生一个标量sforvalue i=1/100 scalar s=s+i /该标量s不断被替换,每一次都被加一次scalar list s*=end=(二)FOREACH例(按项循环):逐行显示粮食(rice wheat flax maiz

9、e)和货币(Dollar Lira Pound RMB)*=begin=local grains “rice wheat flax maize”foreach x of local grains di “x” *=end=例(按数值循环):逐行显示1 2 3 4 8 105foreach num of numlist 1/4 8 105 di num'*=end=这一用法与forvalues较相似,但不要求数据完全是等步长连续,这在很多情形下会十分方便,比如在我们合并练习2中的数据文件时。(三)嵌套循环例:生成5个变量,10个观察值,使得第i个变量的第j个观察值等于i+j*=begin

10、=clearset obs 10forvalues 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, clearg p=pri

11、ce-100 if forein=0replace p=price+100 if foreign=1l p forei(二)循环语句套条件语句例:求6-500之间能同时被2,3,5整除的数 *=begin=forvalues x=6/200 if mod(x,2)=0 & mod(x,3)=0 & mod(x,5)=0 /mod()为同余函数 di “the ALL common multiple of 2,3 ,and 5 is x “ *=end=例:求6-500之间能同时被2,3,5整除的最小的数*=begin=forvalues x=6/500 if mod(x,2)=

12、0 & mod(x,3)=0 & mod(x,5)=0 di “the LEAST common multiple of 2,3 ,and 5 is x “ continue, break /当找到最小公倍数时退出循环 *=end=四、矩阵:工资案例STATA9.0及以上版本的矩阵组件有了根本的革新,出现了专门处理矩阵的新组件MATA,该组建具有强大的数据处理和分析功能。clearmata /进入Mata,进入后注意到提示符由一点变为两点end /退出Mata假设某公司员工的薪酬制度是,基本工资(每个人均可以获得的最低工资)为1000元,而每多受一年教育edu,能增加100元的

13、工资;每多一年工作经历,工资增加150元,若为男性,则工资增加50元。上述制度可以用一个列向量来表示b=(100010015050) /生成向量bb /查看向量b有一个员工张三的基本情况是受过5年教育,有3年工作经历,男性,则其工资为多少?先定义该员工的情况为一个列向量 x1=(531) /生成向量x由于还有一个基本工资,因此x=1x1 /将两个向量合并为一个新向量该员工的工资为w:w=xb /向量和积,称为内积W在上述计算中,先将x转置,再与向量b相乘。员工李四的基本情况为受教育10年,工作2年,女性,则x2=(11020)X=(xx2) /将两个向量合并为一个矩阵X /显示矩阵X*b /矩

14、阵与向量相乘更多人的情形X=(1,5,3,11,10,2,01,3,6,01,8,6,1)W=X*bsum(W) /求总工资支出mean(W) /求平均工资水平variance(W)*(rows(W)-1) /方差乘以(n-1),即得到离差平方和end五、生成或获取向量与矩阵(一)生成向量与矩阵clearmatax=(12) /定义列向量xx /显示列向量xA=(1,0,12,1,0-3,2,-5) /录入矩阵AA /显示录入的矩阵AB=J(5,3,0) /生成一个5行3列的矩阵B,矩阵中的元素均为0BI=I(6) /生成一个6阶单位阵Id=(1,4,9)D=diag(d) /以d中元素为对角

15、元素生成对角矩阵Dend(二)矩阵与数据的相互转化clearmatamata stata sysuse auto,clear /在mata界面中调用STATA命令st_view(W=., (1,5), (“mpg”, “weight”) /将当前数据导入到MATA矩阵W中end(三)增加或截取矩阵clearmataA= (1,0,12,1,0-3,2,-5)B=(437)C=(A,B)CE= (AB) end(四)返回或修正矩阵中的元素clearmatad=(1,-1,1,-2,22,100,-1,4,43,2,1,0,-1-1,2,-1,2,-4)ddd=d2,2 /返回矩阵中某个元素的值d

16、dd1,3=1000 /修改矩阵中某个元素的值dend六、矩阵运算及函数(一)行列求和clearmatax=(345)mean(x) /求列均值variance(x) /求列方差correlation(x) /求相关系数colsum(x) /求列总和rowsum(x) /求行总和sum(x) /求总总和rows(x) /行数cols(x) /列数end(二)矩阵四则运算help operator /查看运算帮助clearmata2 + 2 /计算2+2x = 2 + 2 /为x赋值,不显示,x=4x /显示x的值X = 2 + 3 /注意到大小写不同,大小写被视为不同的变量,X=5e=(3,5

17、2,0)t=(1,32,1)e+t /加e-t /减2*e /数乘(每个元素均乘标量)e/10 /除法(每个元素均除以一个标量)e*t /乘 e:*t /两上同型矩阵相对应元素直接相乘,注意与e*t的结果比较S=sqrt(e) /对其中每一个元素取平方x=(11.3941.649-1-1.394-1.649)x,trunc(x), round(x,0.01) /取整end(三)行列式、转置、求迹clearmataA= (76, 53, 48 53, 88, 46 48, 46, 63)A /转置矩阵det(A) /行列式trace(A) /迹是A的主对角线上的元素之和rank(A) /求秩B=

18、invsym(A) /B为A的逆矩阵Z=B*A /由于计算误差存在,有些元素不恰好为零,近似为零end七、特征值与特征向量特征值和特征向量的定义,若Ax=x,则称之为特征值,x称之为特征向量。若AX=X*diag(L),X为特征矩阵,L为由特征值组成的对角阵。例:clearmataA=(5,12,4)eigensystem(A,X=.,L=.) /X为特征向量组成的矩阵,L为特征值XLend附:矩阵的重要定理及应用(1)实对称阵总有实特征值,总能分解为, 其中非奇异正交阵 (2) A的行列式等于其特征值的连乘积(3) A的迹等于所有特征值的和(4) A的秩等于非零特征值的个数(5) 当所有特征值均为正(负)时,A为正(负)定短阵;当所有特征值为非负时,A为半正定矩阵。(6) 若A的特征值为,则-1的特征值为1/如果一个实对称阵还是幂等的,则除了上述性质外,还具有下列三个特殊的性质。幂等对称阵的三个性质 X为任意向量,则为实对称阵,因此满足实对称阵的上述7个性质clearm

温馨提示

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

评论

0/150

提交评论