Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие стат.pdf
Скачиваний:
18
Добавлен:
20.02.2016
Размер:
377.76 Кб
Скачать

2.3 Анализ

Подготовка

В принципе, данные можно поначалу записывать и в привычном “Экселе”. Самое главное — помнить о том, как обычно организованы данные для исследования:

Панельные Каждая колонка — отдельная переменная, например: пол, возраст, образование. Каждая строка — отдельный объект (человек, страна, фирма: Аня, Петя, Вася).

Имя

Пол

Возраст

Образование

 

 

 

 

Аня

Ж

14

незаконченное среднее

 

 

 

 

Петя

М

15

незаконченное среднее

 

 

 

 

Вася

М

24

высшее

 

 

 

 

Временные ряды Каждая колонка — отдельная дата. В строках — переменные. Показываем, как они изменялись с течением времени (к примеру, цена акций).

Акция

12.02.

14.02.

16.02

 

 

 

 

Газпром

23

25

23

 

 

 

 

Лукойл

1

1,5

0.6

 

 

 

 

Роснефть

126

175

145

 

 

 

 

Теперь таблицу без особых проблем можно вставить в Stata. Одна проблема — она не поддерживает запятую для отделения десятичной части. Решается вопрос так:

destring (список переменных), replace dpcomma

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

encode (список переменных)

Мы не будем рассматривать здесь, как работать в “Стате” и как там все организовано — для этого есть туториалы и книги, указанные выше. Будем считать, что вы уже там освоились и понимаете, что строки выше — это команды.

9

Регрессионный анализ

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

sysuse auto.dta

Некоторые полезные команды:

Команда

Что делает

 

 

describe

Описывает данные: какие переменные,

 

сколько наблюдений

 

 

list

Перечисляет наблюдения по заданным

 

условиям

 

 

codebook

Выдает разные характеристики

 

переменных

 

 

summarize

То же самое — мин, макс, среднее,

 

стандартное отклонение

 

 

histogram

Рисует гистограмму для переменной

 

 

kdensity

Рисует график плотности для

 

переменной (более наглядно)

 

 

graph box

Рисует boxplot (“усатый график”) для

 

переменной

 

 

stem

Рисует график “ветви и листья” для

 

переменной

 

 

count

Считает число наблюдений по

 

заданным условиям

 

 

graph matrix

Рисует матричный график для

 

выбранных переменных

 

 

С помощью команды regress (регрессия) посмотрим, как цена автомобиля зависит от объема багажника, места производства (иномарка/отечественная), веса, длины и максимальной скорости.

regress price trunk foreign weight length mpg

Получим вот такую таблицу:

10

Source

 

SS

df

 

MS

 

 

Num er of obs

 

 

74

T t

635065396

73.

69755446978699

 

Probt

MSE524

68)

=

20944921.

ResiduModeal

348777232

5

 

 

.5

 

F(

5,

16.57

 

 

 

 

> F

 

 

0000

286288164

68

4210120.06

 

R-squared

 

 

.5

61

ice

- .

 

.

 

-

 

 

Adj-174R-squared.

 

 

fore

355

08

2

3934

 

5.

0.000

 

 

 

 

7 851

Статистикаwlpticonsunkmpggnhtth

R squared9010.70950153Coef47521.. 47.23

( Std82367254312)21320244866.показывает,Err276. 02 t5741399

насколькоP>|t|89985332815 [95%3542235.6366наше.Conf625484018.7683.уравнениеInterval]-487153.76..85.5.3211.34783

 

 

2

 

 

 

0

 

 

8

 

 

 

 

описывает вариацию данных Лучше всего, если он близок к единице. Coef. показывает коэффициент, стоящий при переменной в регрессионном уравнении. Самая важная для нас часть — P>|t| Если она меньше принятого нами уровня значимости (обычно 0.05), то переменная не оказывает никакого воздействия на наш Y (то есть цену). В данном случае мы видим, что цена зависит от места производства (выше если иномарка), веса и длины автомобиля. Коэффициент, кстати, уже показывает воздействие при фиксированных остальных переменных.

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

predict имя_новой_переменной

 

 

Или остатки:

 

 

 

predict имя_новой_переменной, residual

 

Можно построить точечный график зависимости нашего Y от какого-

нибудь Х, например, веса автомобиля:

 

 

scatter price weight

 

 

 

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

twoway (scatter price weight) (lfit price weight)

Получим такой вот график:

 

 

 

15,000

 

 

 

10,000

 

 

 

5,000

 

 

 

0

 

 

 

2,000

3,000

4,000

5,000

 

Weight (lbs.)

 

 

Price

Fitted values

11

Наглядно видим, что цена действительно зависит от веса, хотя

разброс значений довольно большой. Кроме того, можно построить

график частичной корреляции цены от веса (при фиксированных

остальных переменных):

 

 

 

avplot weight

 

 

 

10000

 

 

 

) 5000

 

 

 

