Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 8, 2018 19:26:22

mordwin
Зарегистрирован: 2018-04-08
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нормальное распределение и хи-квадрат

Нужно узнать, является ли распределение нормальным. Написал такой код
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
from scipy.stats import chisquare
from scipy.stats import normaltest

mn =
with open('data.txt') as out_cos:
for line in out_cos:
mn.append(float(line))
print(len(mn))

data = np.array(mn)
mean = np.mean(data)
std = np.std(data)
x = np.linspace(mean - 3*std, mean + 3*std, 100)
#p_data = np.random.normal(mean, std, length)
print(mean, std)
plt.plot(x, mlab.normpdf(x, mean, std))
print(normaltest(data))
plt.hist(mn, bins=100, density=True) # bins - количество бункеров
plt.show()
но выводит NormaltestResult(statistic=643.8778670051769, pvalue=1.526503027640472e-140).
Если смотреть по картинке, то нормальность должна быть.
Не подскажете как еще можно проверить?

Отредактировано mordwin (Апрель 8, 2018 19:26:45)

Прикреплённый файлы:
attachment norm.PNG (19,2 KБ)

Офлайн

#2 Апрель 9, 2018 03:09:03

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Нормальное распределение и хи-квадрат

Можно использовать тест Шапиро-Уилка; а также построить qqplot (stats.probplot), если точки будут лежать на прямой,
то данные нормальны, если нет – то в данных имеется уклонение от нормального закона распределения

 import matplotlib.pyplot as plt
import scipy.stats as stats
data = np.random.uniform(size=100) 
stats.probplot(data, dist="norm", plot=plt)
print("Shapiro-Wilk test for normality:", stats.shapiro(data))
plt.show()

Офлайн

#3 Апрель 9, 2018 14:24:05

mordwin
Зарегистрирован: 2018-04-08
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нормальное распределение и хи-квадрат

scidam
Можно использовать тест Шапиро-Уилка; а также построить qqplot (stats.probplot), если точки будут лежать на прямой, то данные нормальны, если нет – то в данных имеется уклонение от нормального закона распределения
А для большого количества значений? Как я понял этот тест можно использовать для N<5000.

Офлайн

#4 Апрель 9, 2018 21:53:11

passant
Зарегистрирован: 2018-02-17
Сообщения: 43
Репутация: +  4  -
Профиль   Отправить e-mail  

Нормальное распределение и хи-квадрат

Помимо тестов Шапиро-Уилка, хи-квадрат и QQ-диаграмм существуют еще минимум почти десятка полтора тестов на нормальность. На любой вкус любые условия и требования.
Ну, например:
1. http://webspace.ship.edu/pgmarr/Geo441/ … esting.pdf
2. А. В. Субботина, М. Гржибовский “Описательная статистика и проверка нормальности распределения данных”
3. http://journals.sbmu.ac.ir/jps/article/view/3974/3551
4. Б.Ю. Лемешко, А.П. Рогожников “ИССЛЕДОВАНИЕ ОСОБЕННОСТЕЙ И МОЩНОСТИ НЕКОТОРЫХ КРИТЕРИЕВ НОРМАЛЬНОСТИ”
Или просто загляните в справочник Кобзаря - там этих тестов точно больше десятка.

Офлайн

#5 Апрель 10, 2018 01:50:05

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Нормальное распределение и хи-квадрат

mordwin
А для большого количества значений? Как я понял этот тест можно использовать для N<5000.
Да, реализация в scipy предполагает выполнение этого условия.
У вас очень большое число измерений; в этом случае вам можно еще порекомендовать тест Колмогорова-Смирнова (stats.kstest).

Офлайн

#6 Апрель 10, 2018 21:51:48

mordwin
Зарегистрирован: 2018-04-08
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нормальное распределение и хи-квадрат

Спасибо большое

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version