我在Stata中有一个面板数据集,其中包含行业和年份维度以及varlist1
中汇总的其他7个变量。对于这些变量,我想分别计算每个行业年组合的马哈拉诺比斯距离。我知道如何使用mahascore
计算整个样本的马哈拉诺比斯距离。 mahascore
是mahapick.ado
包的一部分,必须单独安装。我的初始代码是:
mahascore $varlist1, gen(dist_M) refmeans compute
以下是数据样本的结构(varlist1
的数字不真实,在我的数据集中它们只是一些数值区间变量):
firm_id year ind_id var1 var2 var3 var4 var5 var6 var 7
1 2008 1 1 2 3 4 5 6 7
1 2009 1 1 2 3 4 5 6 7
1 2010 1 1 2 3 4 5 6 7
2 2008 2 1 2 3 4 5 6 7
2 2009 2 1 2 3 4 5 6 7
2 2010 2 1 2 3 4 5 6 7
我还尝试生成参考矩阵,其中包含每年行业组合的平均值,并将它们传递给mahascore
:
global varlist1 var1 var2 var3 var4 var5 var6 var7
foreach v in $varlist1 {
egen `v'_mean = mean(`v'), by(year ind_id)
}
egen var1_mean=mean(var1), by(year ind_id)
global varlist2 var1_mean var2_mean var3_mean var4_mean var5_mean var6_mean var7_mean
mkmat $varlist2, matrix(V)
matrix list V
matrix V=V'
matrix rownames V = $varlist1
matrix list V
mahascore $varlist1, gen(dist_M) refvals(V) compute
但是refvals(V)
需要一个向量而不是一个矩阵。还有其他可能吗?我也可以想象使用另一个距离计算距平均值的距离。
我可以将样本分成几部分并将其作为新varlist使用循环传递给程序吗?