Введение в программу Stata 8

Кристофер Ф. Баум

Что такое Stata? И что она может для Вас сделать?

Stata, версия 8, является достаточно продвинутой версией статистического программирования для операционных систем Windows, Macintosh, Unix, и Linux. Она может рассматриваться как пакет статистических прикладных программ аналогичный SAS, SPSS, RATS, или reViews. Stata традиционно являлась пакетом, который управляется при помощи команд, вводимых с клавиатуры, и работает в графическом или оконном окружении. Самая последняя версия Stata - версия 8 (январь 2003) представила графический интерфейс пользователя для ввода команд. Stata также может быть использована в виде программы, оперирующей с командной строки на системах аналогичных Unix, если у Вас нет графического интерфейса к этой системе. Количество переменных, которое можно вносить в программу Stata ограничено количеством в 2047 в стандартной поставке Stata (Intercooled), но может быть значительно большим в программе Stata/SE. Количество наблюдений ограничено только размерами памяти.

Переносимость.

Stata - легко переносимая программа и ее разработчики как раз и старались обеспечить совместимость программ, написанных для Stata на разных платформах. Stata работает абсолютно одинаковым образом под управлением операционных систем Windows, Macintosh, Unix, и Linux. Единственный аспект, который специфичен для данной платформы при использовании Stata связан с тем, как используются собственные команды системы: например - как необходимо писать расположение файла

C:\stata\statadata\myfile. dta или /u/baum/statadata/myfile. dta

И, по всей вероятности, уникальное свойство среди всех статистических пакетов - бинарные файлы данных Stata легко копируются с одной платформы на любую другую, и к ним даже можно получать доступ через Internet с любой машины, на которой запущена Stata.

Сильные стороны Stata: Манипуляция данными.

Stata рекламируется как система, которая имеет три основных сильных стороны: манипуляция данными, статистика, и графика.

Stata - превосходный инструмент для манипуляции данными: вводом данных с внешних источников в программу, чистка данных, создание новых переменных, создание суммарных наборов данных, слияние наборов данных и проверка на наличие ошибок при слиянии, переформатирование наборов данных от "длинного" представления к "широкому" представлению ... В этом контексте, Stata является превосходной программой, которая может отвечать на любые вопросы, которые возникают относительно любого аспекта Ваших данных.

Сильные стороны Stata: Статистика.

В терминах статистики Stata предоставляет все стандартные унивариантные, бивариантные и мультивариантные статистические инструментальные средства, от описательной статистики и t-тестов до одно -, двух - и многомерного дисперсионного анализа, регрессии, анализа главных компонент, и т.п.. Она имеет очень мощный набор методик для анализа ограниченного числа зависимых переменных: logit-анализ, probit-анализ, упорядоченный logit и probit, многомерный logit, и т.п.. Регрессионные способности Stata также полномасштабны, включая регрессионную диагностику, предсказание, устойчивую оценку стандартных ошибок, двухступенчатый метод наименьших квадратов, кажущиеся несвязанными регрессии / трехступенчатые методы наименьших квадратов и т.п..

Специализированные статистические техники.

Широта и глубина возможностей Stata начинает действительно проявляться, когда мы начинаем говорить о специализированных статистических возможностях. Целое семейство команд обеспечивают возможность применения ведущих техник, которые используются в каждой из нескольких категорий: "xt" команды для анализа лонгитюдных данных, включая одномоментные и временные серии; команды "svy" для обработки данных опросов с использованием сложных дизайнов выборки; команды "st" для анализа данных по выживаемости. Недавние добавления в этот арсенал включают набор команд для кластерного анализа, эпидемиологии и фармакокинетики (Stata очень широко используется в исследованиях в здравоохранении).

Сильные стороны Stata: Графические возможности.

Графические возможности Stata значительно улучшились и были усилены в версии 8. Они представляют собой превосходные инструментальные средства для исследовательского анализа данных, и могут создавать высококачественные 2-х мерные графики, которые можно напрямую использовать для публикаций, различные "схемы" (стили), которые определяют многие из элементов графика. Графики могут экспортироваться в различном формате для включения в документы. Целый набор графиков может быть сгенерирован с одинаковым внешним видом за счет использования одной команды, а не внесением изменений указанием в каждый график.

В настоящее время у Stata отсутствуют трехмерные графические возможности, но они находятся в разработке для новой графической системы. Графики могут различным образом меняться, и существует большое количество специализированных типов 2-х мерных графиков.

