\chapter{Что такое набор данных?}
\label{chap:dataset}

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

Пользователи \app{R} могут подумать, что набор данных похож на то, что
вы получаете, когда присоединяете фрейм данных с помощью
\texttt{attach} в \app{R}. На самом деле в Hansl нельзя одновременно
открывать более одного набора данных. Вот почему мы говорим о наборе
данных.

Когда набор данных присутствует в памяти (то есть «открыт»), ряд
объектов становится доступным для вашего скрипта Hansl и вы можете с
ними работать прозрачным и удобным способом. Конечно, сами данные вот
какие: столбцы матрицы набора данных называются сериями, которые будут
описаны в разделе \ref{sec:series}; иногда вам может понадобиться
организовать одну или несколько серий в список (раздел
\ref{sec:lists}). Кроме того, у вас есть возможность использовать
некоторые скаляры или матрицы, такие как количество наблюдений,
количество переменных, характер вашего набора данных (поперечные
сечения, временные ряды или панель) и т. д., все это переменные,
доступные только для чтения. Они называются аксессорами (accessors) и
будут обсуждаться в разделе \ref{sec:accessors}.

Вы можете открыть набор данных из файла на диске, с помощью команды
\cmd{open} или создав его с нуля.

\section{Создание набора данных с нуля}

Основными командами в этом контексте являются \cmd{nulldata} и
\cmd{setobs}. Например:

\begin{code}
set echo off
set messages off

set seed 443322           # инициализировать генератор случайных чисел
nulldata 240              # определить длину серий
setobs 12 1995:1          # определить выборку как ежемесячный набор данных с 1.1995г   
\end{code}
Для получения дополнительной информации о командах \cmd{nulldata} и
\cmd{setobs} см. Руководство пользователя Gretl и Справочник по
командам Gretl. Однако на этом этапе важно сказать, что при
необходимости вы можете изменить размер своего набора данных и/или
некоторые его характеристики (такие как периодичность) практически в
любой точке внутри вашего скрипта.  Как только ваш набор данных будет
определен, вы можете начать заполнять его сериями, или открывая их из
файлов, или создавая их с помощью соответствующих команд и функций.

\section{Чтение набора данных из файла}

Основные команды здесь: \cmd{open}, \cmd{append} и \cmd{join}. Команда
\cmd{open} --- это то, что вы хотите использовать в большинстве
случаев. Открываются самые различные форматы (собственный, CSV,
электронные таблицы, файлы данных, созданные другими пакетами, такими
как \textsf{Stata}, \textsf{Eviews}, \textsf{SPSS} и \textsf{SAS})), а
также автоматически настраиваются наборы данных под ваши нужды.

\begin{code}
  open mydata.gdt    # native format
  open yourdata.dta  # Stata format
  open theirdata.xls # Excel format
\end{code}

Команду \cmd{open} также можно использовать для чтения материалов из
Интернета, используя URL-адрес вместо имени файла, как в
\begin{code}
  open http://someserver.com/somedata.csv
\end{code}

В Руководстве пользователя Gretl описаны требования к файлам данных с
открытым текстом типа «CSV» для прямого импорта в gretl. Там также
описаны собственные форматы данных gretl (двоичные и основанные на
XML).

Команды \cmd{append} и \cmd{join} могут использоваться для добавления
последующих серий из файла в ранее открытый набор данных. Команда
\cmd{join} очень гибкая, поэтому ей посвящена отдельная глава в
Руководстве пользователя Gretl

\section{Сохранение наборов данных}

Команда \cmd{store} используется для записи текущего набора данных
(или подмножества) в файл. Помимо записи в собственные форматы gretl,
\cmd{store} также можно использовать для экспорта данных в формате CSV
или в формате \textsf{R}. Серии могут быть записаны в виде матриц с
помощью функции \cmd{mwrite}. Если у вас есть особые требования,
которые не выполняются функциями \cmd{store} или \cmd{mwrite}, можно
использовать \cmd{outfile} и \cmd{printf} одновременно (см. главу
~\ref{chap:formatting}), чтобы получить полный контроль над способом
сохранения данных.

