Выбор наилучшей регрессии. Пошаговая регрессия

Страницы работы

11 страниц (Word-файл)

Фрагмент текста работы

Министерство Образования Российской Федерации

Новосибирский Государственный Технический Университет

Курсовая работа по курсу:

 ”Методы планирования и анализа данных в

экономических и социологических исследованиях”

на тему: “Выбор наилучшей регрессии. Пошаговая регрессия”

Факультет: ПМИ

Группа: ПМ-03

Студенты: Лопарев С.

Преподаватели: Еланцева И.Л.

Новосибирск 2004

Цель работы:

Изучение метода пошаговой регрессии.

Задание :

Реализовать алгоритм пошаговой регрессии, протестировать данный алгоритм.

Описание метода:

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

Проверка гипотезы   - это проверка гипотезы о незначимости i-фактора. Для введения регрессора в модель будем использовать следующее значение F – отношения:

, а для выведения регрессора из модели будем использовать следующее значение F – отношения:

.

О выбора значений F:

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

Разработка программы

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

В файле y.txt значения отклика, в файле F.txt значение .

На выходе программы файл result.txt, в котором номера регрессоров в полученной модели и значения параметров  .

Для тестирования программы была выбрана исходная постановка задачи:

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

1

58,8

7107

21

129

52

3067

2

65,2

6373

22

141

68

2828

3

70,9

6796

22

153

29

2891

4

77,4

9208

20

166

23

2994

5

79,3

14792

25

193

40

3082

6

81,0

14564

23

189

14

3898

7

71,9

11964

20

175

96

3502

8

63,9

13526

23

186

94

3060

9

54,5

12656

20

190

54

3211

10

39,5

14119

20

187

37

3286

11

44,5

16691

22

195

42

3542

12

43,6

14571

19

206

22

3125

13

56,0

13619

22

198

28

3022

14

64,7

14575

22

192

7

2922

15

73,0

14556

21

191

42

3950

16

78,9

18573

21

200

33

4488

17

79,4

15618

22

200

92

3295

Где    - среднемесячная температура, ,

- количество продукции, фунты,

- число рабочих дней в месяце,

- численность занятых на производстве рабочих,

- случайная составляющая,

- месячное потребление воды, галлоны.

Данные были взяты в книге:

[1]     Н. Дрейпер, Г.Смит. Прикладной регрессионный анализ: В 2-х томах. Том  2. – М: Финансы и статистика. 1987.

Тест № 1

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

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

Тест № 2

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

Вывод

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

Однако оба этих метода могут приводить к разным моделям.     

Приложение

> restart:

> with(linalg):

with(plots):

> fd:=fopen("regress.txt",READ):

> m:=op(1,fscanf(fd,"%f")):

n:=op(1,fscanf(fd,"%f")):

> x1:=vector(n):

x2:=vector(n):

x3:=vector(n):

x4:=vector(n):

x5:=vector(n):

y:=vector(n):

> for i from 1 to n do

     x1[i]:=op(1,fscanf(fd,"%f"));

     x2[i]:=op(1,fscanf(fd,"%f"));

     x3[i]:=op(1,fscanf(fd,"%f"));

     x4[i]:=op(1,fscanf(fd,"%f"));

     x5[i]:=op(1,fscanf(fd,"%f"));

     y[i]:=op(1,fscanf(fd,"%f"));od:

> close(fd);

> fd:=fopen("F.txt",READ):

F0:=op(1,fscanf(fd,"%f"));od:

close(fd);

> Cp:=vector(m):

Rs:=vector(m):

AEV:=vector(m):

Ep:=vector(m):

> fcp:=(RSSp,sigma,p,n)-> RSSp/sigma+2*p-n;

> fep:=(RSSp,p,n)->(1+n+p*(n+1)/(n-p-2))*RSSp/(n*(n-p));

> faev:=(RSSp,p,n)-> p*RSSp/(n*(n-p));

> y_avg:=add(y[i],i=1..n)/n:

centr:=add((y[i]-y_avg)^2,i=1..n):

> frs:=(yy)-> add((yy[i]-add(yy[i],i=1..n)/n)^2,i=1..n)/centr;

> f:= (i,j) ->

     if (j=1) then x1[i]

     else if (j=2) then x2[i]

          else if (j=3) then x3[i]

               else if (j=4) then x4[i]

                    else if (j=5) then x5[i]

                         end if

                    end if

               end if

          end if

     end if:

> X:=matrix(n,m,f):

> Xt:=transpose(X):

> thetaMNK:=evalm(evalm(inverse(evalm(Xt &* X)) &* Xt) &* y);

> yt:=evalm(X &* thetaMNK):

> RSST:=evalm(transpose(evalm(y-yt)) &* evalm(y-yt));

> sigma:=RSST/(n-m);

> Cp[1]:=fcp(RSST,sigma,m,n);

Rs[1]:=frs(yt);

Ep[1]:=fep(RSST,m,n);

AEV[1]:=faev(RSST,m,n);

> F:=vector(m):

RSS:=vector(m):

> f1:= (i,j) ->

     if (j=1) then x2[i]

     else if (j=2) then x3[i]

          else if (j=3) then x4[i]

               else if (j=4) then x5[i]

                    end if

               end if

          end if

     end if:

> X:=matrix(n,m-1,f1):

Xt:=transpose(X):

thetaMNK:=evalf(evalm(evalm(inverse(evalm

Информация о работе