Стоимость, доступность и поддержка.

И наконец, (но естественно не последнее) Stata очень недорогая программа! У компании Stata имеется программа GradPlan, которая дает доступную полную версию программного обеспечения Stata версии 8 - преподавателям и студентам за $ 89.00 (одногодичная лицензия для студентов) или $ 129.00 (постоянная лицензия для преподавателей) с различными возможностями по покупке документации. Достаточно полный набор документации доступен за $ 129.00 (четырехтомное руководство и руководство пользователя). Версия "Маленькая Stata " доступна для студентов за $ 39.00 вместе с одногодичной лицензией; она ограничивает количество наблюдений и переменных, но содержит все необходимые команды. Заказы в рамках программы GradPlan можно делать напрямую в Stata, но при этом все заказы будут приходить только в университет.

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

Но почему я должен сам впечатывать все команды?

Прежде, чем мы начнем обсуждать специфические вопросы, которые с этим связаны, давайте посмотрим на более широкую проблему: почему Вы должны стараться учиться тому, как использовать пакеты, которые базируются на вводе команд? Stata может использоваться как в полностью интерактивном режиме - где команды вводятся при помощи меню через ряд диалоговых окон - или в режиме командной строки, где пользователь запускает программу (по всей вероятности написанной в редакторе do-файлов Stata, или во внешнем текстовом редакторе). В большинстве систем Stata может быть запущена в таком режиме, что она выполнит созданную на диске программу и создаст файл, где будут храниться результаты. А теперь давайте рассмотрим пару причин, почему статистические пакеты, базирующиеся на командной строке, являются эффективной и необходимой исследовательской стратегией.

Воспроизводимость.

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

Более детальное обсуждение этого вопроса содержится на нашей web странице, http: // fmwww.bc.edu/GStat/docs/pointclick.html.

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

Воспроизводимость также означает, что нам очень легко выполнять анализ данной модели в других условиях. Что случилось бы, если бы мы добавили это взаимодействие, или добавили бы эту дополнительную переменную, или решили бы, что нулевые значения будут рассматриваться как отсутствующие? Даже если мы прошли большое количество шагов с момента анализа основной модели, очень легко вернуться назад и создать новую версию анализа, если вся работа сохранена как серия программных шагов.

Stata позволяет сделать работу воспроизводимой достаточно легко за счет существования log-файла, способности генерировать файл, содержащий список всех команд, а также редактор do-файлов, которые позволяют Вам достаточно легко вводить, запускать и сохранять так называемые do-файлы: последовательность команд или фрагменты программ. Имеется также достаточно хорошо развитая, базирующаяся на принципах гипертекста, система подсказок, которая предоставляет полный доступ к описанию команд и примерам синтаксиса. Каждый из этих компонентов появляется в отдельном окне на экране.

Расширяемость.

Еще одно четкое преимущество любого пакета программ, который опирается на команды - это его возможности по дальнейшему расширению основной возможности программы. Команда в Stata, является глаголом, инструктирующим программу выполнить некоторое действие.

Команды могут быть "встроенными" - это те элементы, которые настолько часто используются, что они были закодированы в " ядро " Stata. Хотя встроен относительно небольшой процент общего числа официальных команд Stata, но используются они очень часто.

Огромное большинство команд Stata написано на собственном языке программирования Stata - "так называемом языке ado-файлов". Если команда не встроена в ядро, Stata начинает искать ее в папках, содержащих "ado- файлы". Подобно командам PATH в Unix, Linux или DOS, эти папки указывают на несколько директорий, в которых могут находиться файлы -ado. Это предполагает что "официальные " команды Stata не ограничены теми, которые закодированы в ядре. Если завтра разработчики программы Stata напишут команду, которая будет называться "уровнями", они на своем web-сайте выгрузят два файла: levels.ado (файл с кодом) и levels.hlp (связанный с ним, файл подсказок). Оба этих файла являются ни чем иным, как простыми текстовыми файлами.

С появлением 8 версии Stata и ее диалоговых окон команды, написанные пользователем, могут даже сопровождаться собственным диалоговым окном, которое приводит к тому, что простота использования и внешний вид команды аналогичны тем, что предоставляются самой Stata. Команда " db cmdname " вызовет диалоговое окно, и позволит пользователю внести туда некоторые детали.

