Стандартные ошибки (не ошибки)

Понимание стандартных ошибок: ключ к надежным статистическим выводам

Введение:

"Статистический анализ без понимания стандартных ошибок подобен плаванию без компаса".

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

Стандартные ошибки служат важным показателем, который количественно определяет изменчивость и точность оценок или выборочных статистических данных. Когда мы отправимся в путешествие, чтобы разгадать их сущность, мы обнаружим, как они прокладывают путь для более глубокого понимания логической статистики, такой как t-тесты, ANOVA, коэффициенты регрессии и корреляции.

"Стандартные ошибки — это маяки, которые ведут нас сквозь статистический шторм, освещая путь к надежным выводам".

Стандартная ошибка количественно определяет количество ожидаемых случайных вариаций в выборках одинакового размера, полученных из общей совокупности. В статистике термин «ошибка» имеет четкое определение, которое отличается от его повседневного использования. В статистике ошибка не означает «ошибка». Ошибка относится к случайным изменениям, возникающим из-за случайной выборки. стандартная ошибка, по сути, представляет собой стандартное отклонение выборочного распределения некоторого статистического показателя (например, среднего значения, разницы между двумя средними значениями, коэффициента корреляции и т. д.).

Например, если мы хотим вычислить стандартную ошибку среднего значения любого массива, мы можем вычислить ее таким образом.

from scipy.stats import sem

#define dataset 
data = [13, .4, 4, 5, 37, 8, 12, 14, 14, 15, 17, 19, 22, 24, 24, 24, 25, 28, 28, 29]

#calculate standard error of the mean 
sem(data)

Представьте случайный выбор выборки из 100 женщин из всего населения взрослых женщин в конкретной стране. Крайне важно признать, что эта выборка может быть или не быть репрезентативной для всего населения, особенно в отношении размеров обуви. Случайная выборка позволяет получить выборку с экстремальными характеристиками, такими как необычно большой средний размер обуви. Если первоначальная выборка возвращается в популяцию и выбирается другая случайная выборка того же размера (100), вполне возможно, что средний размер обуви во второй выборке будет значительно отличаться от среднего размера обуви в первой выборке.

Если бы мы взяли 1000 различных случайных выборок, каждая из которых состоит из 100 женщин, и вычислили средний размер обуви для каждой выборки, эти средние значения 1000 выборок сформировали бы свое собственное распределение. Это распределение можно назвать выборочным распределением среднего значения.

Выборочное распределение среднего значения представляет собой теоретическое распределение, которое представляет все возможные выборочные средние значения, которые могут быть получены в результате повторной случайной выборки из совокупности. Он дает представление о распределении выборочных средних и о том, как они варьируются в зависимости от среднего значения генеральной совокупности.

Анализируя выборочное распределение среднего значения, статистики могут оценить среднее значение генеральной совокупности и определить вероятность наблюдения определенного среднего значения выборки. Кроме того, он дает представление о точности и надежности среднего значения выборки в качестве оценки среднего значения генеральной совокупности.

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

import numpy as np
import matplotlib.pyplot as plt

# Population parameters
population_mean = 10
population_std = 2

# Sample size and number of samples
sample_size = 30
num_samples = 1000

# Generate the population data
population_data = np.random.normal(population_mean, population_std, 10000)

# Initialize an array to store sample means
sample_means = np.zeros(num_samples)

# Generate samples and calculate their means
for i in range(num_samples):
    sample = np.random.choice(population_data, size=sample_size, replace=False)
    sample_means[i] = np.mean(sample)

# Plot the sampling distribution
plt.hist(sample_means, bins=30, edgecolor='black')
plt.xlabel('Sample Mean')
plt.ylabel('Frequency')
plt.title('Sampling Distribution of the Mean')
plt.show()