e( price | X

 

 

 

0

 

 

 

-5000

0

500

1000

-500

 

e( weight | X )

 

 

coef = 5.7095013, se = 1.0247599, t = 5.57

 

 

Трансформация переменных

Чтобы регрессионное уравнение имело смысл, желательно, чтобы переменные были нормально распределены. Посмотрим, что у нас происходит с ценой автомобиля:

kdensity price, normal

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

Density 0 .0001 .0002 .0003

Kernel density estimate

0

5000

10000

15000

20000

 

 

 

 

Price

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Kernel density estimate

 

 

 

 

 

 

 

 

 

 

 

 

Normal density

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

kernel = epanechnikov, bandwidth = 605.6424

 

 

 

На нормальное не очень похоже. Или можно построить вот такой тестовый график:

12

qnorm price

Price 0 5,000 10,000 15,000

0

5,000

10,000

15,000

Inverse Normal

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

 

ladder price

 

 

 

 

 

 

Она выдает такую вот таблицу:

 

 

 

 

 

 

 

 

 

 

 

 

Transformation

formulaprice^

chi2(2)

P(chi2)

 

square

log(price)ice^

6

77

37

разделить на

1/

 

0.000

 

 

1/

21.7

Смотрим,cubicidentityloginve(squasquarecubicse oote root)где самаяsqrt(price)t(price)маленькая32 23)

статистика44335041 984962157chi2 — один41695

цену в квадрате. Проверим графически: gladder price

05.0e1-.130e1-.125e2-.120e-12

 

cubic

square

0 1.0e-204.0e-304.0e-04

 

50.0e1.-0e91.-5e082.-0e82.-5e08-08

 

0

1.00e+12.00e+123.00e+124.00e+12

0 5.00e+071.00e+081.50e+082.00e+082.50e+08

0

identity

 

5000

10000

15000

sqrt

Density

.01.02 .03 04.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

60

80

100

120

140

 

0 2000400060008000

 

 

 

 

 

inverse

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-.0003-.00025-.0002-.00015-.0001-.00005

log

2

 

 

 

 

 

 

 

 

 

 

 

 

1.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

8.5

9

9.5

10

05.60e+1.e+071.75e+2.0e+07

 

 

 

1/square

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-1.00e--807.00e--608.00e--408.00e--208.00e-08 0

 

1/sqrt

 

50100150200

 

 

0

 

 

 

-.018 -.016 -.014 -.012 -.01 -.008

02.0e+104.0e+106.0e+108.0e+10

1/cubic

 

 

 

-3.00e-11-2.00e-11-1.00e-11

0

Price

Histograms by transformation

13

Не совсем очевидно, но преобразование вроде бы подходит.

Создаем новую переменную и проверяем ее на нормальность:

generate price2 = 1/(price^2)

 

 

kdensity price2, normal

 

 

 

Действительно, все гораздо лучше:

 

 

 

Density 5000000100000001500000020000000

Kernel density estimate

 

 

 

 

 

 

0

 

 

 

 

0

2.000e-08 4.000e-08

6.000e-08

8.000e-08

1.000e-07

 

price2

 

 

 

Kernel density estimate

Normal density

kernel = epanechnikov, bandwidth = 8.236e-09

Снова прогоняем регрессию, заменив price нa price2:

regress price2 trunk foreign weight length mpg

 

 

 

 

 

 

 

 

 

 

 

Num er of obs

 

 

74

 

 

 

 

 

 

 

 

 

 

 

 

 

Source

 

SS

df

 

MS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ResiduMode

1.598196 -14

68

2.35236396 -1

 

 

 

F(

b5, 68)

=

1 .47

 

5

 

-squared

 

 

0.0000322

 

T t

3

8

5

3

841e

 

 

> F

 

 

5

-

 

 

73

4

 

 

 

Probt MSE

 

 

1

8

al

2 4

1

 

1

 

48

 

4

 

 

36e

1

 

 

 

 

 

6

 

AdjR

R-squared

 

497808

 

 

4 6

 

66

 

0

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

price2

 

 

 

 

 

 

 

618

- .1 e-00

- .

 

-

 

 

 

 

3e-

 

- .

 

 

0.00

 

[95%1381 значимость67009976e42Conf08981 . Interval]7296 83027480eкак297 пе-

 

 

-

. 5e

 

 

 

 

 

 

 

- .

4e

 

 

 

 

 

 

 

Интересныеfowltrunkeignhtconsmpgth 4319 0130728новости:Co4 f0808.1 Std647254 1957430длина. Err09082. потеряла632 t722503 P>|t|47336свою0

ременная. Для более тщательного контроля стоит проверить на нормальность все переменные.

Диагностика регрессии

Хорошая множественная линейная регрессия должна удовлетворять следующим требованиям:

Линейность Зависимость между Y и X должна быть линейной.

Нормальность Ошибки (остатки) должны быть нормально, одинаково и независимо распределенны.

