Как мне выполнить T-тест с фреймом данных? - PullRequest
0 голосов
/ 11 января 2020

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

`df1 = df[["gender","hourly_wage"]] #creating a sub-dataframe with only the columns of gender and hourly wage
staff_wages=df1.groupby(['gender']).mean() #grouping the data frame by gender and assigning it to a new variable 'staff_wages'
staff_wages.head()`

По правде говоря, я запутался на полпути. Я хотел сделать t-тест, поэтому я написал код

`mean_val_salary_female = df1[staff_wages['gender'] == 'female'].mean()
mean_val_salary_female = df1[staff_wages['gender'] == 'male'].mean()

t_val, p_val = stats.ttest_ind(mean_val_salary_female, mean_val_salary_male)

# obtain a one-tail p-value
p_val /= 2

print(f"t-value: {t_val}, p-value: {p_val}")`

Он будет возвращать только ошибки.

Я вроде как сошел с ума, пытаясь разные вещи ...

`#married_vs_dependents = df[['married', 'num_dependents', 'years_in_employment']]


#married_vs_dependents = df[['married', 'num_dependents', 'years_in_employment']]
#married_vs_dependents.head()

#my_data = df(married_vs_dependents)
#my_data.groupby('married').mean()

mean_gender = df.groupby("gender")["hourly_wage"].mean()
married_vs_dependents.head()

mean_gender.groupby('gender').mean()

mean_val_salary_female = df[staff_wages['gender'] == 'female'].mean()
mean_val_salary_female = df[staff_wages['gender'] == 'male'].mean()

#cat1 = mean_gender['male']==['cat1']
#cat2 = mean_gender['female']==['cat2']

ttest_ind(cat1['gender'], cat2['hourly_wage'])`

Пожалуйста, кто может помочь мне сделать правильный шаг?

1 Ответ

1 голос
/ 11 января 2020

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


df1 = df[["gender","hourly_wage"]]

m = df1.loc[df1["gender"].eq("male")]["hourly_wage"].to_numpy()
f = df1.loc[df1["gender"].eq("female")]["hourly_wage"].to_numpy()

stats.ttest_ind(m,f)
...