有问题,不要怕!点击推文底部“
阅读原文
”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱
[email protected]
,我们会及时为您解答哟输入文字输入文字输入文字
最近爬虫君收到了好多来自粉丝的问题求助,感谢大家对爬虫俱乐部的认可,今后我们团队也会为各位提供更加优质高效的服务。话说前几天,一位粉丝给我们发来了邮件,说他的数据是矩阵形式,想要通过能够专门处理矩阵的mata来计算任意两个变量之间的
相关系数
,从而找出满足条件的变量组合。
其实呀,这种小问题根本就不需要mata来出马,只需要通过简单的
嵌套循环
就可以做出来,咱们就使用auto这个数据来给您来细细讲解。
假设我们的目的是要在price到foreign这11个变量中,两两做
相关系数
检验,输出相关系数大于0.8小于0.9的变量组合。导入auto数据,有细心的童鞋发现了foreign这一列显示的为字体颜色为蓝色的英文,这是什么原因呢?首先我们键入:
describe
接下来我们便着手开始计算
相关系数
吧,首先我们先试探性地简单计算mpg和weight之间的
相关系数
:
corr mpg weight
得到:
键入:
return list
,得到
相关系数
的返回值:
相关系数
被保存在r(rho)这个返回值中。
如果想要对指定变量进行循环,我们可以使用到foreach这个命令,对于任意一个变量可以表达为
foreach i of varlist price-foreign
。
首先我们构建一个大体的框架:
sysuse auto,clear
foreach i of varlist price-foreign{
foreach j of varlist price-foreign{
corr `i' `j'
}
}
当我们运行这段程序时,屏幕输出了全部的结果,这使得我们很难直接找到我们想要的结果。
所以我们需要在这段程序上做一些修改。首先我们想在输出窗口隐去每一个
相关系数
列表的输出结果,并将对应的变量输出。其次,在输出窗口只输出
相关系数
大于0.8小于0.9的的变量组合。
针对第一个问题,我们可以在做
相关系数
检验这条命令前加一个“qui”,表示虽然运行了但是不在屏幕中显示。
针对第二个问题,我们可以再在里面套一个if判断语句,即:
if abs(`r(rho)')>0.8 & abs(`r(rho)')<0.9 {
di "`i'-`j'"
}
即修改了之后,程序变为:
sysuse auto,clear
foreach i of varlist price-foreign{
foreach j of varlist price-foreign{
qui corr `i' `j'
if abs(`r(rho)')>0.8 & abs(`r(rho)')<0.9{
di "`i'-`j'"
}
}
}
运行了之后,结果为:
眼尖的同学或许发现了里面有重复出现变量组,如mpg-weight与weight-mpg(这两组表示的其实是同一组)。在前面我们提到了对于任意一个变量可以表达为
foreach i of varlist price-foreign
,那么在这里我们可以把另一个变量改写为
foreach j of varlist `i'-foreign
,这样就可以避免重复。
所以我们最终修改程序为:
clear
sysuse auto,clear
foreach i of varlist price-foreign{
foreach j of varlist `i'-foreign{
qui corr `i' `j'
if abs(`r(rho)')>0.8 & abs(`r(rho)')<0.9{
di "`i' -`j'"
}
}
}
这样,我们对程序的修改就算完成了,屏幕上就简单清晰地输出了我们想要的结果啦。
注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同纯属巧合!
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。
另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~