Scipy Normaltest с набором данных из нескольких столбцов - PullRequest
0 голосов
/ 16 марта 2020

У меня есть набор данных со 100 строками и 21 столбцом, где столбцы являются переменными. Я хочу знать, пришли ли эти переменные из многомерного нормального распределения. Таким образом, я использовал de Normaltest из библиотеки Scipy, но не могу понять результаты. Вот мой код:

import pandas as pd
from scipy import stats

df = pd.DataFrame(np.random.random(2100).reshape(100,21)) # dataset (100x21)
k2, p = stats.normaltest(df)

В этом примере p - это 21-массив, а не одно значение. Кто-нибудь может объяснить, как интерпретировать этот массив?

1 Ответ

0 голосов
/ 16 марта 2020

Если p[x]<0.05, вы можете предположить, что значения в столбце x обычно не распространяются. Потому что при тесте нормальности нулевая гипотеза состоит в том, что популяция нормально распределена. При р <0,05 вероятность того, что мы примем эту гипотезу, составляет менее 5%, что является статистически низким. И наоборот, при p [i]> 0,5 данные распределяются нормально. Вы можете легко протестировать его с нормальным распределением:

import pandas as pd
from scipy import stats
df = pd.DataFrame(np.random.normal(0,1,2100).reshape(100,21)) # dataset (100x21)
k2, p = stats.normaltest(df)
print (p)

Выход составляет

    [0.97228661 0.49017509 0.97373345 0.97404468 0.03498392 0.61963074
 0.07712131 0.52632157 0.29887186 0.30822356 0.14416431 0.11015074
 0.81773481 0.52919266 0.81859869 0.24855451 0.16817784 0.0117747
 0.76860707 0.40384319 0.97038048]

, большинство из которых больше 0,05.

Для проверки многомерной нормальности , вы можете попробовать тест Хенце-Цирклера:

import pingouin as pg
normal, p = pg.multivariate_normality(df, alpha=.05)

, где .05 - значимое значение (вы можете изменить его, если хотите, оно не повлияет на полученное значение p).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...