Большое преимущество такого использования диалоговых окон в Stata состоит в том, что они генерируют команду Stata, которую можно легко напечатать, и разместить ее в окно просмотра (где она может быть затем сохранена в текстовом файле). Этим способом, пользователь может легче понимать программный язык Stata.

Облегчение анализа повторных задач.

Одно из наиболее очевидных преимуществ использования того, как Stata применяет свой командный язык - это довольно часто встречающаяся необходимость запускать серию очень похожих друг на друга команд манипуляций данных для целого набора переменных, или проводить некоторое количество аналогичных регрессионных анализов и т.д. Несколько простых команд могут использоваться для того, чтобы автоматизировать анализ, и в результате этого могут приводить к созданию большого количества результатов с минимальным программированием. Кроме того, по сравнению с методом "вырезать -вклеить" для генерации большого количества аналогичных команд, такая программа может быть очень легко изменена или клонирована, когда меняются характеристики исследования.

Возможность обновления через Интернет.

Одной из наиболее сильных сторон программы Stata версий 6, 7 и 8 является тот факт, что они могут быть модифицированы через Интернет. Stata - фактически web-браузер, таким образом она может входить в контакт с web-сервером Stata и выяснить на нем, имеются ли более современные версии ядра Stata, или ado-файлов. Ядро обновляется относительно редко - не чаще, чем один раз в месяц, но " ado-файлы" могут модифицироваться даже каждые десять дней. Это позволяет разработчикам Stata очень быстро распространять программы, которые устраняют ошибки, дополнительные формы существующих команд, и даже абсолютно новые команды за время существования данной версии программы. Обновление программы бесплатно; Вам необходимо иметь всего лишь лицензированную копию Stata и доступ к Интернету для того, чтобы проверить и, при необходимости загрузить необходимое обновление.

Ресурсы для пользователей: журнал Stata .

Важность этого проекта программы выходит за пределы ограничений официальной Stata. Так как папки, в которых могут находиться ado-файлы включают, как директории Stata, так и другие директории на Вашем твердом диске, Вы можете приобретать новые команды Stata с различного количества интернет-сайтов. Журнал Stata (SJ) - это ежеквартальный рецензируемый журнал, являющийся основным методом распространения методик, разработанных для пользователя. Между 1991 и 2001 годами эту роль играл Технический Бюллетень Stata - полный набор выпусков Технического Бюллетеня Stata (STB) можно найти в библиотеке O'Neill. Журнал Stata (SJ) - это публикация, на которую необходимо подписываться, но ado - и hlp- файлы могут легко и бесплатно быть загружены с интернет-сайта Stata. Команда Stata "help" позволяет получить подсказку по всем установленным командам; команда Stata "search" позволяет обнаружить команды, которые были зарегистрированы в STB, и одним щелчком мыши, Вы можете установить их в Вашу версию Stata. Подсказка для этих команд будет также доступна в Вашей собственной программе Stata.

Ресурсы пользователей: архив SSC