14

Гомоскедастичность Или однородность дисперсии: дисперсия ошибок должна быть постоянной.

Независимость Ошибки одного наблюдения не должны коррелировать с ошибками другого.

Ошибки в переменных Все иксы должны быть измерены без ошибок.

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

Бонус Желательно, если в данных не будет непонятных выбросов (далеких точек, которые портят всю картину) и отсутствует мультиколлинеарность (когда один X зависит от другого).

Итак, начнем с нормальности остатков. Генерируем их в переменную r и проверяем уже привычной командой:

predict r, resid kdensity r, normal

 

30000000

Kernel density estimate

 

 

 

 

 

 

Density

10000000 20000000

 

 

 

 

 

0

 

 

 

 

 

-4.000e-08

-2.000e-08

0

2.000e-08

4.000e-08

 

 

 

Residuals

 

 

Kernel density estimate

Normal density

kernel = epanechnikov, bandwidth = 5.185e-09

Выглядит неплохо, но не идеально. Проверяем еще одной командой:

pnorm r

15

1.00

 

 

 

 

0.75

 

 

 

 

Normal F[(r-m)/s] 0.50

 

 

 

 

0.25

 

 

 

 

0.00

 

 

 

 

0.00

0.25

0.50

0.75

1.00

 

 

Empirical P[i] = i/(N+1)

 

 

Аналогично. Наконец, воспользуемся тестом Шапиро-Уилка:

swilk r

Поскольку величина Prob>z весьма велика (0.81124), то распределение можно назвать нормальным. Хороший знак для нашей регрессии.

Теперь проверяем остатки на гомоскедастичность:

rvfplot, yline(0)

Residuals -4.00e-08 -2.00e-08 0 2.00e-08 4.00e-08

0

2.00e-08

4.00e-08

6.00e-08

8.00e-08

 

Fitted values

 

 

Остатки разбросаны вокруг линии совершенно случайно, так что вряд ли здесь есть гетероскедастичность. На всякий случай прогоняем формальный тест:

estat imtest

Heteroskedasticity

.

16 df1925

.

SkewnesKurtSourceT sistal

25chi2.39

0.p1482

Поскольку величина велика, можно смело заключить, что с регрессией все в порядке.

Тепеь проверяем на мультиколлинеарность. Команда очень короткая (сокращение от variance inflation factor):

vif

ПравилоMeanVariableforeignlwtrunkVIFthhtmpg очень115VIF23.8506114044простое:0.0461/VIF32669092287379816706если VIF больше 10, значит где-то тут

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

Займемся линейностью (lowess — это процедура “локальнолинейного сглаживания”):

twoway (scatter price weight) (lfit price weight) (lowess price weight)

15,000

 

 

 

10,000

 

 

 

5,000

 

 

 

0

 

 

 

2,000

3,000

4,000

5,000

 

Weight (lbs.)

 

 

Price

 

Fitted values

 

lowess price weight

Из графика видно, что на самом деле зависимость не такая уж и линейная. Впрочем, если заменить price на новый price2, то все выглядит несколько лучше. Однако эта методика подходит, когда в нашей регрессии только один Х. Если регрессия множественная, нужно воспользоваться следующим методом:

acprplot weight, lowess

17

plus residual

0 2.00e-08

 

 

 

component -2.00e-08

 

 

 

Augmented

-4.00e-08

 

 

 

 

-6.00e-08

3,000

4,000

5,000

 

2,000

 

 

Weight (lbs.)

 

 

Снова видны отклонения от линейности. Возможно, пробема в том, что вес автомобиля у нас распределено не нормально. Проверим:

kdensity weight, normal

Kernel density estimate

.0005

 

 

 

 

.0004

 

 

 

 

Density 0002 .0003

 

 

 

 

.

 

 

 

 

.0001

 

 

 

 

0

 

 

 

 

1000

2000

3000

4000

5000

 

 

Weight (lbs.)

 

 

Kernel density estimate

Normal density

kernel = epanechnikov, bandwidth = 295.7504

Действительно, у нас имеются два ярко выраженных “горба” — два класса автомобилей. Возможно, для каждого из них лучше делать собственную регрессию.

Теперь посмотрим на спецификацию модели:

linktest

Source

 

SS

df

 

MS

 

 

Num er of obs

=

 

74

ResiduMode

1.598196 -14

2

2.2216

-1

 

F( b1,

72)

81.91

 

-squared

 

 

0.0000322

T t

3

8

1

1

8198

4

 

Probt

> F

 

 

.12

- 8

 

3

4

6841e

.0

.000

MSE

 

 

al

 

4 Coe4e

7

 

 

6

 

AdjR

R-squared

 

 

5257

price2hatsqcons

(omitt-5.63e-fd)17.

Std.41104898.67e.Err-09. -1890 t50

P>|t|01

-[95%.97797426.32eConf-09 .

Interval]19 23 0257e-09