This commit is contained in:
Yesen 2023-10-05 14:41:32 +03:00
parent d71ebdb1b3
commit c2332f8f45

View File

@ -0,0 +1,31 @@
from scipy.stats import f
data = pd.DataFrame({1:[3,1,2],2:[5,3,4],3:[7,6,5]}) # Here 3 groups and we are going to compare them
def odno_disp(data):
first_group = [i for i in data[1]] # Выделяем группы для операции над данными
second_group = [i for i in data[2]]
third_group = [i for i in data[3]]
number_of_groups = len([first_group,second_group,third_group])
all_groups = first_group+second_group+third_group # Все группы тут
mean_of_all_groups = np.mean(all_groups) # среднее значение всей группы
sum_of_squared_total = sum([(i-mean_of_all_groups)**2 for i in all_groups]) # Обьщая изменчивость наших данных, здесь мы расчитали сумму всех квадратов отклонение от среднего
df_of_sst = len(all_groups) - 1 # Число степеней свободы в SST
ssw1 = sum([(i-np.mean(first_group))**2 for i in first_group]) # для расчета суммы квадратов
ssw2 = sum([(i-np.mean(second_group))**2 for i in second_group]) # расчитаем сумму кв всех групп
ssw3 = sum([(i-np.mean(third_group))**2 for i in third_group])
sum_of_squared_within = ssw1+ssw2+ssw3 # сумма квадратов внутри групповая
df_of_ssw = len(all_groups) - number_of_groups # Число степеней свободы во внутри групповой
# Теперь узнаем на сколько наши групповые отклоняются от общегрупповых средних
for_minus_from_each_group = [first_group, second_group, third_group] # для минуса из каждых групп
sum_of_squared_between = sum([number_of_groups*(np.mean(i)-mean_of_all_groups)**2 for i in for_minus_from_each_group])
df_of_ssb = number_of_groups - 1
F = (sum_of_squared_between / df_of_ssb) / (sum_of_squared_within / df_of_ssw)
P_value = f.sf(F, df_of_ssb, df_of_ssw)
if P_value >= 0.05:
return f"Мы не отклоняем нулевую гипотезу так как P_value = {P_value}"
else:
return f"Мы отклоняем нулевую гипотезу то есть P value = {P_value}, H1 верна то есть минимум 2 данные различаются между собой в Генеральной совокупонсти"
p = odno_disp(data)