-
Notifications
You must be signed in to change notification settings - Fork 243
Open
Description
Привет! Большое спасибо за проделанную работу, этот конспект помог мне освежить в памяти статистику!
После ознакомления у меня есть несколько комментариев:
- В разделе "Примеры применения t-критерия Стьюдента", скорее всего, допущена ошибка во время вызова метода
t.ppf(): вместо степеней свободы в метод передаётся среднее значение.
import pandas as pd
from scipy.stats import t
import matplotlib.pyplot as plt
import numpy as np
array1 = np.array([84.7, 105.0, 98.9, 97.9, 108.7, 81.3, 99.4, 89.4, 93.0,
119.3, 99.2, 99.4, 97.1, 112.4, 99.8, 94.7, 114.0, 95.1, 115.5, 111.5])
array2 = np.array([57.2, 68.6, 104.4, 95.1, 89.9, 70.8, 83.5, 60.1, 75.7,
102.0, 69.0, 79.6, 68.9, 98.6, 76.0, 74.8, 56.0, 55.6, 69.4, 59.5])
# считаем количество элементов, среднее, стандартное отклонение и стандартную ошибку
df = pd.DataFrame({'Выборка1':array1, 'Выборка2':array2}).agg(['mean','std','count','sem']).transpose()
df.columns = ['Mx','SD','N','SE']
# рассчитываем 95% интервал отклонения среднего
p = 0.95
K = t.ppf((1 + p)/2, df['Mx']-1) # <-- Ошибка тут
df['interval'] = K * df['SE']
df
- Также в этом разделе ниже идёт код, отображающий боксплоты и доверительные интервалы для температуры плавления ДНК двух типов. Я немного поправил код, чтобы оба графика были рядом в одном масштабе. На мой взгляд, улучшит воспритие графиков.
#строим графики, boxplot из изначальных данных array1, array2, доверительные интервалы из датафрейма df
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(14, 9))
# график boxplot
bplot1 = ax1.boxplot([array1, array2],
vert=True, # создаем вертикальные боксы
patch_artist=True, # для красоты заполним цветом боксы квантилей
labels=['Выборка1', 'Выборка2']) # используется для задания значений выборок в случае с boxplot
# график доверительных интервалов
bplot2 = ax2.errorbar(x=df.index, y=df['Mx'], yerr=df['interval'],\
color="black", capsize=3, markersize=4, mfc="red", mec="black", fmt ='o')
# раскрасим boxplot
colors = ['pink', 'lightgreen']
for patch, color in zip(bplot1['boxes'], colors):
patch.set_facecolor(color)
# добавим общие для каждого из графиков данные
for ax in [ax1, ax2]:
ax.yaxis.grid(True)
ax.set_title('Температура плавления ДНК двух типов')
ax.set_xlabel('Сравнение двух выборок')
ax.set_ylabel('Температура F')
ax.set_ylim(50, 120) # <-- добавил лимит по оси, чтобы графики были в одном масштабе
plt.show()
Metadata
Metadata
Assignees
Labels
No labels