Но это - только начало. Пользователи программы Stata со всего мира участвуют в обсуждениях в Stata листе, и когда пользователь написал и задокументировал новую команду, которая расширяет возможности Stata, он сообщает это в Stata листе (на который Вы можете подписаться бесплатно). Начиная с сентября 1997 года, все элементы Stata листа (более чем 600) были размещены в архиве Статистических Программных Компонентов (SSC) бостонского колледжа, и соответственно Вы можете их получить по адресам доступном от IDEAS (http:// ideas.repec.org) и EconPapers (http://econpapers.repec.org).

Любой компонент в архиве SSC можно легко просмотреть в интернет- браузере, используя функции поиска сайтов IDEAS и EconPapers, и если Вы хотите, Вы можете инсталлировать его всего лишь одной командой из архива изнутри Stata. Например, если Вы знаете, что в архиве имеется модуль, который называется "omninorm", Вы можете использовать команду ssc instal omninorm, чтобы его установить в Вашу Stata. Все что присутствует в этом архиве может быть доступно через команду Stata ssc: таким образом ssc describe omninorm, обнаружит этот модуль, и сделает возможным его инсталляцию одним щелчком мыши.

Важность всего этого заключается в том, что Stata может расширяться практически бесконечно. Любой ado-файл на Вашем диске является полноправной командой Stata. Возможности Stata таким образом значительно расширяются за пределы официальных команд, описанных в руководстве Stata. Поскольку текущая директория также находится в папке adо-файлов, если я создам adо- файл hello.ado таким образом:

program define display
"hello from Stata! " end exit 

Stata теперь будет отвечать на команду" hello". Это действительно очень просто.

Командный синтаксис.

Теперь давайте посмотрим на форму команд в Stata. Одной из самых сильных сторон Stata, по сравнению со многими другими статистическими пакетами, является то, что ее командный синтаксис следует строгим грамматическим " правилам "- не имеется никаких неправильных глаголов. Это означает что, после того как Вы познакомились с тем, как работают несколько ключевых команд, Вы будете способны использовать значительно большее количество других, без изучения руководства или даже встроенной подсказки. Команда findit позволит Вам находить команду, в которой Вы нуждаетесь, для этого Вам достаточно ввести одно или большее количество ключевых слов, даже если Вы не знаете имя самой команды.

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

Подобно операционным системам Unix или Linux, Stata знает различия между прописными и строчными буквами. Все команды должны вводиться строчными буквами. Для наилучших результатов, пишите также все имена переменных строчными буквами для того, чтобы избежать затем путаницы.

Давайте теперь рассмотрим пример, который появляется в руководстве по Stata: мы можем использовать набор данных auto.dta, являющейся набором 74 характеристик автомобиля. Мы сможем получить доступ к этому набору данных через команду webuse аutо.

Общий синтаксис команды выглядит следующим образом:

[ by varlist:] cmdname [varlist][ = exp] [if exp] [in range] [weidht ][using spec] [,options], где элементы в квадратных скобках могут и не использоваться. Для некоторых команд они существуют, для некоторых нет. В некоторых случаях требуется только имя команды cmdname:

desc без аргумента дает описание содержания памяти, включая все идентификаторы и информацию о имеющемся наборе данных, в то время как команда summ без всяких аргументов дает суммарную статистику для всех количественных переменных. Обеим командам можно давать список переменных (varlist), который будет указывать какие переменные необходимо анализировать.

Каковы же другие элементы?

Varlist

Varlist - это список одной или более переменных, на которых данная команда должна работать: иными словами подлежащее для глагола. Stata работает на основании концепции одного набора переменных, который был определен и содержится в памяти, где у каждой имеется свое имя. Как Вам покажет команда desc, у каждой переменной имеется тип данных (различные виды целых чисел и реальных чисел, а также строковые переменные различной длины). Varlist определяет, какие из имеющихся переменных должны использоваться в данной команде.

Последовательность переменных в наборе данных играет достаточно серьезную роль, поскольку Вы можете использовать написанные через дефис списки, чтобы включить все переменные между первым и последним. Команды order и move могут использоваться для изменения последовательности переменных. Вы можете также использовать специальные "сокращения" для того, чтобы анализировать все переменные с определенной приставкой. Если Вы имеете, например, переменные pop60, pop70, pop80, pop90, Вы можете описать их в varlist как pop* или pop? 0.

Команда еxp

Команда еxp  используется в таких командах как generate  и replace, где алгебраическое выражение используется для того, чтобы создать новую (или обновленную) переменную. В алгебраических выражениях, операторы = =, &, | и ! используются как равно, AND, OR, и NOT, соответственно. Оператор * используется, чтобы обозначить возведение в степень, оператор + обозначает слияние строковых переменных.

Команды if и in

Stata отличается от целого ряда других программ в том, что команды Stata автоматически используются для всех определенных переменных. Вам нет необходимости писать какие-то бы ни было циклы для того, чтобы получить доступ ко всем наблюдениям (Вы можете это сделать, но это обычно рассматривается как плохая программистская практика). Конечно Вы можете не захотеть анализировать все переменные, но можете захотеть отобрать только те, которые будут удовлетворять неким критериям, для этого и существует выражение if exp  и in range.

Например, мы могли бы написать следующим образом:

sort price
list make price in 1/5

таким образом мы определим пять самых дешевых автомобилей в наборе данных auto.dta.

1/5 - это numlist: в данном случае, список наблюдений, состоящий из значений. ` - это последнее наблюдение, таким образом если мы напишем: list make price in -5 / `  мы получим список пяти наиболее дорогих автомобилей в наборе данных auto.dta.

Еще чаще, Вы будете использовать команду if exp. Это ограничивает набор наблюдений только теми, для которых "exp" - Булево выражение -является справедливым. Так образом:

list make price if foreign = = 1  приведет к тому, что на печать будут выведены только иностранные автомобили , а list make price if price > 10000  будет приводить к распечатке только дорогостоящих автомобилей (в ценах1978 года!). Обратите, пожалуйста, внимание на двойной знак равняется в выражении "exp". Один единственный знак "=", аналогичный тому, что используется на языке C, используется для присвоения значения; двойной знак равенства используется при сравнении.

Команда using

Некоторые команды используются для доступа к файлам считывания информации из внешних файлов, или записи информации в файлы. Эти команды содержат команду using, после которой идет имя файла. Если файл записывается, Вы должны указать опцию "replace" для того, чтобы написать поверх существующего, файл с таким именем.

Бинарные файлы Stata

Собственный бинарный формат Stata , файл с расширением .dta, может использоваться на любых платформах и может даже использоваться в машинах с различной последовательностью байтов. Файл . dta может легко перемещаться с одного компьютера на другой с использованием протокола переноса файлов ftp.

Для того, чтобы загрузить содержимое существующего файла Stata файла в память, необходимо выполнить команду:

use file [, clear]

,clear  будет означить, что нам необходимо опустошить нынешнее содержимое памяти). Вы должны иметь достаточный объем памяти для того, чтобы загрузить весь файл данных, так как скорость Stata в значительной степени является следствием того, что она содержит весь набор данных в памяти. Вам необходимо обратиться к руководству по началу работы для того, чтобы выяснить подробности относительно корректировки распределения памяти на вашем компьютере, так как это зависит от операционной системы.

