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

ИДЗ_4 / STATAN_IDZ_4

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

Практическая работа №4 Однофакторный дисперсионный анализ

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

Цель работы

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

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

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

от уровня фактора (простая группировка). Полученные результаты содержательно проинтерпретировать.

1.

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

 

 

2.

Сформулировать модели однофакторного дисперсионного анализа зависимостей значений от уровней фактора в центральной параметризации. Является ли дизайн данного эксперимента сбалансированным? Построить МНК оценки параметров и несмещенную оценку дисперсии. В предположении нормальности ошибок построить

 

доверительные интервалы для параметров уровня доверия

 

 

3.

Сформулировать модель однофакторного дисперсионного анализа когда наибольший уровень фактора рассматривается как базовый. Построить МНК оценки параметров и несмещенную оценку дисперсии. В предположении нормальности ошибок построить доверительные интервалы для параметров уровня доверия

4.

На основании результатов, полученных в предыдущих пунктах проверить визуально монотонности влияния величины фактора

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

5.

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

6.

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

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

 

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

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

Out[1]:

In [3]: 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]=[10.56,16.83,11.41,10.91,12.77,2.36,6.78,6.80,4.20,5.90,5.30,15.63,5.07,8.13,17,6,12.37,9.97,2.17,8.35,9.15,11.54,10.47,14.99,7.53,5.30,13.83,11.16,17.68,16.59,14.53,4.96,6.37,15.25,8.95,17.28,19.87,14.73,7.38,2.25,4.1,4.01,7.68,22.52,18.20,14.75,11.13,11.51,3.11,6.71] 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]

[10.56, 16.83, 11.41, 10.91, 12.77, 2.36, 6.78, 6.8, 4.2, 5.9, 5.3, 15.63, 5.07, 8.13, 17, 6, 12.37, 9.97, 2.17, 8.35, 9.15, 11.54, 10.47, 14.99, 7.53, 5.3, 13.83, 11.16, 17.68, 16.59, 14.53, 4.96, 6.37, 15.25, 8.95, 17.28, 19.87, 14.73, 7.38, 2.25, 4.1, 4.01, 7.68, 22.52, 18.2, 14.75, 11.13, 11.51, 3.11, 6.71]

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

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

Задание 1

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

In [4]: 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()

Задание 2

In [5]: k=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]] for i in range(len(table[0])):

if table[0][i]==0: k[0][0]+=1 k[1][0]+=table[1][i]

if table[0][i]==1: k[0][1]+=1 k[1][1]+=table[1][i]

if table[0][i]==2: k[0][2]+=1 k[1][2]+=table[1][i]

if table[0][i]==3: k[0][3]+=1 k[1][3]+=table[1][i]

if table[0][i]==4: k[0][4]+=1 k[1][4]+=table[1][i]

if table[0][i]==5: k[0][5]+=1 k[1][5]+=table[1][i]

if table[0][i]==6: k[0][6]+=1 k[1][6]+=table[1][i]

print(k)

[[5, 6, 8, 10, 10, 6, 5], [19.459999999999997, 73.91999999999999, 83.22, 95.87, 136.51, 47.32000000000001, 55.74]]

In [18]: import math ni=[]

s=[]

for i in range(len(k[0])): ni.append(k[1][i]/k[0][i]) temp_s=0

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

temp_s+=math.pow(ni[i]-table[1][n],2) s.append(temp_s)

sigma=(sum(s))/(50-len(k[0])) print(ni)

print(s) print(sigma)

[3.8919999999999995, 12.319999999999999, 10.4025, 9.587, 13.651, 7.886666666666668, 11.148]

[22.15708, 120.50640000000001, 116.55595, 221.09281, 260.62429, 35.568133333333336, 124.88288] 20.962501007751936

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

Доверительные интервалы:

In [20]: xalpha=[2.78,2.57,2.36,2.26,2.26,2.57,2.78] for i in range(len(ni)):

print(ni[i]-((xalpha[i]*s[i])/((k[0][i])**0.5)),ni[i]+((xalpha[i]*s[i])/((k[0][i])**0.5)))

-23.654873806972976 31.438873806972975

-114.115086700183 138.755086700183 -86.85015310651538 107.65515310651539 -148.42244897842855 167.59644897842853 -172.61059961191933 199.91259961191935 -29.431351478126206 45.20468481145954 -144.11311455170758 166.40911455170757

Задание 4

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

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

zxc=np.array([0,1,2,3,4,5,6]) plt.scatter(x, y,color="blue") plt.plot(zxc,ni,color="red") plt.show()

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

Задание 5

In [32]: e=[]

for i in range(len(table[0])): e.append(table[1][i]-ni[table[0][i]])

e=sorted(e) print(sorted(e))

[-9.641, -8.219999999999999, -8.038, -5.387, -5.301, -4.627, -4.5024999999999995, -3.6925, -3.5869999999999997, -3.468, -3.2169999999999996, -3.180999999999999, -3.169999999999998, -2.8724999999999996, -2.8166666666666673, -2.787, -2.586666666666668, -2.141, -1.7219999999999995, -1.6419999999999995,

-1.5319999999999996, -1.4525000000000006, -1.2810000000000006, -1.1066666666666674, 0.15750000000000064, 0.24333333333333318, 0.3830000000000009, 0.45000000000000107, 0.7575000000000003, 1.4080000000000004, 1.5990000000000002, 1.8230000000000004, 1.9529999999999994, 2.6700000000000017, 2.682000000000 0004, 3.0233333333333325, 3.1789999999999985, 3.243333333333333, 3.3100000000000023, 3.349, 3.3819999999999997, 3.4880000000000004, 4.327500000000001, 4.5489999999999995, 4.960000000000003, 5.163, 5.442, 7.2775, 8.869, 10.283000000000001]

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

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

Out[27]:

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

In [33]: import math

from scipy.stats import norm F=[]

F0=[] diff=[]

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.3668186854123239

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

Задание 6

не зависит от зависит от

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

, где

In [34]: 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))

[[8.5163058 ]

[0.56726783]]

In [35]: beta0=8.5163058 beta1=0.56726783 rss=0

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

print(rss)

1236.8334360954336

In [40]: rssh=0 avg=sum(ni)/len(ni) print(avg)

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

print(rssh) print(((rssh-rss)/6)/((rss)/(50-7)))

9.841023809523808

1294.9984181235827

0.3370292439573391

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

Критерий:

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

.

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

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

Out[41]:

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