矩阵和宏的故事

2017-07-20 王明 爬虫俱乐部 爬虫俱乐部

诸君安!每次提到挂科,小编都瑟瑟发抖地想起“数学”两个字。数学中哪一门最难?那非线性代数莫属,线性代数最强的武器是什么,没错,就是矩阵!宏之大,无奇不有,每次用宏都让小编有欲罢不能的感觉。宏和矩阵结合又会发生什么化学反应呢?

一、rownumb和colnumb

在stata15中出现了两个特别好用的宏拓展函数:rownumbcolnumb。它们的作用分别是返回字符串所在矩阵的行数和列数。它们的具体用法如下:

注:(其中lname是你定义后面需要调取的宏名称,matrixname是你前面定义的矩阵名称,string是行和列出现的字符串)

话不多说,这就上例子。我们先使用系统自带的auto数据,用reg这个命令将price length weight displacement这五个变量进行回归,在stata中键入以下命令:

sysuse auto,clear

reg price length weight displacement, r

执行结果如下:

接着我们用rutrun list列出返回值。看到r(table)是一个9行四列的矩阵,我们把这个矩阵命名为X,并把矩阵X展示出来,具体操作如下:

return list

matrix X = r(table)

matlist X

矩阵出来了,赶紧请出我们的一号主角rownumbcolnumb。键入如下命令:

local a : rownumb X df

dis `a'

local b : colnumb X weight

dis `b'

执行结果如下:

我们可以从上图中清晰看出字符weight在X矩阵的第2列,字符df在X矩阵的第六行。这个命令让我们可以再一个复杂矩阵中找出字符S所在的行数和列数,让我们摆脱一个一个数的笨办法,有木有很实用的赶脚!

二、rowsof和colnlfs

在最新的stata15当中,rowsofcolnlfs同样是宏拓展函数的新宠儿,它们的作用分别是让我们知道一个复杂矩阵的总行数和总列数。来,让我们看看它们的具体用法:

有请二号主角rowsofcolnlfs闪亮登场。我们根据它们的用法键入以下命令:

local c : rowsof X

dis `c'

local d : colsof X

dis `d'

执行结果如下:

从上述执行结果图我们可以看出矩阵X的行数是9,列数是4。有了这个命令我们就可以简单快捷地知道矩阵的行数和列数,更可以在一个复杂程序中调用矩阵的行数和列数。

三、rowvarlist 和colvarlist

宏扩展函数无奇不有,rowvarlistcolvarlist更是其中之一,它们的作用可厉害了,rowvarlist colvarlist可以把矩阵的所有行列变量列表提取出来,小编这就给你带来它的神奇用法:

千呼万唤始出来,请出我们的压轴主角rowvarlist colvarlist,我们根据它们的用法键入以下命令:

local t : rowvarlist X

dis "`t'"

local h : colvarlist X

dis "`h'"

执行结果如下:

我们从执行结果可以清楚看出宏t代表了所有的行变量名称,宏h代表了所有列变量名称,为我们后面调取行变量和列变量名列表大开方便之门,让我们的程序可以更简洁,更方便。

小编立马想到了以往的命令rowfullnames和colfullnames,它们的意思是显示行和列的完整名称,在上面这个例子上,和rowfullnames,colfullnames效果是一样的,运行结果如下:

local t : rowfullnames X

dis "`t'"

local h : colfullnames X

dis "`h'"

那么问题来了,stata15新推出的colvarlist和老版的colfullnames有什么区别呢?英俊与智慧并存的小编给大家带来一个probit回归的例子一探其中奥秘。

首先键入以下命令:

sysuse auto,clear

probit foreign price mpg weight length

return list

matrix X = r(table)

matlist X

local h : colvarlist X

dis "`h'"

local h : colfullnames X

dis "`h'"

执行结果如下:

从图中我们可以看出colfullnames列出了矩阵所有列的完整名称,而colvarlist列出了所有列变量的名称。

这也仅仅是Stata15众多新功能之一,后续我们会陆续介绍更多在Stata15中好玩好用的命令,好期待呐!Stata15真是好用的不得了,亲爱的读者朋友们,你有没有心动呢?

如需新版本采购及老版本升级服务,请联系Stata软件在中国大陆的指定经销商友万科技(www.uone-tech.cn),联系人徐青青:Tel/WeChat 18610597626,感谢您的支持与关注!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

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



                     文字编辑:徐露露

技术总编:刘贝贝



往期推文推荐:

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

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

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

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

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

投稿邮箱:statatraining@163.com

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

欢迎关注爬虫俱乐部 




微信扫一扫
关注该公众号