全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2350 5
2019-07-20
问题背景:在因子分析的估计结果(参见图01)中, 第二列是各个因子的特征值(Eigenvalue),这一列的数值被保存在e级返回值矩阵中 e(Ev) :  1 x 12

问题目标:想利用局部暂元local和forvalues循环语句将所有因子的特征值加总求和

问题关键:如何在定义局部暂元时以及循环语句中引用 e(Ev)  中的元素

补充说明:我知道返回值中有 e(evsum),只是想自己编程计算一下。

命令如下:
. use https://stats.idre.ucla.edu/stat/stata/output/m255, clear

.   factor item13-item24, ipf factor(3)
    //ipf: iterated principal factor 采用迭代的主因子分析法
    //factor(3): 要保留的因子的最大个数


*图01:因子分析结果
因子分析结果.png

. matrix list  e(Ev)  //显示特征值向量
*图02:特征值向量
特征值向量.png


* 目标:利用e(Ev) 进行特征值加总求和
* 以下命令不成功,主要原因是自己不知如何引用e(Ev)中的元素
* 标红之处就是错误的引用,也是向各位老师和坛友求助之处

. local SEV _b[Factor1:Eignvalue]
. forvalues i = 2/12 {
     local SEV `SEV' + _b[Factor`i':Eignvalue]
  }
. scalar define Ev_sum = `SEV'
. dis "sum(Ev) = " Ev_sum

解决方法01:参见三楼(藤椅)坛友 @heric221 利用mata语言的方案;


解决方法02:参见四楼(板凳)我查阅 factor.ado 文件中的代码所模仿的方案;




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-7-20 00:16:25
希望坛友们能够不吝赐教!
在这里先谢谢大家!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-7-20 08:53:46
复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-7-20 21:14:25
通过查阅 "factor.ado" 文件的内容,还可以直接指定矩阵中的元素 X[i, j]方式来引用特征值向量e(Ev)中的元素,
完整的命令如下:
复制代码

   显示结果与Stata的计算结果 evsum 的取值相同sum(eigenvalue) = 7.019784

  可以发现,坛友 @heric221 的mata方案更为简捷。
  

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-7-21 08:15:30
hiderm 发表于 2019-7-20 21:14
通过查阅 "factor.ado" 文件的内容,还可以直接指定矩阵中的元素 X方式来引用特征值向量e(Ev)中的元素,
完 ...
你这思路更有一般性
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-7-21 09:30:42
heric221 发表于 2019-7-21 08:15
你这思路更有一般性
呵呵,我是相当于翻标准答案抄的高仿版。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群