专栏名称: 爬虫俱乐部
Stata技术控,编程技术咨询,数据讨论与分享,编程和实证培训。
目录
相关文章推荐
91运营网  ·  91运营网vip会员早鸟票抢座ing!! ·  20 小时前  
91运营网  ·  DeepSeek写爆款短视频文案 ·  2 天前  
运营研究社  ·  《运营总监实战手册3.0》包邮送,真香 ·  2 天前  
运营研究社  ·  2元管饱的县城地头蛇,集体打退网红店 ·  2 天前  
91运营网  ·  Deepseek爆款标题公式! ·  4 天前  
51好读  ›  专栏  ›  爬虫俱乐部

有问必答——矩阵点除

爬虫俱乐部  · 公众号  ·  · 2018-06-18 14:15

正文

暑期Stata培训班招生啦!!! 接力线上的网课培训,我们在今夏又开始新一轮的线下培训啦! 8月4日至12日 ,爬虫俱乐部期待与您的相遇!培训具体内容详见推文 《暑期Stata编程技术定制培训班》


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

喜大普奔~爬虫俱乐部的 github 主站正式上线了!我们的网站地址是: https://stata-club.github.io ,粉丝们可以通过该网站访问过去的推文哟~

好消息 :爬虫俱乐部即将推出研究助理供需平台,如果您需要招聘研究助理(Research Assistant or Research Associate),可以将您的需求通过我们的公众号发布;如果您想成为一个RA,可以将您的简历发给我们,进入我们的研究助理数据库。帮我们写优质的推文可以提升您被知名教授雇用的胜算呀!


前几天,有粉丝向我们提问矩阵点除的问题,今天悉心的小编就为大家介绍如何在Stata中实现矩阵点除,即矩阵的元素与元素之间的除法。需要注意的是该运算要求参与运算的矩阵必须是矩阵与同行同列的矩阵或者矩阵与同行向量或者矩阵与同列向量。

在Stata中实现矩阵的元素与元素之间的除法,我们首先想到的是用循环。

首先,我们生成一个矩阵A和一个行向量B,其中A矩阵是3行5列,B向量是5列,然后做点除:

matrix A=(5,1,2,3,6 \3,1,8,6,2 \1,2,3,9,8)
matrix B= (1,2,3,4,5)
matrix C1 = J(3,5,0)  //生成一个零矩阵,用于储存新生成的矩阵
forvalues i = 1/3 {
    forvalues j = 1/5 {
        matrix C1[`i',`j']= A[`i',`j']/B[1,`j']
    }
}
matrix list C1

结果如下:

可以看到,我们实现了矩阵A每一列的元素分别除以向量B所对应的元素,得到了矩阵C1。

其次,我们也可以实现矩阵与同列向量之间的点除,操作如下:

matrix D=(1\2\3)
matrix C2 = J(3,5,0)
forvalues i = 1/3 {
    forvalues j = 1/5 {
        matrix C2[`i',`j']= A[`i',`j']/D[`i',1]
    }
}
matrix list C2

结果如下:

同样可以看到,我们实现了矩阵A每一行的元素分别除以向量D所对应的元素,得到了矩阵C2。

最后,我们还可以实现同行列矩阵间的点除。操作如下:

matrix E=(1,2,3,4,5\5,4,3,2,1\4,4,3,2,1)
matrix list E
matrix C3 = J(3




    
,5,0)
forvalues i = 1/3 {
    forvalues j = 1/5 {
        matrix C3[`i',`j']= A[`i',`j']/E[`i',`j']
    }
}
matrix list C3

结果如下:

我们同样实现了矩阵A每一行每一列的元素分别除以矩阵E所对应的元素,得到了矩阵C3。

我们注意到上述操作虽然实现了矩阵点除,但是命令语句冗长繁琐。此外,在之前介绍Mata中相关操作的时候,我们就说过Stata在使用矩阵时会占用大量的内存,很多大数据不能利用传统的Stata矩阵命令进行处理,一般是在Mata中进行处理。

其实在往期推文 《矩阵在Mata中的输入和运算》 介绍冒号运算符时,我们就提到过Mata中的矩阵点除。那么,这里我们继续在Mata中使用冒号运算符实现矩阵的点除。

首先,同样生成3行5列的矩阵A和同列数的向量B进行点除:

mata
    A=(5,1,2,3,6 \3,1,8,6,2 \1,2,3,9,8)
    B= (1,2,3,4,5)
    C1 = A :/ B
    C1
end

得到结果:

接着,我们生成一个同行数的向量D,与矩阵A做点除:

mata
    D=(1\2\3)
    C2 = A :/D
    C2
end

得到结果:

最后,生成一个同行数同列数的矩阵E,与矩阵A做点除:

mata
    E= (1,2,3,4,5\5,4,3,2,1\4,4,3,2,1)
    C3 = A :/ E
    C3
end

可以发现:上述3个结果与Stata中的点除结果是一样的。不过,在Mata中的矩阵运算命令明显比在Stata中的要简单的多,大家学会了吗?

注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同,纯属巧合! 以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。 另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

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

-文字编辑:吴晓蔓-

-技术总编:刘贝贝-

往期推文推荐:

1.爬虫俱乐部新版块--和我们一起学习Python

2.hello,MySQL--Stata连接MySQL数据库

3.hello,MySQL--odbcload读取MySQL数据

4.再爬俱乐部网站,推文目录大放送!

5.用Stata生成二维码—我的心思你来扫

6. Hello,MySQL-odbc exec查询与更新







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