Точно так же, как другие распределения, которые мы обсуждали, имеют среднее значение и стандартное отклонение, это выборочное распределение среднего также имеет эти характеристики. Чтобы отличить выборочное распределение от простого частотного распределения, среднее значение и стандартное отклонение выборочного распределения среднего имеют специальные названия. Среднее значение выборочного распределения среднего называется ожидаемым значением среднего . Это называется ожидаемым значением, потому что среднее выборочного распределения среднего совпадает со средним значением генеральной совокупности. Когда мы выбираем случайную выборку из популяции, наше лучшее предположение состоит в том, что среднее значение для выборки будет таким же, как среднее для популяции, поэтому наше ожидаемое среднее значение будет средним значением для популяции. Стандартное отклонение выборочного распределения среднего называется стандартной ошибкой. Таким образом, стандартная ошибка — это просто стандартное отклонение выборочного распределения.

# Calculate the variance and standard deviation of the dataset
variance = np.var(sample_means)
std_dev = np.std(sample_means)

# Create a histogram
plt.hist(sample_means, bins=30, alpha=0.5)
plt.axvline(x=np.mean(sample_means), color='r', linestyle='--', label='Expected Value of Mean')
plt.axvline(x=np.median(sample_means), color='g', linestyle='--', label='Median')
plt.axvline(x=np.mean(sample_means) + std_dev, color='b', linestyle='--', label='Standard Error')
plt.axvline(x=np.mean(sample_means) - std_dev, color='b', linestyle='--')
plt.legend()
plt.title('Histogram of Sampling Distribution of the Mean')
plt.xlabel('Value')
plt.ylabel('Mean Frequency')

Стандартная ошибка среднего предоставляет практически ту же информацию, что и стандартное отклонение, за исключением того, что она относится к средней разнице между ожидаемым значением (например, средним значением генеральной совокупности) и средним значением отдельной выборки. Стандартная ошибка среднего служит индикатором достоверности, которую мы можем придать выборочному среднему, точно представляющему истинное среднее значение генеральной совокупности. Другими словами, он количественно определяет уровень ошибки, которую мы можем предвидеть, утверждая, что среднее значение выборки отражает среднее значение большей совокупности. Термин «стандартная ошибка» возникает из-за его функции измерения этой ошибки. Понимание ожидаемого уровня ошибки при отборе выборки определенного размера из совокупности имеет решающее значение для определения значимости различий между статистикой выборки (например, средним значением выборки) и параметрами совокупности (например, средним значением совокупности). Эта концепция лежит в основе всей выводной статистики.

import seaborn as sns
# Create distribution plot
sns.histplot(sample_means, kde=True)
plt.axvline(x=np.mean(sample_means), color='r', linestyle='--', label='Expected Value of Mean')
plt.axvline(x=np.median(sample_means), color='g', linestyle='--', label='Median')
plt.axvline(x=np.mean(sample_means) + std_dev, color='b', linestyle='--', label='Standard Error')
plt.axvline(x=np.mean(sample_means) - std_dev, color='b', linestyle='--')
plt.legend()
# Set plot labels and title
plt.xlabel('Mean of samples')
plt.ylabel('Frequency of Means')
plt.title('Distribution Plot')

# Display the plot
plt.show()

В большинстве случаев исследователи не берут 1000 выборок одинакового размера из населения, а затем вычисляют среднее значение и стандартное отклонение этого распределения выборочных средних. На самом деле, в большинстве случаев исследователи собирают данные только из одной выборки, а затем используют эту выборку, чтобы делать выводы о населении, из которого была составлена ​​выборка.

# Calculate the standard error
sample_size = len(sample_means)
standard_deviation = np.std(sample_means)
standard_error = standard_deviation / np.sqrt(sample_size)

# Print the standard error
print("Standard Error:", round(standard_error,3))
from scipy.stats import sem
round(sem(sample_means),3)

Центральная предельная теорема (повторное посещение)

