Понимание центральной предельной теоремы (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 включает несколько шагов, включая сбор выборочных данных, вычисление среднее значение выборки и стандартное отклонение, создание нескольких выборок и построение доверительного интервала. Следуя этим шагам, мы можем сделать точные выводы о населении и получить ценную информацию о данных.