将1×CN矩阵转换为C×N矩阵的最有效方法是什么?
这是我一直面临的问题。
我一直在巴基斯坦使用微观家庭数据,并通过使用艾滋病模型和nlcom
命令估计弹性。
nlsur quaids @ w1 w2 w3 w4 w5 w6 w7 lnp1-lnp8 lnm [pw=weight], /*
*/ ifgnls nequations(7) /*
*/ param(a1 a2 a3 a4 a5 a6 a7 b1 b2 b3 b4 b5 b6 b7 g11 g12 g13 g14 g15 g16 g17 g22 g23 g24 g25 g26 g27 g33 g34 g35 g36 g37 g44 g45 g46 g47 g55 g56 g57 g66 g67 g77 l1 l2 l3 l4 l5 l6 l7) nolog
nlcom (eh11:[g11]_cons/m_w1 + m_w1 - 1)/*
..........
*/ (eh77:[g77]_cons/m_w7 + m_w7 - 1)
然后我得到了希克斯弹性,即1×49矩阵。
matrix list r(b)
我想通过在商品价格上涨时使用Hicksian弹性来估算补偿变化,所以我必须将弹性矩阵从1×49转换为7×7,但我不能通过多种方式制作这个矩阵
更新:
按照以前的建议,我得到如下结果。
matrix list Es
居[8,8]
c1 c2 c3 c4 c5 c6 c7 c8
r1 -55723312 .17792396 .07480918 .08014676 -.14777629 .06792643 .14629625 .15790682
r2 .37012189 -.53367971 -.01898065 .01182084 .10687796 -.01585994 -.07652818 .15622777
r3 .43624245 -.05320763 -.62772824 .10168586 -.2441294 .18205766 -.04611322 .25128797
r4 .1708841 .01211585 .03717947 -.36135548 .09168136 .03541119 .02722708 .12727678
r5 -.14553177 .05059771 -.04122874 .04234659 -.19625015 .1456979 .01555162 .12692767
r6 .2928915 -.0328745 .13461825 .07161317 .63792299 -1.2204229 .0387352 .21100258
r7 .20829112 -.05237797 -.01125875 .01818122 .0224833 .01279014 -.24563738 .10818032
r8 .11555958 .05496079 .03152381 -.00451132 .09572484 .01315618 .02442979 -.33084368`
然后,我想生成每个家庭的补偿变量(CV_h),如下所示, 但我无法对下面的等式进行编程,这与链接相同。(第9页式5) http://www.nber.org/papers/w8564.pdf
⊿ln(CV_h) = Σ(w'i'_h * ⊿ln(p'i'_h)) + 0.5ΣΣ(w'i'_h * Es'i''j' * ⊿ln(p'i'_h) * ⊿ln(p'j'_h))
除了按照你的建议格式化的Es'i''j'之外的变量已经给出。
答案 0 :(得分:1)
一种方法是使用Mata:
clear
set more off
// example matrix
matrix E = 1,2,3,4,5,6,7,8,9
matrix list E
// change shape
mata:
Em = st_matrix("E") // take matrix to Mata
Em = colshape(Em,3) // change shape
st_matrix("Es", Em) // take result to Stata
end
// list in Stata
matrix list Es
请参阅help mata
,help mata colshape
和help [M-4] manipulation
。