Проще говоря, центральная предельная теорема утверждает, что до тех пор, пока у вас достаточно большой размер выборки (например, n = 30), выборочное распределение среднего будет нормально распределено, даже если распределение баллов в вашей выборке таковым не является. Ранее я обсуждал распределения, которые не имели форму красивой, нормальной, колоколообразной кривой. Центральная предельная теорема доказывает, что даже если у вас есть такое ненормальное распределение в вашей совокупности, выборочное распределение среднего, скорее всего, будет аппроксимировать хорошее, нормальное, колоколообразное распределение, если у вас есть по крайней мере 30 случаев в вашей выборке.

# Generate a skewed dataset with mean=50 and standard deviation=10
data_skewed = np.random.normal(50, 10, 50)**5

import seaborn as sns
# Create distribution plot
sns.histplot(data_skewed, kde=True)
plt.axvline(x=np.mean(data_skewed), color='r', linestyle='--', label='Mean')
plt.axvline(x=np.median(data_skewed), color='g', linestyle='--', label='Median')
plt.legend()
# Set plot labels and title
plt.xlabel('Data Points')
plt.ylabel('Frequency')
plt.title('Distribution Plot')

# Display the plot
plt.show()

# Generate the population data
population_data = data_skewed
# Sample size and number of samples
sample_size = 30
num_samples = 1000

# Initialize an array to store sample means
sample_means = np.zeros(num_samples)

# Generate samples and calculate their means
for i in range(num_samples):
    sample = np.random.choice(data_skewed, size=sample_size, replace=False)
    sample_means[i] = np.mean(sample)

# Calculate the variance and standard deviation of the dataset
variance = np.var(sample_means)
std_dev = np.std(sample_means)
import seaborn as sns
# Create distribution plot
sns.histplot(sample_means, kde=True)
plt.axvline(x=np.mean(sample_means), color='r', linestyle='--', label='Expected Value of Mean')
plt.axvline(x=np.median(sample_means), color='g', linestyle='--', label='Median')
plt.axvline(x=np.mean(sample_means) + std_dev, color='b', linestyle='--', label='Standard Error')
plt.axvline(x=np.mean(sample_means) - std_dev, color='b', linestyle='--')
plt.legend()
# Set plot labels and title
plt.xlabel('Mean of samples')
plt.ylabel('Frequency of Means')
plt.title('Distribution Plot')

# Display the plot
plt.show()

Нормальное распределение и распределение t: сравнение показателей z и значений t

мы научились определять вероятность случайного выбора отдельного случая с определенной оценкой по некоторой переменной из совокупности с заданным средним значением по этой переменной. Мы сделали это, преобразовав исходную оценку в z-оценку. Теперь, когда мы знаем, как вычислить стандартную ошибку, мы можем снова использовать z-показатели, чтобы определить вероятность случайного выбора выборки с определенным средним значением переменной из совокупности с заданным средним значением той же переменной. Мы также можем использовать семейство распределений t для генерации значений t, чтобы вычислить те же типы вероятностей.

Что нужно помнить, прежде чем идти вперед

  • нормальное распределение представляет собой теоретическое распределение в форме колокола и основано на идее данных о населении.
  • вероятности, связанные с оценками z, связаны с нормальным распределением.
  • стандартное отклонение, полученное из выборочных данных, является лишь оценкой стандартного отклонения генеральной совокупности.
  • чем меньше выборка, тем менее точно стандартное отклонение выборки оценивает стандартное отклонение совокупности.
  • формула стандартной ошибки частично основана на стандартном отклонении.

Когда мы собираем всю эту информацию вместе, мы в конечном итоге сталкиваемся с небольшой дилеммой. Если мы можем использовать стандартную ошибку для получения z-показателей и вероятностей, и эти z-показатели и вероятности основаны на нормальном распределении, что нам делать в тех случаях, когда мы используем выборочные данные и у нас есть небольшая выборка? Не повлияет ли наша маленькая выборка на нашу стандартную ошибку? И не повлияет ли эта стандартная ошибка на наши z-значения? Будут ли наши z-значения и вероятности точными, если у нас будет небольшая выборка? К счастью, эти опасения уже были учтены более крупным мозгом, чем мой. Оказывается, у нормального распределения есть близкое семейство родственников: семейство t-распределений. Эти распределения очень похожи на нормальное распределение, за исключением того, что форма распределения t зависит от размера выборки. Для больших выборок (например, > 120) форма t-распределения практически идентична нормальному распределению. Однако по мере уменьшения размера выборки форма распределения t становится более плоской в ​​середине и более высокой на концах. Другими словами, по мере уменьшения размера выборки будет меньше случаев, близких к среднему, и больше случаев, далеких от среднего, в хвостах распределения. Как и нормальное распределение, t-распределение по-прежнему симметрично.

