专栏名称: 爬虫俱乐部
Stata技术控,编程技术咨询,数据讨论与分享,编程和实证培训。
目录
相关文章推荐
超级数学建模  ·  不到4折!KAYANO ... ·  昨天  
超级数学建模  ·  埃里森放话“48小时AI定制癌症疫苗”:是颠 ... ·  2 天前  
超级数学建模  ·  限时领 | ... ·  昨天  
51好读  ›  专栏  ›  爬虫俱乐部

初识MATA(一)

爬虫俱乐部  · 公众号  ·  · 2017-09-27 16:01

正文

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

诸君安!在往期推文 《如何在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 15







请到「今天看啥」查看全文