我有一组跨越多个国家的数据(公司年)。对于每个国家,我logit
使用前五年估计一个模型,然后我使用这个模型来估计predict
随后几年的概率。我foreach
遍历国家并forvalues
遍历随后的几年。
前几个国家运行良好(估计和预测),但第五个国家的第一个样本外预测失败:
Country: United Kingdom
Year: 1994
too many variables specified
r(103);
该模型适合并且 1994 年有足够的数据来预测概率。我的predict
电话是:
predict temp_`c'`y' ///
if (country == "`c'") ///
& (fyear == `y'), ///
pr
您有什么想法可能导致此错误吗?我很困惑,因为logit
并且predict
在同一循环中的其他地方工作。谢谢!
FWIW,这是 .do 文件。
* generate table 5 from Denis and Osobov (2008 JFE)
preserve
* loop to estimate model by country
levelsof country, local(countries)
foreach c of local countries {
display "Country: `c'"
summarize fyear if (country == "`c'"), meanonly
local est_low = `r(min)'
local est_high = `=`r(min)' + 4'
local pred_low = `=`r(min)' + 5'
local pred_high = `r(max)'
logit payer size v_a_tr e_a_tr re_be_tr ///
if (country == "`c'") ///
& inrange(fyear, `est_low', `est_high')
forvalues y = `pred_low'/`pred_high' {
display "Country: `c'"
display "Year: `y'"
predict temp_`c'`y' ///
if (country == "`c'") ///
& (fyear == `y'), ///
pr
}
}
* combine fitted values and generate delta
egen payer_expected = rowfirst(temp_*)
drop temp_*
generate delta = payer - payer_expected
* table
table country fyear, ///
contents(count payer mean payer mean payer_expected)
*
restore
更新:如果 I drop (country == "United Kingdom")
,那么同样的问题会转移到美国(面板中的下一个和最后一个国家)。如果我,drop inlist(country, "United Kingdom", "United States")
那么问题就会消失并且 .do 文件会运行。