Теперь предположим, что я знаю, что средний мужчина тренируется 60 минут в неделю. Предположим далее, что у меня есть случайная выборка из 144 мужчин, и эта выборка занимается спортом в среднем 65 минут в неделю со стандартным отклонением 10 минут. Какова вероятность получить случайную выборку такого размера со средним значением 65, если фактическое среднее значение генеральной совокупности случайно равно 60?

import math
mean = 65
actual = 60 
std = 10 
sample_size = 144

t_value = (mean - actual)/(std/(math.sqrt(sample_size)))
t_value

Наконец, чтобы проиллюстрировать разницу между t-распределением и нормальным распределением, предположим, что размер нашей выборки был 25, а не 144.

sample_size = 25
t_value = (mean - actual)/(std/(math.sqrt(sample_size)))
t_value

Теперь, взглянув на нашу таблицу значений t с 24 степенями свободы, мы обнаруживаем, что вероятность получения значения t такого размера или больше составляет примерно p = 0,02. Обратите внимание, что если бы у нас был больший размер выборки, равный 144, вероятность получения значения t, равного 2,50 или больше, была бы ближе к p = 0,01.

Когда известно стандартное отклонение генеральной совокупности (редкое явление в большинстве исследований в области социальных наук), можно использовать нормальное распределение. Но когда стандартное отклонение совокупности неизвестно или размер выборки мал, следует использовать семейство распределений t.

Влияние размера выборки и стандартного отклонения на стандартную ошибку

import numpy as np

data = np.array([3, 4, 4, 5, 7, 8, 12, 14, 14, 15, 17, 19, 22, 24, 24, 24, 25, 28, 28, 29])

sem = np.std(data, ddof=1) / np.sqrt(np.size(data))

print(sem)

data = np.array([1,2,3,3, 4, 4, 5, 7, 8, 12, 14, 14, 15, 17, 19, 22, 24, 24, 24, 25, 28, 28, 29,3, 4, 4, 5, 7, 8, 12, 14, 14, 15, 17, 19, 22, 24, 24, 24, 25, 28, 28, 29
                ,1,2,3,3, 4, 4, 5, 7, 8, 12, 14, 14, 15, 17, 19, 22, 24, 24, 24, 25, 28, 28, 29,3, 4, 4, 5, 7, 8, 12, 14, 14, 15, 17, 19, 22, 24, 24, 24, 25, 28, 28, 29])
sem = np.std(data, ddof=1) / np.sqrt(np.size(data))
print(sem)

data = np.array([3, 4, 4, 5, 7, 8, 12, 14, 14, 15, 17, 19, 22, 24, 24, 24, 25, 28, 28, 290])

sem = np.std(data, ddof=1) / np.sqrt(np.size(data))

print(sem)

Статистическая значимость, размер эффекта и доверительные интервалы

Три из распространенных инструментов, используемых исследователями для получения выводов по выборочным данным, включают проверку статистической значимости и расчет размеров эффекта и доверительных интервалов.

Чтобы понять статистическую значимость, важно понимать различие между выборкой и генеральной совокупностью. Выборка представляет отдельных лиц или группы, от которых собираются данные, в то время как совокупность относится к более крупной группе, которую должна представлять выборка. Когда исследователи собирают данные из выборки, их цель часто заключается в том, чтобы сделать выводы об основной совокупности. Статистическая значимость относится к вероятности или правдоподобию того, что статистика, рассчитанная на основе выборки, действительно отражает явление, существующее в совокупности, которую она представляет. По сути, статистическая значимость служит метрикой для определения того, соответствуют ли наблюдения в нашей выборке тому, что происходит в популяции, которую она предназначена представлять.

