Я написал программу ниже и продолжаю получать сообщение об ошибке, что мои переменные не определены.Ошибка: «нет переменных, определенных» в stata при использовании моделирования monte carlo
Может ли кто-нибудь посмотреть, где ошибка, и как я должен адаптировать код? На самом деле ничего не работает.
program define myreg, rclass
drop all
set obs 200
gen x= 2*uniform()
gen z = rnormal(0,1)
gen e = (invnorm(uniform()))^2
e=e-r(mean)
replace e=e-r(mean)
more
gen y = 1 + 1*x +1*z + 1*e
reg y x z
e=e-r(mean)
replace e=e-r(mean)
more
gen y = 1 + 1*x +1*z + 1*e
reg y x z
more
return scalar b0 =_[_cons]
return scalar b1=_[x]
return scalar b2 =_[z]
more
end
simulate b_0 = r(b0) b_1 = r(b1) b_2 = r(b2), rep(1000): myreg
'e = e-r (mean)' здесь незаконно. Он также избыточен, так как это «замена». Но если вы не выполнили «подведение итогов» перед запуском этого, нет 'r (mean)', чтобы использовать так, чтобы 'e' заканчивалось тем, что не было. Стилистическая точка заключается в том, что если ваша Stata допускает «rnormal()», она допускает «runiform()», и вам не нужно использовать более старые имена функций для генерации случайных чисел. –
'drop all' катит переменную, называемую' all', если она существует. Вы можете означать 'drop _all'. –
Первый «регресс» в программе бессмыслен, поскольку вы никогда не используете его результаты. Если вы считаете, что 'r (mean)' оставлен «регрессом», это совершенно неправильно. –