Ich habe eine Panel-Daten in Stata, die Industrie-und Jahr Dimensionen und 7 andere Variablen hat. Ich möchte dieses Panel nach Industrie-Jahr-Kombination in Untertafeln aufteilen und sie dann verwenden, um neue Variablen zu berechnen, die das mahascore
von Paket verwenden. Hier ist die Struktur der Datenprobe (Zahlen für varlist nicht real sind, in meinem Datensatz sie nur einige numerische Variablen):Split Panel in Subpanels
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 2000 1 2 3 4 5 6 7
2 2009 2000 1 2 3 4 5 6 7
2 2010 2000 1 2 3 4 5 6 7
...............................................................
Für jede dieser Variablen Ich möchte 72 neue Variablen erzeugen (9 Branchen * 8 Jahre), so dass alle Werte für jede Variable, die nicht zur Kombination Industrie-Jahr gehört, fehlen. Dann möchte ich 72 Varlisten generieren, die ich für jede Branchen-Jahres-Kombination getrennt nach mahascore
(Mahalanobis-Distanz) berechne. Die Industrie-IDs (ind_ids) haben folgende Werte {1 2000 3000 4000 5000 6000 7000 8000 9000}. Die Zeitspanne reicht von 2008 bis 2015
Der Code, den ich geschrieben habe, ist falsch, aber ich hoffe, es wird helfen, zu verstehen, was ich tue:
*Generate 504 variables(8 years*9 industries * 7variables):
forvalues i = 2008/2015 {
forvalues z = 1/9000 {
gen var1_`i'_`z'=var1 if year == `i' & ind_id == `z'
gen var2_`i'_`z'=var2 if year == `i' & ind_id == `z'
gen var3_`i'_`z'=var3 if year == `i' & ind_id == `z'
gen var4_`i'_`z'=var4 if year == `i' & ind_id == `z'
gen var5_`i'_`z'=var5 if year == `i' & ind_id == `z'
gen var6_`i'_`z'=var6 if year == `i' & ind_id == `z'
gen var7_`i'_`z'=var7 if year == `i' & ind_id == `z'
}
}
*Create 72 varlists (with 7 variables for each year-industry combination):
global varlist1 var1_2008_1 var2_2008_1 var3_2008_1 var4_2008_1 var5_2008_1 var6_2008_1 var7_2008_1
global varlist2 var1_2009_1 var2_2009_1 var3_2009_1 var4_2009_1 var5_2009_1 var6_2009_1 var7_2009_1
....................................................................
*Create list of lists
global metavarlist varlist1 varlist2...varlist72
*Calculate distance
foreach v in $metavarlist {
mahascore `v', gen(dist_M_`v') refmeans compute
Vielleicht jemand hier meine Logik verbessern könnte.
Wie bereits erwähnt, würde die Schleife über '1/9000' allein 9000 neue Variablen erzeugen. Es gibt keine eingebaute Beschränkung auf die Werte, die 'ind_id' in der Praxis hat. Die einfachste Abkürzung besteht darin, Ihre Branchenbezeichner mithilfe von 'gen, group()' einer Variablen mit 9 verschiedenen Werten von 1 bis 9 zuzuordnen. Siehe http://www.stata.com/support/faqs/data-management/creating-group-identifiers/index.html Ich verstehe fast nichts anderes in Ihrer Frage, da ich diese Art von Berechnung nie mache. –