P-значение нормального теста для нескольких строк - PullRequest
0 голосов
/ 25 ноября 2018

Я получил следующий простой код для вычисления нормальности по массиву:

import pandas as pd
df = pd.read_excel("directory\file.xlsx")
import numpy as np
x=df.iloc[:,1:].values.flatten()
import scipy.stats as stats
from scipy.stats import normaltest 
stats.normaltest(x,axis=None)

Это дает мне приятное p-значение и статистику.Единственное, что я хочу сейчас, это:

Добавить 2 столбца в файл с этим значением p и статистика , и если у меня естьнесколько строк, сделайте это для всех строк (вычислите значение p и статистику для каждой строки и добавьте 2 столбца с этими значениями).

Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 25 ноября 2018

Если вы хотите вычислить построчно normaltest, вам не следует flatten ваши данные в x и использовать axis=1, например

df = pd.DataFrame(np.random.random(105).reshape(5,21)) # to generate data
# calculate normaltest row-wise without the first column like you
df['stat'] ,df['p'] = stats.normaltest(df.iloc[:,1:],axis=1)

Тогда df содержит два столбца'stat' и 'p' со значениями, которые вы ищете IIUC.

Примечание: чтобы иметь возможность выполнить normaltest, вам нужно как минимум 8 значений (в соответствии с тем, что я испытал), поэтому вам нужно как минимум 8 столбцов в df.iloc[:,1:], иначе это вызовет ошибку.И даже, было бы лучше иметь более 20 значений в каждой строке.

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