Одним из факторов, препятствующих этому, является неясное население.

Точно так же, как существует выборочное распределение и стандартная ошибка среднего, существуют выборочные распределения и стандартные ошибки для всех статистических данных, включая коэффициенты корреляции, коэффициенты F из ANOVA, значения t из t-тестов, коэффициенты регрессии и т. д.

p-value используется для проверки статистической значимости.

from scipy.stats import ttest_ind

# Sample data (replace with your own datasets)
sample1 = [1, 2, 3, 4, 5]
sample2 = [6, 7, 8, 9, 10]

# Perform t-test (independent two-sample t-test)
t_statistic, p_value = ttest_ind(sample1, sample2)

# Print the p-value
print("P-value:", p_value)

Проверка гипотез и ошибки первого рода

Идея здесь проста. Прежде чем мы вычислим статистику и решим, является ли результат статистически значимым, мы должны установить стандарт или эталон. Для этого мы разрабатываем гипотезу и устанавливаем критерий, который будем использовать при принятии решения о сохранении или отклонении нашей гипотезы. Основная гипотеза, представляющая интерес для исследований в области социальных наук, — это нулевая гипотеза (H0). Поскольку слово «нулевой» означает ноль, нулевая гипотеза всегда предполагает отсутствие эффекта.

Обратите внимание, что нулевая гипотеза всегда относится к отсутствию эффекта в популяции. Мы могли бы знать, что есть шанс, что наша выборка будет иметь другое среднее значение, чем наша совокупность, но мы можем предположить, что наша выборка будет иметь то же среднее значение, что и наша совокупность. Таким образом, наша нулевая гипотеза будет заключаться в том, что среднее значение нашей популяции и среднее значение выборки не будут отличаться друг от друга (т. Е. Никакого эффекта). Мы могли бы записать эту гипотезу символически следующим образом:

H0 :μ = X

Конечно, при наличии одной гипотезы (нулевой) всегда возможны альтернативные гипотезы. Одной из альтернатив нулевой гипотезе является противоположная гипотеза. В то время как нулевая гипотеза состоит в том, что средние значения выборки и генеральной совокупности будут равны друг другу, альтернативная гипотеза может состоять в том, что они не будут равны друг другу. Эта альтернативная гипотеза (HA или H1) будет символически записана как

HA :μ ≠ X

где μ — среднее значение генеральной совокупности, X — среднее значение выборки.

Обратите внимание, что наша альтернативная гипотеза не включает каких-либо предположений о том, будет ли среднее значение выборки больше или меньше среднего значения генеральной совокупности, а только то, что они будут различаться. Это известно как двусторонняя альтернативная гипотеза. Я мог бы предложить другую альтернативную гипотезу. Например, я мог бы предположить, что среднее значение моей выборки будет больше, чем среднее значение моей популяции, потому что среднее значение популяции было рассчитано несколько лет назад, а мужчины (и их ноги) становятся больше с каждым новым поколением. Когда моя альтернативная гипотеза является направленной (т. е. включает предположение о том, какое значение будет больше), у меня есть односторонняя альтернативная гипотеза. В примере с размером обуви моя односторонняя альтернативная гипотеза будет выглядеть так:

HA :μ < X

где m — среднее значение генеральной совокупности, X — среднее значение выборки.

