pandas проверить, если два значения статистически различны - PullRequest
1 голос
/ 14 марта 2020

У меня есть pandas фрейм данных, который имеет некоторые значения для мужчин и некоторые для женщин. Я хотел бы рассчитать, если процент значений обоих полов ** значительно отличается или нет, и сообщить доверительные интервалы этих показателей **. Ниже приведен пример кода:

data={}
data['gender']=['male','female','female','male','female','female','male','female','male']
data['values']=[10,2,13,4,11,8,14,19,2]
df_new=pd.DataFrame(data)
df_new.head()   # make a simple data frame


    gender  values
0   male    10
1   female  2
2   female  13
3   male    4
4   female  11

df_male=df_new.loc[df_new['gender']=='male']
df_female=df_new.loc[df_new['gender']=='female']   # separate male and female

# calculate percentages
male_percentage=sum(df_male['values'].values)*100/sum(df_new['values'].values)
female_percentage=sum(df_female['values'].values)*100/sum(df_new['values'].values)

# want to tell whether both percentages are statistically different or not and what are their confidence interval rates
print(male_percentage)
print(female_percentage)

Любая помощь будет высоко ценится. Спасибо!

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Использовать t-test. В этом случае используйте два t теста, что означает, что вы сравниваете значения / средние для двух выборок.

Я применяю альтернативную гипотезу; A! = B. Я делаю это, проверяя нулевую гипотезу A = B. Это достигается путем расчета значения ap. Когда p падает ниже критического значения, называемого альфа, я отвергаю нулевую гипотезу. Стандартное значение для альфа составляет 0,05. При вероятности ниже 5% образец будет генерировать шаблоны, аналогичные наблюдаемым значениям

Извлечь образцы, в этом случае список values

A=df[df['gender']=='male']['values'].values.tolist()
B=df[df['gender']=='female']['values'].values.tolist()

Используя библиотеку scipy, выполните т-тест

from scipy import stats
t_check=stats.ttest_ind(A,B)
t_check
alpha=0.05
if(t_check[1]<alpha):
    print('A different from B')
0 голосов
/ 15 марта 2020

Попробуйте это:

df_new.groupby('gender')['values'].sum()/df_new['values'].sum()*100

gender
female    63.855422
male      36.144578
Name: values, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...