如下小程序应该能满足你的要求:
// 生成模拟数据
clear
set obs 400
gen id = 600000 + _n
gen industry = 1+int(20*uniform())
gen x1 = uniform()
gen x2 = uniform()
gen y = industry + industry*x1 + 2*industry*x2 + invnormal(uniform())
move y x1
gen con = .
gen b1 = .
gen b2 = .
gen N = .
gen r2adj = .
// 回归
quietly forval i = 1/400 {
regress y x1 x2 if industry == industry[`i'] & _n != `i'
matrix eb = e(b)
replace con = eb[1,3] in `i' // 回归常数项
replace b1 = eb[1,1] in `i' // 回归系数1
replace b2 = eb[1,2] in `i' // 回归系数2
replace N = `e(N)' in `i' // 样本数
replace r2adj = `e(r2_a)' in `i' // 调整后r2
}
// 生成未预期值
gen resid = y - con - b1*x1 - b2*x2
// 生成行业系数平均值
sort industry
by industry: egen m_b1 = mean(b1)
by industry: egen m_b2 = mean(b2)
// 保存
save result, replace
也请论坛高手就该问题继续支招,让我也学习学习!
[此贴子已经被作者于2009-4-30 10:56:03编辑过]
eblog 金币 +5 金钱 +100 魅力 +20 经验 +50 奖励 2009-4-30 14:55:02