Чтение и запись бинарных (.dta) файлов - намного быстрее, чем работа с текстовыми файлами (ASCII), и позволяет использовать идентификаторы переменных и вводить и сохранять их вместе с файлом. Для того, чтобы сохранить бинарный файл Stata, можно использовать команду:

save file [, replace]

Команда compress  может также использоваться для того, чтобы экономично расходовать место на диске и память для хранения переменных.

Возможность переноса с одной машины на другую

Бинарные файлы Stata можно легко трансформировать в файлы программ SPSS или SAS используя приложение, которое называется Stat/Transfer. Stat/Transfer работает под управлением операционных систем Windows и Mac OS X , также как она существует и для различных вариантов операционной системы Unix. Копии Stat/Transfer версии 7 (которая также позволяет работать с файлами данных Stata версия 8) могут быть куплены со скидкой по цене $ 52.00 в рамках программы Stata GradPlan.

Stat/Transfer также позволяет преобразовывать файлы форматов SAS, SPSS и многие другие форматы в формат данных Stata, без потери переменных, их обозначений и другой подобной информации. Это - очень полезный инструмент для работы.

Доступ к данным, содержащимся в интернете

Еще одним удивительным свойством команды " use filename " является то, что Вы ни в коем случае не ограничены использованием файлов, которые хранятся на Вашем твердом диске. Поскольку Stata является web-браузерером, команда:

use http: // fmwww.bc.edu/ec-p/data/Wooldridge/crime 1. dta

позволит Вам считать этот набор данных, который расположен на другом компьютере в интернете.

Команда type позволит Вам продемонстрировать содержимое любого текстового файла, вне зависимости от того, находится ли он на Вашем твердом диске или где-то в интернете; таким образом команда:

type http: // fmwww.bc.edu/ec- p/data/Wooldridge/crime1.des

позволит Вам просмотреть кодовую книгу для этого файла, а команда:

соpy http: // fmwww.bc.edu/ec-p/data/Wooldridge/crime1.des crime.codebook

создат копию кодовой книги на Вашем твердом диске.

Когда Вы используете набор данных, который хранится в интернете, Вы его загружаете в память на Stata, которая работает на Вашем компьютере. Если Вы не можете сохранять его в интернете, но можете сохранять данные на Вашем собственном твердом диске. Преимущества данного свойства для обучения и совместного исследования достаточно очевидны. Студентам можно давать адрес в интернете, где они могут находить данные для собственной работы; при этом нам не надо думать используют ли они при этом Stata для Windows, Macintosh, Linux, или Unix.

Команда options

Многие команды используют options (такие как clear при использовании команды use или replace в команде save). Все опции даются после единственной запятой, и они могут следовать после запятой в любом порядке. Опции, подобно командам, могут вообще сокращаться.

Например, Вы можете захотеть вычислить "Whaite" или "robust" (робастные) стандартные ошибки при выполнении регрессии. Для того, чтобы указать, что Вам необходимо подсчитать робастные стандартные ошибки, используйте опцию ,robust в команде regress.

Предлог by

