Добавил:
north memphis Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИДЗ_3 / STATAN_IDZ_3

.pdf
Скачиваний:
1
Добавлен:
24.12.2024
Размер:
366.04 Кб
Скачать

Практическая работа №3 Регрессионный анализ

Выполнил студент . Вариант №11

Цель работы

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

Постановка задачи

Результаты статистического эксперимента приведены в таблице 1. Требуется оценить характер (случайной) зависимости переменной

от .

 

1.

Построить графически результаты эксперимента. Сформулировать линейную регрессионную модель переменной

по переменной

. Построить МНК-оценки параметров сдвига

и масштаба .

 

Построить полученную линию регрессии. Оценить визуально соответствие полученных данных и построенной оценки.

 

 

 

2.

Построить и интерпретировать несмещенную оценку дисперсии. На базе ошибок построить гистограмму с шагом

. Проверить гипотезу нормальности ошибок на уровне значимости

по . Оценить

3.

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

. Построить доверительный эллипс уровня доверия

 

В предположении нормальности ошибок построить доверительные интервалы для параметров

и

уровня доверия

для

 

(вычислить его полуоси).

 

 

 

 

 

 

 

4.

Сформулировать гипотезу независимости переменной от переменной . Провести проверку значимости.

 

 

 

 

5.

Сформулировать модель, включающую дополнительный член (полковник бустеренко) с

. Построить МНК-оценки параметров

в данной модели. Изобразить графически полученную

 

регрессионную зависимость.

 

 

 

 

 

 

 

6.

Построить несмещенную оценку дисперсии. Провести исследование нормальности ошибок как в п.2.

 

 

 

 

 

7.

В предположении нормальности ошибок построить доверительные интервалы для параметров

 

уровня доверия

. Написать уравнение доверительного эллипсоида уровня доверия

 

.

 

 

 

 

 

 

 

8.

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

и проверить ее значимость на уровне .

 

In [1]: #Таблица 1

from IPython.display import Image Image('3-1.png')

Out[1]:

In [117… table=[[],[]]#table[0]=X; table[1]=Y table[0]=[2,4,3,5,1,0,5,3,3,2,5,1,5,5,4,3,4,3,0,4,1,3,4,1,2,0,6,2,2,6,6,3,3,4,2,1,3,2,0,0,1,4,6,4,4,3,5,4,6,2]

table[1]=[11.25,11.33,11.61,11.93,12.58,13.99,12.41,12.46,12.80,11.48,11.69,11.66,11.56,12.53,11.41,11.70,10.99,11.41,11.36,13.30,11.31,11.84,13.75,11.66,12.95,12.54,12.27,12.07 print(table[0])

print("\n") print(table[1])

[2, 4, 3, 5, 1, 0, 5, 3, 3, 2, 5, 1, 5, 5, 4, 3, 4, 3, 0, 4, 1, 3, 4, 1, 2, 0, 6, 2, 2, 6, 6, 3, 3, 4, 2, 1, 3, 2, 0, 0, 1, 4, 6, 4, 4, 3, 5, 4, 6, 2]

[11.25, 11.33, 11.61, 11.93, 12.58, 13.99, 12.41, 12.46, 12.8, 11.48, 11.69, 11.66, 11.56, 12.53, 11.41, 11.7, 10.99, 11.41, 11.36, 13.3, 11.31, 11.84, 13.75, 11.66, 12.95, 12.5 4, 12.27, 12.07, 12.09, 12.21, 11.91, 13.29, 11.77, 11.83, 13.59, 13.18, 12.57, 14.1, 13.8, 13.34, 11.43, 11.47, 12.96, 11.95, 13.67, 12.6, 13.05, 13.82, 12.28, 10.98]

Выполнение работы

Каждый пункт работы выполняется с помощью кода.

Задание 1

Результаты эксперимента:

In [118… import matplotlib.pyplot as plt import numpy as np

x = np.array(table[0]) y = np.array(table[1])

plt.scatter(x, y,color="blue") plt.show()

Линейная регрессионная зависимость:

Матричный вид:

МНК-оценка строится по формуле

, где и - матрицы значений

In [119… import numpy as np X=[[],[]]

Y=[]

for i in range(len(table[0])): X[0].append(1) X[1].append(table[0][i]) Y.append([]) Y[i].append(table[1][i])

A=np.array(X)

B=np.array(Y)

transposed=A.T print(np.dot(np.dot(np.linalg.inv(np.dot(A,transposed)),A),B))

[[12.45340431]

[-0.04565931]]

Отсюда получаем, что

In [120… import matplotlib.pyplot as plt import numpy as np

x = np.array(table[0]) y = np.array(table[1])

plt.scatter(x, y, color="blue")

yi=[[],[]]

for i in range(len(table[0])): yi[0].append(table[0][i]) yi[1].append(table[0][i]*(-0.0456)+12.4534)

plt.plot(yi[0],yi[1],color="red")

plt.show()

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

Задание 2

Несмещенная оценка дисперсии строится согласно формуле:

, где

In [121… beta0=12.4534 beta1=-0.0456 rss=0

for i in range(len(table[0])): rss+=(table[1][i]-(beta0+(beta1*table[0][i])))**2

print(rss/(50-2))

0.7653080483333333

Отсюда получаем, что несмещенная оценка равна

Гистограмма ошибок:

In [122… beta0=12.4534 beta1=-0.0456 e=[]

for i in range(len(table[0])): e.append((table[1][i]-(beta0+(beta1*table[0][i]))))

e=sorted(e) print(e)

[-1.3821999999999992, -1.2810000000000006, -1.1121999999999996, -1.0977999999999994, -1.0934000000000008, -0.9778000000000002, -0.9410000000000007, -0.906600000000001, -0.8821999

999999992, -0.8610000000000007, -0.8010000000000002, -0.7477999999999998, -0.7477999999999998, -0.7066000000000017, -0.6654, -0.6166000000000018, -0.5466000000000015, -0.53540000 0000001, -0.47660000000000124, -0.4410000000000007, -0.3210000000000015, -0.2954000000000008, -0.29219999999999935, -0.2721999999999998, -0.26980000000000004, 0.0302000000000006 7, 0.0865999999999989, 0.09019999999999939, 0.10019999999999918, 0.14339999999999975, 0.17220000000000013, 0.18459999999999965, 0.2533999999999992, 0.28339999999999854, 0.3045999 9999999887, 0.4833999999999996, 0.5877999999999997, 0.7721999999999998, 0.7802000000000007, 0.8246000000000002, 0.8865999999999996, 0.973399999999998, 1.029, 1.2278000000000002, 1.3466000000000005, 1.3989999999999991, 1.4789999999999992, 1.5366, 1.5489999999999995, 1.7378]

In [13]: #Гистограмма

from IPython.display import Image Image('3-3.png')

Out[13]:

Проверка гипотезы нормальности ошибок:

Исходные данные:

In [29]: #Таблица 2

from IPython.display import Image Image('3-4.png')

Out[29]:

Отсюда получаем, что гипотеза

- подходит.

По Колмогорову:

In [123… import math

from scipy.stats import norm F=[]

F0=[] diff=[] s=0.7653

for i in range(len(e)): F.append(0.02*(i+1)) F0.append(norm.cdf(e[i])) diff.append(abs(F[i]-F0[i]))

print(max(diff))

#https://medstatistic.ru/methods/methods10.html

0.10634293858907695

Отсюда получаем, что

In [124… import matplotlib.pyplot as plt import numpy as np

a = np.array(F) b = np.array(F0)

plt.scatter(e,a, color="blue") plt.scatter(e,b, color="red")

plt.show()

Задание 3

Исходные данные:

Для :

, где

In [125… c=np.array([[1],[0]])

temp=(np.linalg.inv(np.dot(A,A.T)))

print(np.dot(np.dot(c.T,temp),c))

[[0.07927142]]

Отсюда получаем, что

, где

- распределение Стьюдента с

степенями свободы.

Для :

, где

In [68]: c=np.array([[0],[1]])

temp=(np.linalg.inv(np.dot(A,A.T)))

print(np.dot(np.dot(c.T,temp),c))

[[0.00641355]]

Отсюда получаем, что

, где

- распределение Стьюдента с

степенями свободы.

Доверительный эллипс:

, где

In [70]: c=np.array([[1,0],[0,1]])

temp=(np.linalg.inv(np.dot(A,A.T)))

print(np.dot(np.dot(c.T,temp),c)) print(np.linalg.inv(np.dot(np.dot(c.T,temp),c)))

[[ 0.07927142 -0.01949718]

[-0.01949718 0.00641355]] [[ 50. 152.] [152. 618.]]

Отсюда получаем, что

;

Функция эллипса:

 

Где

 

Отсюда получаем:

 

Полуоси вычисляются согласно формулам:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 4

не зависит от

зависит от

Оценка зависимости:

, где

In [88]: rssh=0 avg=sum(table[1])/50 print(avg)

for i in range(len(table[0])): rssh+=(table[1][i]-avg)**2

print((rssh-rss)/(rss/48))

12.3146

0.42473835301731855

Отсюда получаем, что Критерий:

Для того, что бы принять нулевую гипотизу, нужно потребовать, что бы

.

Задание 5

Добавим :

Матричный вид:

МНК-оценка строится по формуле

, где и - матрицы значений

In [90]: import numpy as np X=[[],[],[]]

Y=[]

for i in range(len(table[0])): X[0].append(1) X[1].append(table[0][i]) X[2].append(table[0][i]**2) Y.append([]) Y[i].append(table[1][i])

A=np.array(X)

B=np.array(Y)

transposed=A.T print(np.dot(np.dot(np.linalg.inv(np.dot(A,transposed)),A),B))

[[12.67803649]

[-0.27709069] [ 0.03874751]]

Отсюда получаем, что

Следовательно:

In [97]: import matplotlib.pyplot as plt import numpy as np

x = np.array(table[0]) y = np.array(table[1])

plt.scatter(x, y, color="blue")

yi=[[],[]]

for i in range(len(table[0])): yi[0].append(table[0][i])

yi[1].append(table[0][i]**2*(0.039)+table[0][i]*(-0.277)+12.678)

plt.scatter(yi[0],yi[1],color="red")

plt.show()

Если провести кривую через красные точки, то можно получить результат

Задание 6

Несмещенная оценка дисперсии строится согласно формуле:

, где

In [101… beta0=12.678 beta1=-0.277 rss=0

for i in range(len(table[0])): rss+=(table[1][i]-(beta0+(beta1*table[0][i])))**2

print(rss/(50-3))

1.202896127659574

Отсюда получаем, что

Гистограмма ошибок:

In [112… beta0=12.678 beta1=-0.277 e=[]

for i in range(len(table[0])): e.append((table[1][i]-(beta0+(beta1*table[0][i]))))

e=sorted(e) print(sum(e)/50)

0.4786799999999992

In [103…

#Гистограмма

 

from IPython.display import Image

 

Image('3-5.png')

Out[103…

 

 

Проверка гипотезы нормальности ошибок:

Исходные данные:

In [105…

#Таблица 3

 

from IPython.display import Image

 

Image('3-6.png')

Out[105…

 

 

Отсюда получаем, что гипотеза

- не подходит.

По Колмогорову:

In [113… import math

from scipy.stats import norm F=[]

F0=[] diff=[] s=1.202

for i in range(len(e)): F.append(0.02*(i+1)) F0.append(norm.cdf(e[i])) diff.append(abs(F[i]-F0[i]))

print(max(diff))

#https://medstatistic.ru/methods/methods10.html

0.21006183013919943

Отсюда получаем, что

In [114… import matplotlib.pyplot as plt import numpy as np

a = np.array(F) b = np.array(F0)

plt.scatter(e,a, color="blue") plt.scatter(e,b, color="red")

plt.show()

Задание 7

Исходные данные:

Для :

, где

In [127… c=np.array([[1],[0],[0]])

import numpy as np

X=[[],[],[]]

Y=[]

for i in range(len(table[0])):

X[0].append(1)

X[1].append(table[0][i])

X[2].append(table[0][i]**2)

Y.append([])

Y[i].append(table[1][i])

A=np.array(X)

B=np.array(Y)

temp=(np.linalg.inv(np.dot(A,A.T)))

print(np.dot(np.dot(c.T,temp),c))

[[0.14230834]]

Отсюда получаем, что

, где

- распределение Стьюдента с

степенями свободы.

Для :

, где

In [129… c=np.array([[0],[1],[0]])

import numpy as np

X=[[],[],[]]

Y=[]

for i in range(len(table[0])):

X[0].append(1)

X[1].append(table[0][i])

X[2].append(table[0][i]**2)

Y.append([])

Y[i].append(table[1][i])

A=np.array(X)

B=np.array(Y)

temp=(np.linalg.inv(np.dot(A,A.T)))

print(np.dot(np.dot(c.T,temp),c))

[[0.07332424]]

Отсюда получаем, что

, где

- распределение Стьюдента с

степенями свободы.

Для :

, где

In [130… c=np.array([[0],[0],[1]])

import numpy as np

X=[[],[],[]]

Y=[]

for i in range(len(table[0])):

X[0].append(1)

X[1].append(table[0][i])

X[2].append(table[0][i]**2)

Y.append([])

Y[i].append(table[1][i])

A=np.array(X)

B=np.array(Y)

temp=(np.linalg.inv(np.dot(A,A.T)))

print(np.dot(np.dot(c.T,temp),c))

[[0.00187559]]

Отсюда получаем, что

, где

- распределение Стьюдента с

степенями свободы.

Доверительный эллипс:

, где

In [131… c=np.array([[1,0,0],[0,1,0],[0,0,1]])

temp=(np.linalg.inv(np.dot(A,A.T)))

print(np.dot(np.dot(c.T,temp),c)) print(np.linalg.inv(np.dot(np.dot(c.T,temp),c)))

[[

0.14230834

-0.0844421

0.01087344]

[-0.0844421

 

0.07332424 -0.01120255]

[

0.01087344

-0.01120255

0.00187559]]

[[

50.

152.

618.]

 

[

152.

618.

2810.]

 

[618. 2810. 13734.]]

Отсюда получаем, что

;

Функция эллипса:

 

Где

 

Отсюда получаем:

 

Полуоси вычисляются согласно формулам:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 8

не зависит от

зависит от

Оценка зависимости:

, где

In [132… rssh=0 avg=sum(table[1])/50 print(avg)

for i in range(len(table[0])): rssh+=(table[1][i]-avg)**2

print((rssh-rss)/(rss/47))

12.3146

0.4158896373294578

Отсюда получаем, что Критерий:

Для того, что бы принять нулевую гипотизу, нужно потребовать, что бы

.

Гипотеза подходит, поскольку

Соседние файлы в папке ИДЗ_3