Получаю ошибку в значении по этому вопросу, не совсем понимаю, почему

#python #pandas

Вопрос:

 import libraries
import pandas as pd
from scipy import stats
from scipy.stats import ttest_ind

df = pd.read_csv('https://tf-assets-prod.s3.amazonaws.com/tf-curric/data-analytics-bootcamp/medicalcosts.csv')
 

создайте два отдельных кадра данных для секса

 df_male = df.loc[df['sex'] == 'male']
df_female = df.loc[df['sex'] == 'female']
 

Запустите t-тест, сравнивая столбец зарядов между мужчинами и женщинами, и распечатайте результаты

 tc, pc = stats.pearsonr(df_male.charges, df_female.charges)
print(tc)
print(pc)
 

Запустите t-тест, сравнивая столбец ИМТ между мужчинами и женщинами, и распечатайте результаты

 tb, pb = stats.pearsonr(df_male.bmi, df_female.bmi)
print(tb)
print(tb)
 

Ответ №1:

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

В вашем примере вы пытаетесь провести корреляцию между различными наблюдениями, что не совсем имеет смысл. Поэтому он выдает ошибку:

 len(df_male.charges)
676

len(df_female.charges)
662 
 

Для t-теста это будет работать:

 ttest_ind(df_male.bmi, df_female.bmi)
Ttest_indResult(statistic=1.696752635752224, pvalue=0.08997637178984932)
 

Комментарии:

1. Я понял, что прочитал его недостаточно внимательно, предыдущий вопрос был с использованием pearsonr. Тем не менее, я ценю ответ.