Последний стандартный элемент командного синтаксиса (за исключением weights, которые мы не будем обсуждать сейчас) - очень мощный инструмент: предлог by. Когда перед командой идет предлог, содержащий список bylist, он выполняет повторно для каждого элемента переменной или переменных в этом списке, каждый из которых должен являться качественным. Например,

by foreign: summ prise

обеспечит описательную статистику как для иностранных, так и для отечественных автомобилей. Если данные не были отсортированы по переменной bylist, необходимо использовать префикс bysort.

Опция , total добавит общую суммарную оценку. Что же относительно классификации с несколькими уровнями, или комбинацией значений?

bysort rep78: summ price

bysort rep78 foreign: summ price

Это - очень удобный инструмент, который часто заменяет громадное количество циклов, которые должны использоваться в других программах для того, чтобы достичь того же самого результата.

Предлог by  не надо путать с опцией by,  которая имеется в некоторых командах, который учитывает спецификацию группирующейся переменной: например:

ttest price, by (foreign)

Выполнит t-тест для различий в средних между иностранными и отечественными автомобилями.

Другой полезный аспект команды by  - это способ при помощи которого он модифицирует значения количества наблюдений. Обычно n относится к текущему номеру наблюдения, который изменяется от 1 до N, максимально имеющегося наблюдения. При использовании bylist,  n обозначает наблюдения в пределах списка bylist, и N общее количество наблюдений в данной категории. Иногда это крайне полезно при создании новых переменных.

Например, если Вы имеете индивидуальные данные вместе с указанием семьи, эти команды могли бы быть полезны:

sort famid age 
by famid: gen siblings = _N 
by famid: gen birthorder = _N - _n + 1

Отсутствующие значения

Коды отсутствующих значений в Stata в распечатке имеют вид точки (.) Строковые переменные имеют нулевую длину. На самом деле значением является наибольшее возможное положительное значение, поэтому в присутствии отсутствующих данных, Вы не должны писать:

generate hiprice = ( price > 10000),  а вместо этого написать:

generate hiprice = (price > 10000 & price <.),  что создаст нам переменную для наиболее дорогостоящих автомобилей.

Stata версия 8 позволяет использовать различные коды для пропущенных наблюдений:., .a, ..., .z. Все они при сортировке будут иметь самые большие значения, поэтому обозначение <. всегда будет означать не пропущенные наблюдения.

Формат представления данных.

Каждая переменная может иметь собственный, заданный по умолчанию, формат представления данных. Этот формат не изменяет содержание переменной, но влияет на то, как она будет выглядеть на экране. Например, %9. 2f  будет нам демонстрировать реальное число с двумя десятичными значениями после запятой. Команда

format varname % 9. 2f

сохранит данный формат, как формат по умолчанию для данной переменной.

Метки переменных

Каждая переменная может иметь свою собственную метку. Метка переменной - это строка (максимум 80 символов) которая описывает эту переменную, и она связывается с переменной за счет команды:

label variable varname "text"

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

Метки значений

Метки значений связывают цифровые значения со строковыми значениями. Они существуют отдельно от переменных, таким образом, что одно и то же обозначение цифровых значений может быть дано, а затем оно может быть применено для разных переменных (например 1 =, полностью удовлетворен ... 5 = полностью не удовлетворен - может быть применено для всех ответов на вопросы относительно удовлетворенности потребителя). Метки значений сохраняются вместе с набором данных.

label define sexlbl 0 male1 female
label values sex sexlbl

Если метки значений определены, они будут распечатываться вместо цифровых значений.

Создание новых переменных

Команда generate (создать) используется для того, чтобы создавать новые переменные в наборе данных, принимая во внимание, что команда replace  должна использоваться для того, чтобы изменить существующие переменные (и словоreplace  должно быть написано). Синтаксис, который мы только что продемонстрировали, очень полезен, если Вы пробуете создать индикаторные переменные, или переменные макеты, поскольку они будут комбинировать одновременно как generate,  так и replace.

Полный набор функций, может быть доступен для использования изнутри команды generate, включая стандартные математические функции, функции перекодировки, строковые функции, функции даты и времени, а также специализированные функции (смотри подсказку для слова functions). Обратите внимание, что функция summ () - дает обозначение суммы.

Операторы D., L., и F. могут использоваться для того, чтобы специфицировать первые различия, отстающие значения и ведущие значения. Эти операторы понимают отсутствующие данные и списки: например, L (1/4) .x  - это с первого по четвертое значение переменной x.

