Форум сайта python.su
Нужно узнать, является ли распределение нормальным. Написал такой код
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)
Прикреплённый файлы: norm.PNG (19,2 KБ)
Офлайн
Можно использовать тест Шапиро-Уилка; а также построить 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()
Офлайн
scidamА для большого количества значений? Как я понял этот тест можно использовать для N<5000.
Можно использовать тест Шапиро-Уилка; а также построить qqplot (stats.probplot), если точки будут лежать на прямой, то данные нормальны, если нет – то в данных имеется уклонение от нормального закона распределения
Офлайн
Помимо тестов Шапиро-Уилка, хи-квадрат и QQ-диаграмм существуют еще минимум почти десятка полтора тестов на нормальность. На любой вкус любые условия и требования.
Ну, например:
1. http://webspace.ship.edu/pgmarr/Geo441/ … esting.pdf
2. А. В. Субботина, М. Гржибовский “Описательная статистика и проверка нормальности распределения данных”
3. http://journals.sbmu.ac.ir/jps/article/view/3974/3551
4. Б.Ю. Лемешко, А.П. Рогожников “ИССЛЕДОВАНИЕ ОСОБЕННОСТЕЙ И МОЩНОСТИ НЕКОТОРЫХ КРИТЕРИЕВ НОРМАЛЬНОСТИ”
Или просто загляните в справочник Кобзаря - там этих тестов точно больше десятка.
Офлайн
mordwinДа, реализация в scipy предполагает выполнение этого условия.
А для большого количества значений? Как я понял этот тест можно использовать для N<5000.
Офлайн
Спасибо большое
Офлайн