Предположим, для этого примера, что мы используем двустороннюю гипотезу и что среднее значение совокупности и среднее значение выборки отличаются друг от друга, без указания направления различия. На этом этапе процесса мы установили нашу нулевую и альтернативную гипотезы. Вы можете предположить, что все, что нам нужно сделать, это случайным образом выбрать нашу 1000 мужчин, найти их средний размер обуви и посмотреть, отличается ли он от 9 или равен ему. Но, увы, все не так просто. Предположим, мы получили нашу выборку и обнаружили, что их средний размер обуви составляет 9,00001. Технически это отличается от 9, но достаточно ли отличается, чтобы считаться значимым? Имейте в виду, что всякий раз, когда мы случайным образом выбираем выборку из совокупности, всегда есть шанс, что она будет немного отличаться от совокупности. Хотя мы можем предположить, что среднее значение выборки будет таким же, как и среднее значение генеральной совокупности, мы должны помнить, что наша выборка практически не может выглядеть точно так же, как наша генеральная совокупность. Таким образом, наш вопрос звучит так: насколько среднее значение нашей выборки должно отличаться от среднего значения нашей совокупности, прежде чем мы сочтем эту разницу значимой или значимой? Если среднее значение нашей выборки немного отличается от среднего значения генеральной совокупности, мы можем отмахнуться от этого и сказать: «Ну, разница, вероятно, просто из-за случайной ошибки выборки или случайности». Но насколько разными должны быть наши средние значения для выборки и генеральной совокупности, чтобы мы пришли к выводу, что разница, вероятно, не является случайной? Вот где наш альфа-уровень вступает в игру. Альфа-уровень — это стандарт, установленный исследователем, который используется для определения того, является ли результат статистически значимым. Часто исследователи используют альфа-уровень 0,05, что означает, что если вероятность того, что результат возникнет случайно, меньше, чем этот альфа-уровень 0,05, исследователь сделает вывод, что результат не был получен случайно и, следовательно, является статистически значимым.

from scipy.stats import ttest_1samp

# Sample data (replace with your own dataset)
data = [3, 5, 6, 2, 7, 4, 6, 3, 4, 5]

# Null hypothesis: population mean is 4
null_mean = 4

# Perform one-sample t-test
t_statistic, p_value = ttest_1samp(data, null_mean)

# Set the significance level
alpha = 0.05

# Compare p-value with the significance level
if p_value < alpha:
    print("Reject the null hypothesis")
else:
    print("Fail to reject the null hypothesis")

np.mean(np.array(data))

p_value
import numpy as np

# Set the desired mean
mean = 14.02

# Set the number of data points
num_data_points = 1000

# Generate random data with the specified mean
data = np.random.normal(mean, size=num_data_points)

# Null hypothesis: population mean is 4
null_mean = 4

# Perform one-sample t-test
t_statistic, p_value = ttest_1samp(data, null_mean)

# Set the significance level
alpha = 0.05

# Compare p-value with the significance level
if p_value < alpha:
    print("Reject the null hypothesis")
else:
    print("Fail to reject the null hypothesis")

from scipy.stats import ttest_1samp

# Sample data (replace with your own dataset)
data = [3, 5, 6, 2, 7, 4, 6, 3, 4, 5]

# Null hypothesis: population mean is 4
null_mean = 4

# Perform one-sample t-test
t_statistic, p_value = ttest_1samp(data, null_mean)

# Set the significance level
alpha = 0.05

# Type I error (False positive)
if p_value < alpha:
    print("Type I error occurred: Reject the null hypothesis (when it is actually true)")
else:
    print("No Type I error: Fail to reject the null hypothesis correctly")

# Type II error (False negative)
if p_value >= alpha:
    print("Type II error occurred: Fail to reject the null hypothesis (when it is actually false)")
else:
    print("No Type II error: Reject the null hypothesis correctly")
  • Ошибка типа I (ложноположительный результат): если p-значение меньше уровня значимости, мы неправильно отвергаем нулевую гипотезу (когда она действительно верна).
  • Ошибка типа II (ложноотрицательный): если p-значение больше или равно уровню значимости, мы не можем неправильно отвергнуть нулевую гипотезу (когда она на самом деле ложна).

Размер эффекта в глубину

  • Различные статистические данные имеют разные размеры эффекта, связанные с ними. Например, для корреляции и регрессии обычно используются меры того, какая часть дисперсии одной переменной объясняется другой переменной или переменными (т. е. r2 или R2).
  • Обычными мерами размера эффекта для анализа ANOVA являются эта-квадрат и частичный эта-квадрат.

