Как преобразовать данные в нормальное распределение - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть набор данных, состоящий из количества просмотров страниц за 6 месяцев для 30 тыс. Клиентов.Он также состоит из следующих элементов:

  • Количество используемых уникальных ОС
  • Количество уникальных пользователей браузера
  • Количество используемых уникальных файлов cookie Все эти числа взяты за периодиз шести месяцев.

Теперь я попытался выполнить обычный тест, используя:

from scipy.stats import normaltest
k2, p = normaltest(df)
print(p)

, который возвращает 0.0, что означает, что данные не соответствуют нормальному распределению.

Теперь я хочу знать, почему это так?Я думал, что, как правило, при увеличении размера мы видим нормальное распределение данных, так как данные имеют размер 30 КБ, я не мог понять, почему они не распределяются нормально.

Я попытался преобразовать их в Zзабить, но все равно не повезло.Могу ли я преобразовать свои данные так, чтобы у меня было нормальное распределение?Есть ли способ, с помощью которого я могу это сделать?

1 Ответ

0 голосов
/ 18 сентября 2018

В области, в которой я работаю, мы, как правило, записываем данные преобразования, которые гетероскедастичны, как, вероятно, ваша.В моей области (масс-спектрометрия) малые значения гораздо более вероятны, чем большие, поэтому мы получаем экспоненциальное распределение.

Я предполагаю, что ваши данные будут выглядеть как мои, и в этом случае вам потребуетсясделайте преобразование журнала ваших данных, чтобы они были нормально распределены.Я хотел бы сделать это, чтобы я мог применять t-тесты и другие модели статистики.

Что-то вроде

df_visits = df_visits.apply(lambda x: np.log(x))

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

Изображение, показывающее предварительный или последующий журналпреобразование

...