Публикация кода, как вы это сделали, великолепна, и большую часть времени требуется здесь, в Stack Overflow. Но словесное, сопровождающее объяснение не повредит; наоборот, это может быть очень полезно.
Я сбит с толку ошибкой, которую вы цитируете. Первая ошибка, которую я получаю при запуске этого кода,
неизвестная функция mean() r(133);
Таким образом, хорошей практикой является публикация ваших точных входных и выходных данных в том виде, в каком Stata отображает их в окне результатов, и указание источника установленных пользовательских команд, если таковые имеются.
Я предполагаю, что вы пытаетесь выполнить какое-то симуляционное упражнение. В частности, вам нужны средние значения двух случайных величин с 50 наблюдениями каждая, и вы хотите вычислить эти средние значения 1000 раз. В конце ваш результат содержит две переменные (b1
и b2
) по 1000 наблюдений в каждой. Каждое наблюдение является средним. Вас может заинтересовать команда postfile
. Вы можете посмотреть руководство: [P] postfile, где помощь исчерпывающая.
clear all
set more off
set seed 2368056
*----- compute means -----
tempname memhold
tempfile results
postfile `memhold' b1 b2 using `results'
quietly forvalues i = 1/1000 {
set obs 50
gen u = rnormal()
gen d = rnormal()
summarize u, meanonly
scalar mu = r(mean)
summarize d, meanonly
scalar md = r(mean)
post `memhold' (mu) (md)
drop _all
}
postclose `memhold'
*----- check final results -----
use `results', clear
list
Команда summarize
даст вам средства в виде сохраненных результатов (см. help stored results
). Обратите также внимание, что set obs 50
устанавливает количество наблюдений для переменных u
и d
равным 50. Но количество циклов (1000) определяет размер конечного результата. post
соберет вычисленные средние в другой набор данных. Когда вы закончите, вы можете загрузить полученный файл с помощью use
.
См.: www.stata.com/manuals13/ppostfile.pdf
26.05.2014