初识MATA(一)

2017-09-27 高金凤 爬虫俱乐部 爬虫俱乐部

有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

诸君安!在往期推文《如何在Mata环境中求解高阶方程的最优解》中,我们介绍了在Mata环境中求解最优解的几个函数。众多读者反映对Mata语言不是很了解,所以在今后的推文中我们会介绍Mata语言在Stata中的更多应用哟~ 

Mata是在 Stata9.0 版本以后新增的执行矩阵计算的矩阵编程语言,其程序语言可以写于ado文件中,也可以在常规的do.file文件里调用Mata程序。今天我们先介绍Stata中Mata的进入、退出以及数值与字符的输入和运算。

一、Mata状态的操作方式

我 们熟悉的Stata界面有状态栏、菜单栏、工具栏等,一般而言,Stata的命令式操作可以通过点菜单的方式来完成,而Mata状态下所有的操作都只能通 过命令形式发出(在Command栏输入命令或者编写程序),不能通过这种点击鼠标的操作完成。正如下图1所示,在Stata的矩阵选项([Matrices,ado language]按钮)右边有个三角符号,点击这个三角符号之后我们可以按说明对Stata矩阵进行数据输入、输出、修改和删除等一系列的操作,但在Mata这一栏是没有黑三角的。事实上,若读者点击[Matrices,Mata language]这一按钮,系统会自动弹出自带的Mata使用手册,其中介绍到的内容都是Mata的命令式操作。

图1

二、Mata的进入与退出

与 其它矩阵编程语言一样,用户可以在一个交互环境中很方便地使用Mata。在Stata命令窗口或是do-file 中,输入“mata”并回车后即可进入Mata状态,在结束运算后输入“end”即可退回到Stata状态。需要注意的是,在Stata命令窗口,只输入 “mata”,然后进行一些操作后,再输入“end”,stata是不会报错的,而在do-file中,必须同时运行“mata”和“end”才不会报 错。

三、Mata状态下数值和字符的输入及其简单运算

在Mata环境中可输入的数据类型有字符数值,数字类型包括实数复数。与Stata一样,Mata环境中常见的运算符如下表所示:

图2

举例如下:

mata   //进入mata环境

a=6+6    //数值间的代数运算

b=3*2

c=a+b

c   //数值的输出

d=(a>b)   //实数间的关系运算,如果为真,结果为1,否则反之

d

e=(c!=10)   //实数间的逻辑运算,如果为真,结果为1,否则反之

e

f="爬虫俱乐部"    //输入字符串

g="number one!"

h="技术6666"

i=f+g+h   //"+"实现了字符串的合并

i

j=5+3i   //输入复数

k=-2-1i

m=j+k  //复数之间的代数运算

m

n=(k>m)  //复数之间的关系运算,如果为真,结果为1,否则反之

n

end   //退出mata环境

结果如下图3-图5:

图3

图4

图5

可以看到,我们可以在Mata环境中可以输入一些数值,并直接进行计算;也可以输入一些字符串及其运算。

注意:

1、输入复数时,如果虚数前面的系数是1,不能省略,否则会报错:

2、在输入或运算时,不定义变量名称,也可实现运算:

3、在Mata环境中,如果有不需要执行的命令,前面不可以加“*”,因为在mata中不将“*”识别为不执行命令语句的符号,并且“*”也不符合变量名的定义规则,所以会报错。

这时候,我们只需要在不执行的命令语句前面加上“//”即可。

当然,我们退出Mata然后进入Stata后,新生成一些变量,如果这些变量的名称与Mata中的变量名一致时,Stata 也不会报错。

举例如下:

clear

set obs 20   

gen a=_n

gen b=a+1

gen c=b+1

gen  d="爬虫俱乐部"

gen  e=d+"技术6666"

gen  f=e+"number one!"

des

结果如下图6:


图6

由此得出Stata和Mata是相互独立的,互不影响。

如果此时要进入下一个Mata,仍然可以调用上一个Mata中生成的变量。

举例如下:

图7

可以看到,我们实现了对上一个Mata中生成变量的运用。当然,如果你想让两个Mata环境的变量互不影响,可以在进入第二个Mata环境前加上命令语句“clear all”或者在第二个Mata环境的运算开始之前,加上专门清空Mata内存的语句“mata clear”,比如上面的例子,我们首先,加上“clear all”语句,如下图8所示:

图8

发 现后面的语句因变量不存在而提醒错误。同样,当我们在进入第二个Mata环境之后加上“mata clear”后,再进行相关运算,发现与上面相同的结果。值得注意的是,在Mata环境中前面命令的错误不会影响后面命令的执行,比如上面的例子,即便前 四条命令都提醒错误,但Stata并没有因此停止工作,后面正确的语句仍然可以执行。

没看懂记得戳下方视频学习哦!


注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同纯属巧合!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                        文字编辑:徐露露

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.命令sum2docx输出统计量表到docx文件

4.reg2docx报告你的实证结果吧!

5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件

6.putdocx+wordconvert—将实证结果输出到Word.docx)文档

7.Stata 15Markdown——没有做不到,只有想不到!

8.矩阵和宏的故事

9.shelloutopen anything

10.Putpdf--神奇的转换工具



关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部





微信扫一扫
关注该公众号