Понимание центральной предельной теоремы (CLT)

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

Условия, необходимые для удержания CLT

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

Это:

Размер выборки достаточно велик, обычно больше или равен 30.
Большой размер выборки имеет решающее значение для корректности CLT, поскольку он предотвращает сильное влияние выбросов в данных на среднее значение выборки.

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

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

Важность CLT в статистике и машинном обучении

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

Реализация CLT в Python

Теперь, когда мы понимаем CLT и его важность в статистике и машинном обучении, давайте рассмотрим, как реализовать его в Python. Есть несколько шагов, связанных с реализацией CLT в Python:

Соберите образцы данных

Это можно сделать путем сбора данных в ходе опроса, эксперимента или моделирования.

Рассчитать выборочное среднее и стандартное отклонение

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

Используйте выборочное среднее и стандартное отклонение для расчета стандартной ошибки среднего

Стандартная ошибка среднего представляет собой стандартное отклонение среднего значения выборки и рассчитывается как стандартное отклонение выборки, деленное на квадратный корень размера выборки.

Создание нескольких выборок одинакового размера из совокупности

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

Вычислить среднее значение выборки

Это значение является оценкой среднего значения генеральной совокупности и будет нормально распределено в соответствии с CLT.

Вычислить стандартную ошибку оценки

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

Построить доверительный интервал

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

Проверяйте гипотезы и делайте прогнозы

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

#histogram plot of samples mean taken from uniform distribution

import numpy as np
import matplotlib.pyplot as plt

# Set the parameters
num_samples = 10000
sample_size = 300
distribution_range = (0, 1)

# Generate samples from a uniform distribution
samples = np.random.uniform(distribution_range[0], distribution_range[1], (num_samples, sample_size))

# Calculate the sample means
sample_means = np.mean(samples, axis=1)

# Plot the histogram of the sample means
plt.hist(sample_means, bins=30, density=True, edgecolor='black')
plt.title('Histogram of Sample Means')
plt.xlabel('Sample Mean')
plt.ylabel('Density')
plt.show()
#histogram plot of samples mean taken from exponential distribution

import numpy as np
import matplotlib.pyplot as plt

# Set the parameters
num_samples = 1000
sample_size = 50
lambda_param = 2

# Generate samples from an exponential distribution
samples = np.random.exponential(scale=1/lambda_param, size=(num_samples, sample_size))

# Calculate the sample means
sample_means = np.mean(samples, axis=1)

# Plot the histogram of the sample means
plt.hist(sample_means, bins=30, density=True, edgecolor='black')
plt.title('Histogram of Sample Means (Exponential Distribution)')
plt.xlabel('Sample Mean')
plt.ylabel('Density')
plt.show()
#inferencing the population parameter of gamma distributed data through samples mean using CLT.

import numpy as np

# Set the parameters
num_samples = 10000
sample_size = 50

# Gamma distribution parameters
gamma_shape = 2
gamma_scale = 1

# Calculate the theoretical mean and variance
theoretical_mean = gamma_shape * gamma_scale
theoretical_variance = (gamma_shape * gamma_scale ** 2)

# Generate samples from the Gamma distribution
samples = np.random.gamma(shape=gamma_shape, scale=gamma_scale, size=(num_samples, sample_size))

# Calculate the sample means
sample_means = np.mean(samples, axis=1)

# Calculate the empirical mean and variance of the sample means
empirical_mean = np.mean(sample_means)
empirical_variance = np.var(sample_means)

# Compare the theoretical and empirical values
print(f"Theoretical mean: {theoretical_mean:.4f}")
print(f"Empirical mean: {empirical_mean:.4f}")
print(f"\n")
print(f"Theoretical variance: {theoretical_variance:.4f}")
print(f"Empirical variance: {empirical_variance:.4f}")
import numpy as np

# Set the parameters
population_size = 100000
sample_size = 50
num_samples = 100

# Generate a random representative sample of salaries (in thousands)
# You should replace this with actual collected salary data
np.random.seed(42)  # Setting a seed for reproducibility
population_salaries = np.random.lognormal(mean=4.5, sigma=0.8, size=population_size)

# Generate multiple samples and calculate the sample means and standard deviations
sample_means = []
sample_std_devs = []

for _ in range(num_samples):
  sample_salaries = np.random.choice(population_salaries, size=sample_size)
  sample_means.append(np.mean(sample_salaries))
  sample_std_devs.append(np.std(sample_salaries))

# Calculate the average of the sample means and the standard error
average_sample_means = np.mean(sample_means)
standard_error = np.std(sample_means) / np.sqrt(num_samples)

# Calculate the 95% confidence interval
margin_of_error = 1.96 * standard_error
lower_limit = average_sample_means - margin_of_error
upper_limit = average_sample_means + margin_of_error

# Report the results
print(f"Estimated average salary (in thousands): {average_sample_means:.2f}")
print(f"95% confidence interval (in thousands): ({lower_limit:.2f}, {upper_limit:.2f})")

Заключение

В заключение отметим, что Центральная предельная теорема является фундаментальной концепцией статистики и машинного обучения. Это позволяет нам делать вероятностные выводы о совокупности на основе выборки данных и обеспечивает теоретическое обоснование многих часто используемых статистических методов.
Реализация CLT в Python включает несколько шагов, включая сбор выборочных данных, вычисление среднее значение выборки и стандартное отклонение, создание нескольких выборок и построение доверительного интервала. Следуя этим шагам, мы можем сделать точные выводы о населении и получить ценную информацию о данных.