Главная страница

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


Скачать 41.76 Kb.
НазваниеОбработка выборочных данных. Нахождение интервальных оценок параметров распределения. Проверка статистической гипотезы
Анкоробработка выборочных данных, нахождение интервальных оценок параметров распределения
Дата05.05.2022
Размер41.76 Kb.
Формат файлаdocx
Имя файлаобработка_выборочных_данных.docx
ТипОтчет
#514032
страница1 из 3
  1   2   3

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. УЛЬЯНОВА (ЛЕНИНА)

Кафедра алгоритмической математики


ОТЧЕТ

по практической работе №3

по дисциплине «Статистический анализ»

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



Студент гр. 9373




Петров Б.Г.

Преподаватель




Сидоров A.B.



Санкт-Петербург

2021

Цель работы.

Получение практических навыков вычисления интервальных статистических оценок параметров распределения выборочных данных и проверки «справедливости» статистических гипотез.
Основные теоретические положения.

Интервал (θ*1, θ*2), накрывающий с вероятностью γ истинное значение параметра θ называется доверительным интервалом, а вероятность γ — надежность оценки или доверительной вероятностью.

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

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

Нулевой (основной) гипотезой H0 называется предположение, которое выдвигается изначально, пока наблюдения не заставят признать обратное.

Альтернативной (конкурирующей) гипотезой H1 называется гипотеза, которая противоречит нулевой гипотезе H0 и которую принимают, если отвергнута основная гипотеза.
Постановка задачи.

Для заданной надежности определить (на основании выборочных данных и результатов выполнения практической работы №2) границы доверительных интервалов для математического ожидания и среднеквадратичного отклонения случайной величины. Проверить гипотезу о нормальном распределении исследуемой случайной величины с помощью критерия Пирсона 𝜒2. Дать содержательную интерпретацию полученным результатам.
Выполнение работы.

Так как у нас неизвестны σг и N, то в таком случае мы можем рассчитать точность оценки по формуле (1)

(1)

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

Confident interval

Confident accuracy

(0.8834439646221142-0.9010504374826807)

0.95

(0.8806018314458176-0.9038925706589772)

0.99



При различной доверительной вероятности величина доверительного интервала будет разной. Чем больше доверительная вероятность, тем больше доверительный интервал.

Теперь для вычисления границ доверительного интервала для среднеквадратичного отклонения определим по таблице значение q(γ,n). Для нашей выборки получим q(0.95, 109)=0.138 и q(0.99, 109) =0.19. Рассчитанные доверительные интервалы для среднеквадратичного отклонения занесены в табл. 2.
Таблица 2 — доверительные интервалы для среднеквадратичного отклонения.


Confident interval

Confident accuracy

(0.03996881005653151-0.05276624807927246)

0.95

(0.037557698545000615-0.05517735959080336)

0.99


Для проверки гипотезы была реализована функция, которая находит критическую точку и сравнивает ее с наблюдаемым значением. Результат работы функции приведен на рис. 1.



Р исунок 1 — проверка гипотезы о нормальности заданного распределения.
По результатам работы функции принимаем гипотезу о том, что наша величина распределена нормально.

Выводы.

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


ПРИЛОЖЕНИЕ A
import csv
import random
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import math
import scipy.stats as sts
import copy
from scipy.stats import chi2

df1 = pd.read_csv("resources/voices_in_my_head.csv", encoding='utf8', index_col=False)


class Something:

v = 109
k = 1 + math.floor(math.log2(v))

def __init__(self, df, col_idx):
self.name = df.columns[col_idx]
self.data = df[df.columns[col_idx]].values
self.ranged_seq = sorted(self.data)
self.h = (self.ranged_seq[-1] - self.ranged_seq[0]) / Something.k
self.var_srs = [0] * Something.k
self.xi = [0] * (Something.k + 1)
self.freq = [0] * Something.k
self.rel_freq = [0] * Something.k
self.cum_freq = [0] * Something.k
self.cum_rel_freq = [0] * Something.k
self.xi_plus_half_of_h = [0] * Something.k
self.c = 0
self.ui = [0] * Something.k
self.vi = [0] * 4
self.mu_i = [0] * 4
self.x_avr_mean = 0
self.x_avr_mean_ln = 0
self.u_avr = 0
self.dispersion = 0
self.sd = 0
self.fixed_dispersion = 0
self.fixed_sd = 0
self.asm_cef = 0
self.kurtosis_cef = 0
self.mode = 0
self.median = 0
self.variation_cef = 0
self.conf_interval_accuracy = {}
self.conf_interval_accuracy_sd = {}
self.cool_dict = {}

def calc_ivs(self):
x0 = self.ranged_seq[0]
xk = x0
xk1 = xk + self.h
for i in range(Something.k):
if i == 0:
self.var_srs[i] = "[" + str(xk) + "-" + str(xk1) + "]"
else:
self.var_srs[i] = "(" + str(xk) + "-" + str(xk1) + "]"
xk = xk1
xk1 += self.h

def calc_new_vs(self):
new_vs = [0] * Something.k
x0 = self.ranged_seq[0]
xk = x0
xk1 = xk + self.h
for i in range(Something.k):
if i == 0:
new_vs[i] = "(-inf" + str(xk) + "-" + str(xk1) + "]"
elif i == Something.k - 1:
new_vs[i] = "(" + str(xk) + "-" + str(xk1) + "+inf)"
else:
new_vs[i] = "(" + str(xk) + "-" + str(xk1) + "]"
xk = xk1
xk1 += self.h
return new_vs

