Stata: цикл для хранения значений коэффициента Джини

У меня есть 133 переменных на доход (каждая переменная представляет группу). Я хочу, чтобы коэффициенты Джини всех этих групп, поэтому я использую ineqdeco в Стате. Я не могу вычислить все эти коэффициенты вручную, поэтому я создал цикл for:

gen sgini = . 
foreach var of varlist C07-V14 {
forvalue i=1/133 {
ineqdeco `var'
replace sgini[i] = $S_gini
 }
}

Также попытался изменить порядок:

 foreach var of varlist C07-V14 {
 ineqdeco `var'
 forvalue i=1/133 {
 replace sgini[i] = $S_gini
  }
 }

И указав i заранее:

gen i = 1 
foreach var of varlist C07-V14 {
    ineqdeco `var'
    replace sgini[i] = $S_gini
    replace i = i+1
     }
    }

Я не знаю, работает ли этот последний метод в любом случае. Во всех случаях я получаю ошибку: weight not allowed r(101), Я не знаю, что это значит или что делать. По сути, я хочу вычислить коэффициент Джини для всех 133 переменных и сохранить эти значения в векторе длиной 133, поэтому в одной переменной будет храниться информация обо всех коэффициентах.

Изменить: я обнаружил, что ошибка связана с replace команда. Я заменил эту строку на:

replace sgini  = $S_gini in `i'

Но теперь он не "зацикливается", поэтому я получаю первое значение во всех записях sgini,

1 ответ

Решение

Нет очевидной причины для вашего внутреннего цикла. Если у вас нет больше переменных, чем наблюдений, то это может сработать:

gen sgini = . 
gen varname = "" 
local i = 1 
foreach var of varlist C07-V14 {
    ineqdeco `var'
    replace sgini = $S_gini in `i' 
    replace varname = "`var'" in `i' 
    local i = `i' + 1 
}

Проблемы, очевидные в вашем коде (кажется) включают в себя:

  1. Путаница между переменными и локальными макросами. Если у вас большой опыт работы с другими языками, трудно сломать старые умственные привычки. (Мата больше похож на другие языки здесь.)

  2. Не осознавая, что цикл по наблюдениям является автоматическим. Или, возможно, не видя, что здесь нужен только один цикл, суть в том, что цикл по переменным прост, но ваш сопутствующий цикл по наблюдениям должен быть организован с помощью вашего собственного кода.

  3. Помещение индекса на LHS replace, [] нотация зарезервирована для весов, но в любом случае там запрещена. Чтобы узнать о весах, search weights или же help weight,

Обратите внимание, что при таком способе записи результатов коэффициенты Джини не совпадают ни с чем другим. Исправление токена для этого состоит в том, чтобы записать имена связанных переменных, как это было сделано выше.

Более продвинутая версия этого решения будет использовать postfile сохранить в новый набор данных.

Другие вопросы по тегам