\section{Команда \cmd{smpl}}

После того, как вы открыли набор данных каким-либо из
вышеперечисленных способов, команда \cmd{smpl} позволяет выборочно
отбрасывать наблюдения, так что ваша серия будет содержать только те
наблюдения, которые вы хотите в ней видеть (в процессе произойдет
автоматическое изменение размера набора данных). Дополнительную
информацию см. в главе 4 Руководства пользователя
Gretl.\footnote{Пользователей, имеющих опыт работы со Stata, может
  сначала смутить способ делать аналогичные операции в Hansl. Здесь вы
  сначала ограничиваете свою выборку с помощью команды \cmd{smpl},
  которая применяется до дальнейших инструкций, затем вы делаете то,
  что нужно. В Hansl не существует эквивалента \texttt{if} команде в
  Stata. }  Существует три основных варианта команды \cmd{smpl}:

\begin{enumerate}
\item Выбор непрерывного подмножества наблюдений: это будет в основном
  полезно для наборов данных временных рядов. Например:

  \begin{code}
    smpl 4 122            # select observations for 4 to 122
    smpl 1984:1 2008:4    # the so-called "Great Moderation" period
    smpl 2008-01-01 ;     # from January 1st, 2008 onwards
  \end{code}
\item Выбор наблюдений на основе некоторого критерия: это обычно то,
  что вам нужно делать с наборами данных поперечного сечения. Пример:
  \begin{code}
    smpl male == 1 --restrict                # males only
    smpl male == 1 && age < 30 --restrict    # just the young guys
    smpl employed --dummy                    # via a dummy variable
  \end{code}
  Обратите внимание, что в этом контексте новые ограничения
  накладываются на предыдущие. Чтобы начать с нуля, вы либо полностью
  должны сбросить образец через \texttt{smpl full} или использовать
  параметр \option{replace} вместе с \option{restrict}.
\item Ограничение активного набора данных некоторыми наблюдениями,
  чтобы определенный эффект достигался автоматически: например,
  создание случайной подвыборки или автоматическое исключение всех
  строк с отсутствующими наблюдениями. Это достигается с помощью опций
  \option{no-missing}, \option{contiguous}, и \option{random}.
\end{enumerate}

Для работы с панельными данными необходимо сделать некоторые
дополнительные уточнения; см. руководство пользователя Gretl.

\section{Аксессоры набора данных}
\label{sec:accessors}

Некоторые характеристики текущего набора данных можно определить с
помощью встроенного аксессора переменных (знак «доллар»). Основные из
них, которые возвращают скалярные значения, перечислены в Таблице
~\ref{tab:dataset-accessors}.

\begin{table}[htbp]
  \centering
  \begin{tabular}{lp{0.7\textwidth}}
    \textbf{Аксессор} & \textbf{Возвр.значение} \\ \hline
    \verb|$datatype| & Кодирование для типа набора данных: 
    0 = нет данн.; 1 = попереч.сечен. (недатиров.); 2 = врем.ряды;
    3 = panel \\
    \verb|$nobs| & Количество наблюдений в текущем
    диапазоне выборки \\
    \verb|$nvars| & Количество серий (включая константу)\\
    \verb|$pd| & Частота данных (1 для попереч.сечен., 4 для квартальных, и т.д.) \\
    \verb|$t1| & Основан. на единице индекс первого наблюдения в текущ. выборке \\
    \verb|$t2| & Основан. на единице индекс последнего наблюдения в текущ. выборке \\
    \hline
  \end{tabular}
  \caption{Основные аксессоры набора данных}
  \label{tab:dataset-accessors}
\end{table}
Кроме того, есть еще несколько специализированных средств доступа:
\dollar{obsdate}, \dollar{obsmajor}, \dollar{obsminor},
\dollar{obsmicro} и \dollar{unit}. Они относятся к временным рядам
и/или панельным данным, и все они возвращают ряды, см. справочник по
командам Gretl.

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "hansl-primer"
%%% End: 