def calc_xi_arr(self):
xi = self.ranged_seq[0]
for i in range(Something.k + 1):
self.xi[i] = xi
xi += self.h

def calc_xi_plus_half_of_h(self):
for i in range(Something.k):
self.xi_plus_half_of_h[i] = self.xi[i] + self.h / 2

def calc_ui(self):
if self.k % 2 == 0:
self.c = self.xi_plus_half_of_h[Something.k / 2 - 1] if self.freq[Something.k / 2 - 1] >= self.freq[Something.k / 2] \
else self.xi_plus_half_of_h[Something.k / 2]
else:
self.c = self.xi_plus_half_of_h[Something.k // 2]

for i in range(Something.k):
self.ui[i] = (self.xi_plus_half_of_h[i] - self.c) / self.h

def calc_cond_vi(self):
for i in range(4):
for j in range(Something.k):
self.vi[i] += math.pow(self.ui[j], i + 1) * self.rel_freq[j]

def calc_mu_i(self):
for i in range(4):
if i == 0:
self.mu_i[i] = 0
elif i == 1:
self.mu_i[i] = (self.vi[1] - self.vi[0] ** 2) * (self.h ** 2)
elif i == 2:
self.mu_i[i] = (self.vi[2] - 3 * self.vi[1] * self.vi[0]
+ 2 * (self.vi[0] ** 3)) * (self.h ** 3)
elif i == 3:
self.mu_i[i] = (self.vi[3] - 4 * self.vi[2] * self.vi[0] +
6 * self.vi[1] * (self.vi[0] ** 2) - 3 * (self.vi[0] ** 4)) * (self.h ** 4)

def calc_x_avr_mean_stand(self):
for i in range(Something.k):
self.x_avr_mean += self.xi_plus_half_of_h[i] * self.rel_freq[i]

def calc_x_avr_mean_log(self):
for i in range(Something.k):
self.x_avr_mean_ln += math.log(self.xi_plus_half_of_h[i]) * self.rel_freq[i]

def calc_dispersion_stand(self):
x_sqr = 0
for i in range(Something.k):
x_sqr += (self.xi_plus_half_of_h[i] ** 2) * self.rel_freq[i]
self.dispersion = x_sqr - (self.x_avr_mean ** 2)

def calc_sd(self):
self.sd = math.sqrt(self.dispersion)

def calc_fixed_dispersion(self):
self.fixed_dispersion = (Something.v / (Something.v - 1)) * self.dispersion

def calc_fixed_sd(self):
self.fixed_sd = math.sqrt(self.fixed_dispersion)

def calc_mode(self):
ind_max = 0
second_ind_max = -1
elem_max = 0
counter = 0

for i in range(Something.k):
if self.rel_freq[i] > elem_max:
elem_max = self.rel_freq[i]
ind_max = i

for i in range(Something.k):
if self.rel_freq[i] == max and i != ind_max:
counter += 1
second_ind_max = i

if counter == 0:
if ind_max == 0:
self.mode = self.xi[ind_max] + self.h * (self.rel_freq[ind_max] / (2 * self.rel_freq[ind_max]) -
self.rel_freq[ind_max + 1])
elif ind_max == Something.k - 1:
self.mode = self.xi[ind_max] + self.h * (self.rel_freq[ind_max] - self.rel_freq[ind_max - 1]) /\
(2 * self.rel_freq[ind_max] - self.rel_freq[ind_max - 1])
else:
self.mode = self.xi[ind_max] + self.h * (self.rel_freq[ind_max] - self.rel_freq[ind_max - 1]) / \
(2 * self.rel_freq[ind_max] - self.rel_freq[ind_max - 1] - self.rel_freq[ind_max + 1])
elif counter == Something.k:
self.mode = None
else:
self.mode = 'multi_mode'

def calc_median(self):
key_index = 0
for i in range(1, Something.k):
if self.cum_rel_freq[i] >= 0.5 > self.cum_rel_freq[i - 1]:
key_index = i
if key_index != 0:
self.median = self.xi[key_index] + (self.h / self.rel_freq[key_index]) *\
(0.5 - self.cum_rel_freq[key_index - 1])
else:
self.median = self.xi[key_index] + (self.h / self.rel_freq[key_index]) * 0.5

def calc_variation_cef(self):
self.variation_cef = str(round((self.sd / self.x_avr_mean) * 100, 2)) + '%'

def calc_asm_cef(self):
self.asm_cef = self.mu_i[2] / (self.dispersion ** (3 / 2))

def calc_kurtosis_cef(self):
self.kurtosis_cef = (self.mu_i[3] / (self.dispersion ** 2)) - 3

def calc_x_avr_mean_cond(self):
for i in range(Something.k):
self.u_avr += self.ui[i] * self.rel_freq[i]
return self.h * self.u_avr + self.c

def calc_dispersion_cond(self):
u_sqr = 0
for i in range(Something.k):
u_sqr += (self.ui[i] ** 2) * self.rel_freq[i]
return (self.h ** 2) * (u_sqr - (self.u_avr ** 2))

def calc_freq(self):
  1   2   3


написать администратору сайта