Stata также поддерживает матричный язык, только с одним ограничением: матрицы не могут быть больше, чем 800 строк или столбцов в стандартной Stata. Это не ограничивает расчет матричных выражений в больших наборах данных, так как команды подобные matrix accum могут формировать выражения с большей размерностью.

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

Кроме того, Stata не ограничена использованием набора определенных функций. Команды egen (расширенная генерация) могут использовать функции, написанные на языке ado-файлов Stata. Таким образом мы можем определить функцию gzap  в файле gzap.ado, затем нам необходимо будет ввести команду extended generate function zap (). Затем мы можем вызвать эту функцию следующим образом:

еgen newvar = zap (oldvar)

что будет делать то же самое, что zap делает на содержании старой переменной (oldvar), создавая новую переменную (newvar).

Довольно большое количество функций egen  могут выполнять построчные операции: (row sum, row average, row standard deviation) сумма строки, среднее число строки, среднеквадратичное отклонение строки, и т.д

Команды оценки

Все команды оценки используют один и тот же синтаксис. Множественные команды оценки уравнений используют eqlist (список уравнения), а не varlist, где уравнения определяются при помощи команды eq.

Команды оценки могут распечатывать доверительные интервалы для коэффициентов и теста для большинства наиболее часто встречающихся гипотез. Предсказанные значения и остаточные значения могут быть получены после любой из команд оценки при помощи команды predict.  Для нелинейных оценочных функций, команда predict  будет также давать другую статистику (например логарифм отношения шансов в рамках логистической регрессии).

Робастные оценки (Huber/White) ковариантной матрицы также доступны почти для всех команд оценки, при помощи опции robust.

Краткий обзор наиболее часто используемых команд.

Теперь давайте опишем несколько категорий команд и возможностей, которые Stata предоставляет для манипулирования данными, статистикой и графикой. Некоторые манипуляционные команды, которые Вы должны знать:

help

подсказка для определенной команды

findit

информация по ключевому слову или теме

ssc

доступ к подпрограммам архива SSC

log

запись информации о выполнении программы во внешней файл,

generate

создание новой переменной

replace

модификация существующей переменной

sort

изменение порядка сортировки в наборе данных

соmpress

экономия места используемых переменными.

Команды манипулирования данными:

append

комбинирование наборов данных путем размещения одного под другим

merge

слияние наборов данных

encode

создание численной переменной из качественной переменной

recode

перекодировка качественной переменной destring превращение строковой переменной в набор цифр

tab

сокращение от слова tabulate: используется для составления 1- и 2- мерных таблиц

tabl

таблица суммарной статистики

for

повторение команды Stata со списком переменных, списком цифр или другим списком

foreach

цикл повтора элементов в списке

forvalues

цикл повторов для значений в списке

while

повтор со счетчиком

local

определение или модификация локальной макро переменной.

Команды манипуляции данными:

use

загрузить набор данных Stata

save

сохранить содержимое памяти в набор данных Stata

insheet

загрузить текстовый файл в формате, разделенного табуляцией или запятыми

infile

загрузить текстовый файл разделенный пробелами или в соответствии с определениями в словаре

outfile

записать текстовый файл в формате, разделенным пробелами или разграниченный запятой outsheet записать текстовый файл в формате, разделенным знаками табуляции или разграниченным запятой

clear

очистить память

drop

стереть определенные переменные и-или наблюдения

keep

оставить в памяти только определенные переменные и-или наблюдения

rename

изменить имя переменных

renvars

изменить имя группы переменных,

contract

создать набор данных из частот

collapse

создать набор данных суммарной статистики.

pwd

распечатать содержимое рабочей директории

cd

изменить рабочую директорию

iis

определить индикатор наблюдения для панельных данных

tis

определить индикатор времени для панельных (логитивных) данных

tsset

определить временной показатель для временных серий

quietly

не демонстрировать результаты команды

exit

выйти из программы (, clear, если набор данных не сохранен)

Полезные статистические команды:

summarize

описательная статистика,

correlate

корреляционная матрица

ttest

выполнение парного t-теста и t-теста с 1 -,и 2-группами

anova

1-факторный , 2 -х факторный, n-факторный дисперсионный анализ

regress

регрессия по методу наименьших квадратов

predict

описать остаточные значения и другие регрессионные показатели

test

протестировать гипотезу о линейности связи параметров

lincom

линейные комбинации параметров

cnsreg