мы рассмотрим d Коэна, общую формулу размера эффекта, используемую с t-тестами.

Чтобы рассчитать размер эффекта в статистике с помощью Python, вы можете использовать различные методы в зависимости от конкретного статистического теста или показателя, с которым вы работаете. Вот несколько примеров:

#Cohen's d for Independent Samples T-test:
import numpy as np
from scipy.stats import ttest_ind

# Sample data (replace with your own datasets)
group1 = [1, 2, 3, 4, 5]
group2 = [6, 7, 8, 9, 10]

# Perform independent samples t-test
t_statistic, p_value = ttest_ind(group1, group2)

# Calculate Cohen's d
mean1, mean2 = np.mean(group1), np.mean(group2)
std1, std2 = np.std(group1, ddof=1), np.std(group2, ddof=1)
pooled_std = np.sqrt(((len(group1)-1)*(std1**2) + (len(group2)-1)*(std2**2)) / (len(group1) + len(group2) - 2))
effect_size = (mean1 - mean2) / pooled_std

# Print the effect size
print("Cohen's d:", effect_size)
import numpy as np
from scipy.stats import pearsonr

# Sample data (replace with your own datasets)
x = [1, 2, 3, 4, 5]
y = [6, 7, 8, 9, 10]

# Calculate Pearson's correlation coefficient
correlation_coef, _ = pearsonr(x, y)

# Print the effect size (absolute value of correlation coefficient)
effect_size = np.abs(correlation_coef)
print("Pearson's r:", effect_size)
#Cohen's d for Paired Samples T-test:
import numpy as np
from scipy.stats import ttest_rel

# Sample data (replace with your own datasets)
before = np.array([1, 2, 3, 4, 5])
after = np.array([6, 7, 8, 9, 10])

# Perform paired samples t-test
t_statistic, p_value = ttest_rel(before, after)

# Calculate Cohen's d
mean_diff = np.mean(before) - np.mean(after)
std_diff = np.std(before - after, ddof=1)
effect_size = mean_diff / std_diff

# Print the effect size
print("Cohen's d:", effect_size)

Не существует жестких и быстрых правил относительно интерпретации величин d-эффекта Коэна. Общее эмпирическое правило заключается в том, что размеры эффекта Коэна меньше 0,20 являются небольшими, между 0,20 и 0,75 — умеренными, а значения выше 0,75 — большими.

Доверительные интервалы в глубине

Если наше гипотетическое значение среднего размера обуви в популяции равно 9, а наблюдаемый размер обуви в нашей выборке из 1000 мужчин равен 10 со стандартным отклонением 2. Используя эти данные, мы можем рассчитать доверительный интервал.

Доверительный интервал обеспечивает диапазон значений, которые, как мы уверены, с определенной степенью вероятности содержат параметр совокупности (например, среднее значение совокупности).

с определенной степенью вероятности содержит параметр совокупности (например, среднее значение совокупности). Большую часть времени исследователи хотят быть на 95 или 99 процентов уверенными в том, что доверительный интервал содержит параметр генеральной совокупности. Эти значения соответствуют значениям p, равным 0,05 и 0,01 соответственно.

Поскольку доверительный интервал включает в себя значения как большие, так и меньшие, чем выборочная статистика, мы всегда используем альфа-уровень для двустороннего теста, чтобы найти наше значение t,

#Confidence Interval for a Population Mean:
import numpy as np
from scipy.stats import t

# Sample data (replace with your own dataset)
data = [1, 2, 3, 4, 5]

# Set the desired confidence level and degrees of freedom
confidence_level = 0.95
degrees_of_freedom = len(data) - 1

# Calculate the sample mean and standard error
sample_mean = np.mean(data)
standard_error = np.std(data, ddof=1) / np.sqrt(len(data))

# Calculate the t-value based on the confidence level and degrees of freedom
t_value = t.ppf((1 + confidence_level) / 2, degrees_of_freedom)

