File 17_02zadanie_sem2

advertisement
Занятие 7. Регрессионный анализ в пакете STATA.
Создать папку: c:\roshchina\sem_stata
Загрузить туда файлы и все раззиповать:
itog6zan_ind_j_5_15_labour – данные – итоги прошлого занятия (для завершения 6 занятия)
ind_j_5_15_add_var – дополнительные переменные для факторного и кластерного анализа
синтаксис 6 занятия
StatTransfer9 – программа для преобразования данных к нужному формату (на занятии не
нужно)
stata_outreg.zip – полезное дополнение для STATA
ind_j_5_15_regress.dta- результат прошлого занятия в формате для программы STATA
prog_stata.txt - синтаксис в формате TXT
do_zanat7.do – синтаксис STATA
- учебник С.Коленникова
Задание 18.
ОСНОВЫ РАБОТЫ С ПРОГРАММОЙ STATA.
Сайт со ссылками на ресурсы для STATA :
http://www.ats.ucla.edu/stat/stata/
Простой учебник по регрессионному анализу и STATA (6-8 версии)
Коленников С. Прикладной эконометрический анализ в статистическом пакете Stata.
РЭШ, 2000-2003.
Основные приемы работы с пакетом, описанные ниже, приводятся на основе этого учебника.
1.1. Установка и запуск STATA
Обычно Stata устанавливается в каталог c:/stata, если при установке не было явно
указано иное. Подавляющее большинство собственно статистических задач выполняется
внешними программами с расширением .ado, находящимися в каталоге c:/stata/ado и его
подкаталогах. Рекомендуется подгрузить в программу полезный модуль outreg (см. в
загружаемых программах).
При запуске Stata устанавливает ряд внутренних параметров, таких, как объем выделяемой
памяти, и некоторые другие (о них можно узнать в [R] limits или в подсказке help limits).
Практически наверняка вам придется менять следующие установки:
set memory объем памяти [kjm]
set matsize число
Объем памяти, выделяемой операционной системой для Stata. Чтобы отвести 150
мегабайт, надо напечатать:
set memory 150m .
Максимальный размер матрицы, которую Stata сможет обработать. По умолчанию
устанавливается 10. Максимальный размер - 800. Этот параметр влияет на размерность
статистических моделей, которые Stata будет в состоянии оценить.
set matsize 200
1.2. интерфейс и команды STATA
Stata использует в работе несколько окон: окно ввода команд (Stata Command), окно
вывода результатов (Stata Results), окно истории, или предыдущих команд (Review), окно
переменных (Variables), окно поиска и помощи (Help), графический экран (Graph), окно
файла-протокола, или log-файла (Log; в 7-й версии его функцию выполняет окно Viewer).
Можно также вызвать окна просмотра данных (Stata Browser) или редактирования данных
(Stata Editor), а также редактор программ (Stata Do-file Editor).
1
Переключаться между окнами можно, тыкаясь мышкой в любое место на нужном
окне, либо через меню Windows.
В Stata для поиска нужной информации проще всего воспользоваться меню Help, в
котором имеются подменю Search (поиск по ключевым словам, например, Durbin Watson
statistic ) и Stata Command (файл помощи по конкретной команде Stata).
Команды можно генерировать при помощи меню (они автоматически сохраняются в окне
COMMAND), набирать вручную или при помощи команды «копировать-вставить». Есть также
специальные исполняемые файлы синтаксиса – можно запустить целый файл, а не отдельную
команду.
Команды Stata, как правило, имеют следующий вид:
команда [список переменных] [if условие] [in диапазон] [using имя файла] [[веса]], [опции]
Список переменных может состоять из одной переменной (например, если нужно
получить сводные статистики или построить гистограмму), из двух (расчет корреляций или
построение диаграммы рассеяния) и более (регрессии, графики со многими переменными).
Условия if и in выделяют те наблюдения, для которых необходимо провести анализ (см.
ниже параграф 3.6). Если команда предполагает работу с файлами (чтение, объединение и
т.п.), то имя файла, с которым необходимо провести указанные действия, передается в
конструкции using. Если разным наблюдениям необходимо придать разные веса, то для этого
используется конструкция типа [weight=выражение] (см. help weights; квадратные скобки
являются элементами синтаксиса и обязательны).
Многие команды Stata позволяют ограничить свое действие на определенные
наблюдения. Делается это с помощью условных модификаторов [if условие] [in диапазон].
Условие, задаемое под if
это логическое выражение, в котором могут использоваться
операторы отношений > ("больше"), < ("меньше"), >= ("больше или равно"), <= ("меньше или
равно"), = = ("равно", двойной знак использован для того, чтобы не спутать с операцией
присвоения), | = или ~ = ("не равно"); логические операции & ("и"), | ("или"), | или ~ ("не"),
указание на текущее наблюдение _n и на последнее _N, обычные операции и функции, а
также скобки для указания приоритета. in указывает диапазон наблюдений вида
начало/конец, где в качестве конца диапазона может быть использовано последнее
наблюдение, обозначаемое латинской "эл"( l) или как ..1.
2
1.3. Начало работы: загрузка файлов.
Данные для работы в пакете имеют расширение .dta ; файлы других форматов (Excel,
SAS, SPSS, Statistica и т.п.) необходимо предварительно сохранить в виде текста (с
разделением данных запятыми, табуляциями, или в фиксированном формате), либо
воспользоваться внешними средствами для конвертации данных. В комплект поставки
Professional Stata входит чрезвычайно полезная Windows-утилита StatTransfer (
http://www.stattransfer.com ), позволяющая преобразовывать данные между двумя десятками
различных форматов.
Данные лучше положить в папку, в пути к которой нет РУССКИХ букв – программа
плохо их читает в синтаксисе.
Открыть программу. В окне команд последовательно набрать и выполнить команды
(команды можно копировать и вставлять в нужное окно):
set memory 150m .
set matsize 200
set more off
Последняя команда - отключение построчного вывода результатов.
Полезная команда, показывает возможности программы:
help limits
Для загрузки данных воспользоваться командой меню: FILE  OPEN и в броузере
найти нужный файл с расширением .dta. Появится примерно такая команда:
use "C:\...\ind_j_5_15_regress.dta", clear
Для перехода в окно данных (просмотр и редактирование) можно использовать
соответствующую иконку. В меню DATA есть возможность генерировать команды для
склейки файлов (добавление переменных или кейсов).
Для сохранения трансформированных данных можно использовать команду или
значок «сохранить», при этом генерируется команда:
save "C:\...\sem_stata\ind_j_5_15_regress.dta", replace
1.4. Редактирование переменных.
В меню DATA есть возможность редактировать метки и имена переменных, удалять и
сохранять переменные, удалять и выбирать кейсы, а также генерировать новые переменные
(например, на основе старых – создавать логарифмы и т.д.) и перекодировать переменные.
Некоторые наиболее часто используемые команды:
generate [тип] имя переменной = выражение [if условие] [in диапазон]
Создать новую переменную, возможно, указанного типа, и присвоить ей значение
выражения. В выражение могут входить числа, переменные, фигурировать арифметические
операции, функции (математические, статистические, строковые и пр.), логические условия
(которые вычисляются как 1 - истина и 0 - ложь) и пропущенные значения.
xi специальные выражения
xi: команда Stata со специальными выражениями
Позволяет создать набор бинарных (0/1) переменных из категорийной, или выполнить
указанную команду, включив в список переменных создаваемый на ходу набор бинарных
переменных. Одна из категорий берется как базовая, и для нее бинарная переменная не
создается, т.е. корректно отрабатывается проблема статистической связи между
получаемыми бинарными переменными. Специальные выражения имеют виды:
i.категорийная переменная
i.категорийная переменная *i.категорийная переменная (перемножение переменных)
i.категорийная переменная *непрерывная переменная.
Например, это может быть команда регрессии типа:
xi: reg y x1 x2 i.x3
Тогда категорийная независимая переменная х3 будет разложена на дамми.
recode
3
Изменяет значения переменной. Актуально для перекодировки
категорийной переменной или для соединения нескольких категорий в одну.
значений
replace имя переменной =выражение [if условие] [in диапазон]
Заменить значения уже существующей переменной.
rename имя переменной новое имя
Переименовать переменную.
drop if условие | in диапазон
Удалить наблюдения, удовлетворяющие указанным условиям.
drop переменные
Удалить указанные переменные.
sort переменные
Отсортировать данные по указанным переменным.
describe [ переменные | using имя файла], [short]
Вывести описание данных и переменных: формат, метки и т. п. Эта команда
показывает также количество наблюдений и переменных, изменялись ли данные с момента
последнего сохранения, по каким переменным отсортированы наблюдения. Можно указать
файл, находящийся на жестком диске.
label
Приписать метки к данным или переменным.
label variable имя переменной "текст"
создает метку переменной, которая выводится командой describe и видна в окне
переменных. Можно также задать метку для файла данных label data (информация о файле
данных хранится в сопровождающем его объекте _dta). Эта метка будет выводиться при
исполнении use и describe. Можно также задать метки для отдельных значений дискретной
переменной через label define и label values. Признаком хорошего стиля работы с данными
является придание меток создаваемым переменным: после любой команды generate или egen
должно идти label variable .
1.5. Окно результатов. Описательные статистики и многомерный анализ.
Для начала анализа нужно создать (или открыть) файл результатов. (Возможно также
непосредственно копировать и переносить в эксель, например, результаты из окна
RESULTS). Из меню: FILE LOG  BEGIN. При этом получится команды примерно
такая:
log using имя файла, [ append | replace ]
Эта команда записывает все, что Stata выводит в окно результатов, в указанный файл
(добавляя либо перезаписывая этот файл, в соответствии с опциями append либо replace, если
такой файл существует). log off временно прекращает запись в файл, log on возобновляет
запись в файл, log close прекращает запись и закрывает файл.
log on | off |close
Команды, связанные с log-файлом, продублированы на панели инструментов Stata
кнопочкой со светофором. Log-файлы лучше всего печатать непосредственно из Stata,
поскольку Stata умеет автоматически приукрашивать текст (выделяя полужирным шрифтом
команды, проставляя даты и т.п.). В Stata 7 есть два вида log-файлов: командный (в который
пишутся только команды, отдаваемые пользователем, что дает возможность быстро
конвертировать результаты работы в программу) и полный (в который пишутся как команды,
так и результаты их исполнения). Запись команд в командный log-файл задается
конструкцией cmdlog using имя файла. Есть также недокументированные способы записи
log-файлов в форматах HTML и texman - log html имя файла и log texman имя файла.
Есть еще один вариант сохранения статистических результатов исследований прекрасная пользовательская команда outreg (Gallup 2001), которая записывает результаты
регрессий в отдельный текстовый файл в соответствии с принятыми в статистической и
эконометрической литературе обозначениями: столбцы коэффициентов со стандартными
ошибками в скобках, число наблюдений, статистика R2 и прочие статистики. Этот модуль
4
требует отдельной установки, см. stb, help stb. Самую свежую версию можно найти на сайте
архива SSC-IDEAS, см. параграф 3.16.
Возможности для генерирования команд содержатся в меню в команде STATISTICS.
Простейшие команды – распределения и таблицы. Можно также писать команды вручную
или при помощи «копировать – вставить».
Регрессионный анализ.
Веб-учебник – регрессионный анализ на STATА:
http://www.ats.ucla.edu/stat/stata/webbooks/reg/default.htm
Описание использования модели простой и множественной регрессии:
http://www.ats.ucla.edu/stat/stata/webbooks/reg/chapter1/statareg1.htm
Диагностика регрессий (мультилоллинеарность, гетероскедастичность, нормальность
остатков и т.д.)
http://www.ats.ucla.edu/stat/stata/webbooks/reg/chapter1/statareg1.htm






Detecting Unusual and Influential Data
o
predict -- used to create predicted values, residuals, and measures of influence.
o
rvpplot --- graphs a residual-versus-predictor plot.
o
rvfplot -- graphs residual-versus-fitted plot.
o
lvr2plot -- graphs a leverage-versus-squared-residual plot.
o
dfbeta -- calculates DFBETAs for all the independent variables in the linear model.
o
avplot -- graphs an added-variable plot, a.k.a. partial regression plot.
Tests for Normality of Residuals
o
kdensity -- produces kernel density plot with normal distribution overlayed.
o
pnorm -- graphs a standardized normal probability (P-P) plot.
o
qnorm --- plots the quantiles of varname against the quantiles of a normal
distribution.
o
iqr -- resistant normality check and outlier identification.
o
swilk -- performs the Shapiro-Wilk W test for normality.
Tests for Heteroscedasticity
o
rvfplot -- graphs residual-versus-fitted plot.
o
hettest -- performs Cook and Weisberg test for heteroscedasticity.
o
whitetst -- computes the White general test for Heteroscedasticity.
Tests for Multicollinearity
o
vif -- calculates the variance inflation factor for the independent variables in the
linear model.
o
collin -- calculates the variance inflation factor and other multicollinearity
diagnostics
Tests for Non-Linearity
o
acprplot -- graphs an augmented component-plus-residual plot.
o
cprplot --- graphs component-plus-residual plot, a.k.a. residual plot.
Tests for Model Specification
o
linktest -- performs a link test for model specification.
o
ovtest -- performs regression specification error test (RESET) for omitted variables.
Повторение моделей, выполненных в SPSS на занятии 6.
Обычная множественная регрессия для количественной переменной.
regress зависимая переменная объясняющие переменные [if условие] [in диапазон], robust
noconst cluster( групповая переменная )
Оценивание линейной регрессии зависимой переменной на объясняющие. Выводятся
основные результаты оценивания: количество наблюдений, таблица дисперсионного анализа,
5
статистики F, R2, R2 adj , а также таблица оценок коэффициентов, стандартных отклонений
оценок, t-статистик для гипотезы k = 0 и доверительных интервалов (см. Коленников, с. 49 с
примером регрессии). Опция robust задает оценку ковариационной матрицы оценок
коэффициентов в форме Уайта (Коленников 2.29), учитывающей гетероскедастичность.
Опция cluster указывает, что ковариационная матрица должна учитывать группировку
наблюдений (как в кластерных выборочных обследованиях). Опция noconst указывает, что в
модель, оценивамую Stata, не следует включать константу (как это делается по умолчанию).
После команды regress можно получать прогнозные значения, остатки и строить
диагностические переменные командой predict или проводить диагностику регрессии, не
прогоняя регрессию заново. Введение в эту команду предоставляется уроком tutorial regress .
Команды оценивания статистических моделей в Stata имеют много общего. В
частности, после всех таких команд можно отдавать команду predict, которая будет строить
значения тех или иных выражений, связанных с результатами оценивания; получать матрицы
самих оценок параметров (матрица-столбец e(b)) и их ковариационную матрицу (e(V));
строить тесты на линейные ( test) и нелинейные (testnl, с использованием дельта-метода для
получения ковариационной матрицы нелинейных функций оценок) комбинации параметров,
и т.д.
ОЦЕНИМ РЕГРЕССИЮ для модели МИНЦЕРА. Команда:
regress stavka_zp_ln vo sso age age_2 nfm b_v_reg lg_regz round6 round7 round8 round9 round10
round11 round12 round13 round14 round15 sever centr volga kavkaz ural zapsib dvost gorod selo
male
Вариант команды с использованием встроенной возможности генерирования дамми:
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male
Команда для проверки на мультиколлинеарность:
We can use the vif command after the regression to check for multicollinearity. vif stands for
variance inflation factor. As a rule of thumb, a variable whose VIF values are greater than 10 may merit
further investigation. Tolerance, defined as 1/VIF, is used by many researchers to check on the degree of
collinearity. A tolerance value lower than 0.1 is comparable to a VIF of 10. It means that the variable could
be considered as a linear combination of other independent variables.
vif
Для вывода стандартизованных коэффициентов:
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male , beta
Для получения робастных оценок (если есть гетероскедастичность): коэффициенты не
меняются, но меняется значимость.
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male,
robust
Запись результатов в вордовский файл:
outreg using c:\roshchina\sem_stata\mincer.doc, se bdec(4) adjr2
Та же регрессия для мужчин и для женщин, также добавление в вордовский файл:
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 if male,
robust
outreg using c:\roshchina\sem_stata\mincer.doc, se bdec(4) adjr2 append
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 if male==0,
robust
outreg using c:\roshchina\sem_stata\mincer.doc, se bdec(4) adjr2 append
Откройте файл с результатами – из STATA и из WORD.
Перенесение результатов в EXCEL.
6
Расчет предельных эффктов (долго)
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male
mfx compute
Модель занятости:
xi: probit zanat i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male jenat lg_dox_s
lg_dox_o ikdet1 ikdet3 ikdet6 ikdet17, robust
Модель Хекмана для уравнения Минцера:
xi: heckman stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male,
robust select(zanat = i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male jenat
lg_dox_s lg_dox_o ikdet1 ikdet3 ikdet6 ikdet17)
Мультиноминальная регрессия
xi: mlogit st_zan1 i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male jenat
lg_dox_s lg_dox_o lg_dox ikdet1 ikdet3 ikdet6 ikdet17 st_zans if st_zan==1
Сохраните все выполненные команды из окна COMMAND в виде DO-файла.
1.6. DO-файлы.
Сохраните результаты, закройте программу. Снова откройте программу, и откройте
окно редактирования DO-файлов.
Вставьте в него текст всех выполненных команд, или откройте сохраненный вами
файл:
set more off
set matsize 150
set mem 150m
help limits
use "C:\roshchina\sem_stata\ind_j_5_15_regress.dta", clear
log using "C:\roshchina\sem_stata\regress_out.smcl"
regress stavka_zp_ln vo sso age age_2 nfm b_v_reg lg_regz round6 round7 round8
round9 round10 round11 round12 round13 round14 round15 sever centr volga kavkaz
ural zapsib dvost gorod selo male
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm
i.region i.status1 male
vif
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm
i.region i.status1 male , beta
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm
i.region i.status1 male, robust
outreg using c:\roshchina\sem_stata\mincer.doc,
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm
i.region i.status1 if male, robust
outreg using c:\roshchina\sem_stata\mincer.doc,
xi: regress stavka_zp_ln i.dipl2 age age_2 nfm
i.region i.status1 if male==0, robust
outreg using c:\roshchina\sem_stata\mincer.doc,
xi: regress stavka_zp_ln i.dipl2 age
i.region i.status1 male
mfx compute
b_v_reg lg_regz
i.round
b_v_reg lg_regz
i.round
b_v_reg lg_regz
i.round
se bdec(4) adjr2
b_v_reg lg_regz i.round
se bdec(4) adjr2 append
b_v_reg lg_regz i.round
se bdec(4) adjr2 append
age_2 nfm b_v_reg lg_regz
i.round
xi: probit zanat i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region
i.status1 male jenat lg_dox_s lg_dox_o ikdet1 ikdet3 ikdet6 ikdet17, robust
xi: heckman stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region
i.status1 male, robust select(zanat = i.dipl2 age age_2 nfm b_v_reg lg_regz
7
i.round i.region i.status1
ikdet17)
male jenat
lg_dox_s lg_dox_o ikdet1 ikdet3 ikdet6
xi: mlogit st_zan1 i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region
i.status1 male jenat lg_dox_s lg_dox_o lg_dox ikdet1 ikdet3 ikdet6 ikdet17
st_zans if st_zan==1
Выполните DO-файл.
1.7. ДОПОЛНЕНИЕ: Синтаксис для панельных регрессий по этим же моделям:
iis idind
tis round
tsset idind round
xi: xtreg stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male , fe
xi: xtreg stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round, fe
est store fixed
xi: xtreg stavka_zp_ln i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male , re
hausman fixed
xttest0
xi: logit zanat i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male jenat lg_dox_s
lg_dox_o ikdet1 ikdet3 ikdet6 ikdet17
xi: clogit zanat i.dipl2 age age_2 nfm b_v_reg lg_regz i.round jenat lg_dox_s lg_dox_o ikdet1 ikdet3
ikdet6 ikdet17, group(idind)
xi: xtlogit zanat i.dipl2 age age_2 nfm b_v_reg lg_regz i.round jenat lg_dox_s lg_dox_o ikdet1 ikdet3
ikdet6 ikdet17, i(idind) fe
xi: xtlogit zanat i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male jenat lg_dox_s
lg_dox_o ikdet1 ikdet3 ikdet6 ikdet17, i(idind) re
xi: probit zanat i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male jenat lg_dox_s
lg_dox_o ikdet1 ikdet3 ikdet6 ikdet17
xi: xtprobit zanat i.dipl2 age age_2 nfm b_v_reg lg_regz i.round i.region i.status1 male jenat
lg_dox_s lg_dox_o ikdet1 ikdet3 ikdet6 ikdet17, i(idind)
8
Download