регрессия с линейными ограничениями

testnl

протестировать нелинейную гипотезу по данным параметра

ivreg

инструментальная регрессия по переменным

prais

регрессия с ошибками AR (1).

sureg

кажущаяся несвязанная регрессия

reg3

трехстадийная регрессия по методу наименьших квадратов

probit

биноминальная оценка по probit

logit

биноминальная оценка logit регрессии

tobit

tobit регрессия

cnreg

цензурированная нормальная регрессия

mfx

нелинейная оценка с краевыми значениями

glm

общая линейная модель

heckman

модель отбора по Хекману

oprobit

упорядоченная probit регрессия

ologit

упорядоченная logit регрессия

qreg

квантильная регрессия, включая медианную регрессию.

Полезные статистические команды:

Команды "хt" для оценки панельных данных, такие как:

хtreg, fe

оценка с фиксироваными значениями

хtreg, re

оценка со случайными функциями

хtgls

генерализованные методы наименьших квадратов для панельных данных

хtlogit

logit модели для панельных данных

хtpois

Пуассоновская регрессия для панельных данных

хtgee

модели с панельными данными, с использованием генерализованных уравнений оценки

Существуют также команды "svy" для работы со сложными данными опросов, включающими стратификицию.

Полезные статистические команды:

Команды для анализа временных серий, таких как:

arima

модели по Box - Jenkins

arch

модели aуторегрессивные, с условной гетероседаксичностью.

Нелинейные команды оценки, такие как:

simulate

оценки по Монте-Карло,

bstat

выборки

mfx

краевые эффекты, адаптационные способности, и т.д.

nl

нелинейные наименьшие квадраты

ml

оценка по методу максимального правдоподобия.

Графика:

histogram rep78/  приведет к созданию гистограммы данной качественной переменной

scatter price mpg  приведет к появлению диаграммы рассеяния Y против X, точки могут быть помечены следующим образом:

scatter price mpg if foreign = =l,mlabel(make)

любое количество двухмерных диаграмм рассеяния может быть создано одной командой с использованием модификатора:

scatter price mpg if rep78! = .,by ( rep78)

можно также легко комбинировать диаграмму рассеяния с линейным графиком, например с предсказаниями из регрессии следующим образом:

regress mpg weight 
predict prediction, xb
scatter mpg weight || line prediction weight, pstyle (p1) 

Графики могут быть также легко скомбинированы в один единственный график для презентационных целей. Например:

histogram trunk, saving (gl,replace)
scatter price mpg, by (foreign) saving(g2,replace)
scatter wt length || line what length,pstyle(p1) saving(g3,replace)
graph combine g1.gphg2.gphg3.gph,ti("Some exploratore aspects of auto.dta")

А теперь давайте пройдем через некоторый анализ нетривиальных наборов данных Stata. Список свыше 100 наборов данных, которые подходят для использования студентами можно обнаружить на странице:

Http: // fmwww.bc.edu/ec-p/data/ecfindata.html

Давайте посмотрим на данные Zvi Griliches, которые использовались в его статье 1976 года по заработной плате молодых людей (J.Political Economy 84, S69- S85). Это данные одномоментного изучения 758 человек, которые были собраны на протяжении нескольких лет.

* StataIntro: 
use http://fmwww.bc.edu/ec-p/data/hayashi/griliches76.dta, clear describe 

summarize
label define ur 0 rural 1 urban 
label values smsa ur 
tab smsa 
tab mrt smsa, chi2 
ttest med,by(smsa)
anova lw mrt smsa 
anova lw mrt smsa mrt*smsa
anova,regress 
regress lw tenure kww smsa 
predict lweps,resid 
scatter lweps kww
sort smsa 
scatter lweps kww,by(smsa) 
bysort year: regress lw tenure kww smsa gen medrural = med*(smsa==0) 
gen medurban = med*(smsa==1) regress lw tenure kww medurban medrural test 
medurban=medrural

Следующий пример считывает набор данных индекса Dow-Jones , делает графическое изображение на каждый день, а затем выполняет анализ .

use http://fmwww.bc.edu/ec-p/data/micro/ddjia.dta, clear desc 
summ 
tsset 
scatter ret day, msymbol(p) mcolor(red) foreach v of varlist djia ldjia ret {dfgls ‘v’ }
regress ret L(1/3).ret regress ret L(1/3).ret, robust durbina, force archlm, lags(20) force predict eps,resid 
wntestq ep