# Calculate the confidence interval
lower_bound = sample_mean - t_value * standard_error
upper_bound = sample_mean + t_value * standard_error

# Print the confidence interval
print("Confidence Interval:", (lower_bound, upper_bound))
#Confidence Interval for the Difference between Two Population Means (Independent Samples):
import numpy as np
from scipy.stats import t

# Sample data (replace with your own datasets)
group1 = [1, 2, 3, 4, 5]
group2 = [6, 7, 8, 9, 10]

# Set the desired confidence level and degrees of freedom
confidence_level = 0.95
degrees_of_freedom = len(group1) + len(group2) - 2

# Calculate the sample means and standard errors
mean1, mean2 = np.mean(group1), np.mean(group2)
std1, std2 = np.std(group1, ddof=1), np.std(group2, ddof=1)
standard_error = np.sqrt((std1 ** 2 / len(group1)) + (std2 ** 2 / len(group2)))

# Calculate the t-value based on the confidence level and degrees of freedom
t_value = t.ppf((1 + confidence_level) / 2, degrees_of_freedom)

# Calculate the confidence interval
lower_bound = (mean1 - mean2) - t_value * standard_error
upper_bound = (mean1 - mean2) + t_value * standard_error

# Print the confidence interval
print("Confidence Interval:", (lower_bound, upper_bound))
import numpy as np
import matplotlib.pyplot as plt

# Sample data (replace with your own dataset)
data = [1, 2, 3, 4, 5]

# Calculate the confidence interval
confidence_level = 0.95
sample_mean = np.mean(data)
standard_error = np.std(data, ddof=1) / np.sqrt(len(data))
margin_of_error = standard_error * 1.96  # For a 95% confidence interval

# Plot the data with confidence interval
plt.errorbar(1, sample_mean, yerr=margin_of_error, fmt='o', color='black')
plt.axhline(y=sample_mean, color='red', linestyle='--')

# Set plot labels and title
plt.xlabel('Data')
plt.ylabel('Mean')
plt.title('Confidence Interval')

# Display the plot
plt.show()

import numpy as np
import matplotlib.pyplot as plt

# Sample data (replace with your own dataset)
data = [1, 2, 3, 4, 5]

# Set the desired confidence level
confidence_level = 0.95

# Calculate the sample mean and standard deviation
sample_mean = np.mean(data)
sample_std = np.std(data, ddof=1)

# Set the sample size and number of simulations for the sampling distribution
sample_size = len(data)
num_simulations = 1000

# Initialize an array to store sample means
sample_means = np.zeros(num_simulations)

# Generate samples and calculate their means
for i in range(num_simulations):
    sample = np.random.choice(data, size=sample_size, replace=True)
    sample_means[i] = np.mean(sample)

# Calculate the lower and upper bounds of the confidence interval
lower_bound = np.percentile(sample_means, 100 * (1 - confidence_level) / 2)
upper_bound = np.percentile(sample_means, 100 * (1 + confidence_level) / 2)

# Plot the sampling distribution with confidence interval
plt.hist(sample_means, bins=30, edgecolor='black')
plt.axvline(lower_bound, color='red', linestyle='--', label='Lower Bound')
plt.axvline(upper_bound, color='red', linestyle='--', label='Upper Bound')
plt.axvline(sample_mean, color='blue', label='Sample Mean')
plt.xlabel('Sample Mean')
plt.ylabel('Frequency')
plt.title('Sampling Distribution with Confidence Interval')
plt.legend()
plt.show()

Я надеюсь, что этот пост поможет вам разобраться в концепции статистики на самом базовом уровне. увидимся в части-2.

Если вы чувствуете, что можете извлечь из этого какую-то пользу, загляните на мой YouTube, где я регулярно обновляю проекты данных, начиная от инженерии данных и заканчивая наукой о данных. ссылка здесь: https://www.youtube.com/channel/UCiWd572-4LeH0IqJ5A7LavA

ССЫЛКА:

https://www.book2look.com/embed/9781317526988