Hi guys,

I have a database in quarterly form containing quantities (stdunits), price and recalls status of a product whose id is idproduct:

Code:
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(idproduct quarter) double stdunits float price str33 atc4 float recalls
201 216  174300 2.1964164 "A11A1" 0
201 217  451080 2.2246852 "A11A1" 0
201 218  285600  2.450323 "A11A1" 0
201 219  284340  2.382636 "A11A1" 0
201 220  307860  2.447608 "A11A1" 0
201 221  334320  2.672332 "A11A1" 0
201 222  475020 2.7033916 "A11A1" 0
201 223  452760 2.6765375 "A11A1" 0
260 197  916800 .28061396 "A11A1" 0
260 198 2044800 .29431167 "A11A1" 0
260 199 2313600  .2754174 "A11A1" 0
260 200 1993200 .27755743 "A11A1" 0
260 201 1194000 .28332245 "A11A1" 0
260 202 1599600  .2791442 "A11A1" 0
260 203 1368000 .27613425 "A11A1" 0
260 204 1323600 .27033246 "A11A1" 0
260 205 1236000 .27094033 "A11A1" 0
260 206 1190400 .27203014 "A11A1" 0
260 207 1033200 .27012616 "A11A1" 0
260 208 1125600  .2658686 "A11A1" 0
260 209  943200   .252326 "A11A1" 0
260 210  903600 .24691777 "A11A1" 0
260 211  770400 .25007698 "A11A1" 0
260 212  914400  .2402639 "A11A1" 0
260 213  812400 .25345165 "A11A1" 0
260 214  813600  .2501289 "A11A1" 0
260 215  736800 .23505853 "A11A1" 0
260 216  516000 .23366822 "A11A1" 0
260 217  232800  .2281709 "A11A1" 0
260 218  423600  .2368929 "A11A1" 0
260 219  476400  .2225063 "A11A1" 0
260 220  330000 .22424436 "A11A1" 0
260 221  308400 .22906102 "A11A1" 0
260 222  208800  .2355502 "A11A1" 0
260 223   30000  .2216218 "A11A1" 0
262 196  344640   .804536 "A11A1" 0
262 197 4250400   .721491 "A11A1" 0
262 198 1444800  .6426724 "A11A1" 0
262 199  900480  .6522723 "A11A1" 0
262 200  660480  .6813239 "A11A1" 0
262 201  238080   .772738 "A11A1" 0
262 202  118080  .7668843 "A11A1" 0
262 203   21120  .8730164 "A11A1" 0
264 176 2647980 .19712014 "A11A1" 0
264 177 2199870   .204385 "A11A1" 0
264 178 2317680 .19413882 "A11A1" 0
264 179 1916100 .17797776 "A11A1" 0
264 180 1808550 .17485006 "A11A1" 0
264 181 1683900  .1725303 "A11A1" 0
264 182 1722780  .1724692 "A11A1" 0
264 183 1790010 .15955125 "A11A1" 0
264 184 1828350  .1580459 "A11A1" 0
264 185 1678050  .1522747 "A11A1" 0
264 186 1589400  .1528636 "A11A1" 0
264 187 1528920  .1497916 "A11A1" 0
264 188 1697400 .15005007 "A11A1" 0
264 189 1523430 .14358002 "A11A1" 0
264 190 1638000 .13797528 "A11A1" 0
264 191 1427580  .1390256 "A11A1" 0
264 192 1557630  .1336188 "A11A1" 0
264 193 1578600 .12870497 "A11A1" 0
264 194 1682280 .12747423 "A11A1" 0
264 195   93420 .13353658 "A11A1" 0
264 196    2700  .2186262 "A11A1" 0
264 197      90 .11101135 "A11A1" 0
264 198    2520  .1048232 "A11A1" 0
264 199     270 .10111975 "A11A1" 0
265 176 1381500 .26520652 "A11A1" 0
265 177 1766880 .27631393 "A11A1" 0
265 178 1565640 .26443782 "A11A1" 0
265 179 1423350  .2506607 "A11A1" 0
265 180 1399140 .25308436 "A11A1" 0
265 181 1260720  .2490079 "A11A1" 0
265 182 1199250 .25277126 "A11A1" 0
265 183 1124640  .2348305 "A11A1" 0
265 184  981630 .23415777 "A11A1" 0
265 185  893610  .2343847 "A11A1" 0
265 186  787590  .2215974 "A11A1" 0
265 187  733140  .2230178 "A11A1" 0
265 188  763470 .22647485 "A11A1" 0
265 189  739080   .213277 "A11A1" 0
265 190  673290  .2160663 "A11A1" 0
265 191  600210  .2170518 "A11A1" 0
265 192  582840 .21356922 "A11A1" 0
265 193  547470 .21118917 "A11A1" 0
265 194  561870  .2110842 "A11A1" 0
265 195  953910  .2011891 "A11A1" 0
265 196   11160 .23798816 "A11A1" 0
265 197    2520 .13832366 "A11A1" 0
265 198     450  .1638736 "A11A1" 0
265 199     360  .1668476 "A11A1" 0
265 200      90 .16961233 "A11A1" 0
851 176  131100 .25233778 "A11A1" 0
851 177  123900 .25428304 "A11A1" 0
851 178  107200 .25201392 "A11A1" 0
851 179   80800  .2484109 "A11A1" 0
851 180   58000 .24146485 "A11A1" 0
851 181   55600  .2420958 "A11A1" 0
851 182   25100  .2468457 "A11A1" 0
851 183    5100 .22528493 "A11A1" 0
end
format %tq quarter
What I would like to do is to compute the own and cross price elasticities of the products among each other. I have in total 17 products observed in a maximum of 11 years (the panel is unbalanced).
The result, ideally, should be a square matrix (18 x 18) of coefficients representing the own elasticities on the main diagonal and the cross elasticities outside diagonal. I don't know if it is possible. However this is equivalent to estimate the following system of equations:

q_1 = b1*p_1 + b2*p_2+b3*p_3+...+bN*p_N
q_2 = b2*p_2 + b1*p_1+b3*p_3+...+bN*p_N
q_3 = b3*p_3 + b1*p_1+b2*p_2+b4*p_4+...+bN*p_N
....
q_N = bN*p_N + b1*p_1+b2*p_2+...+bN-1*p_N-1

This is a system of equations for panel (hence my difficulty in finding a correct method. I do not think that SEM or SUR are available for panel and in case I don't know how I can implement on panels such methodologies). Is there a way to estimate own and cross elasticities for panel?

Thank you,

Federico