Как посчитать дисперсию в python
Перейти к содержимому

Как посчитать дисперсию в python

  • автор:

Как рассчитать выборку и дисперсию населения в Python

Дисперсия — это способ измерения разброса значений в наборе данных.

Формула для расчета дисперсии населения :

σ 2 = Σ (xi – μ) 2 / N

  • Σ : символ, означающий «сумма».
  • μ : Среднее значение населения
  • x i : i -й элемент из совокупности
  • N : Численность населения

Формула для расчета выборочной дисперсии :

s 2 = Σ (x i – x ) 2 / (n-1)

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

from statistics import variance, pvariance #calculate sample variance variance(x) #calculate population variance pvariance(x) 

В следующих примерах показано, как использовать каждую функцию на практике.

Пример 1: Расчет выборочной дисперсии в Python

Следующий код показывает, как вычислить выборочную дисперсию массива в Python:

from statistics import variance #define data data = [4, 8, 12, 15, 9, 6, 14, 18, 12, 9, 16, 17, 17, 20, 14] #calculate sample variance variance(data) 22.067 

Выборочная дисперсия оказывается равной 22,067 .

Пример 2: Расчет дисперсии населения в Python

Следующий код показывает, как вычислить дисперсию совокупности массива в Python:

from statistics import pvariance #define data data = [4, 8, 12, 15, 9, 6, 14, 18, 12, 9, 16, 17, 17, 20, 14] #calculate sample variance pvariance(data) 20.596 

Дисперсия населения оказывается равной 20,596 .

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

При расчете дисперсии выборки и генеральной совокупности следует учитывать следующее:

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

Дополнительные ресурсы

В следующих руководствах объясняется, как рассчитать другие показатели распространения в Python:

Функция variance() модуля statistics в Python, выборочная дисперсия

Выборочная дисперсия от числовой последовательности

Синтаксис:
import statistics statistics.variance(data, xbar=None) 
Параметры:
  • data — данные, последовательность или итерация,
  • xbar=None — среднее значение данных data .
Возвращаемое значение:
  • выборочная дисперсия данных data .
Описание:

Функция variance() модуля statistics возвращает выборочную дисперсию данных data , которые представляют готовую выборку элементов из всей числовой последовательности.

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

Дисперсия является мерой изменчивости (разброса) элементов числовой последовательности. Большая дисперсия указывает на то, что данные распределены относительно среднего значения. Небольшая дисперсия указывает на то, что они тесно сгруппированы вокруг среднего значения числовой последовательности.

Если указан необязательный второй аргумент xbar , то это должно быть среднее значение данных data . Если аргумент xbar отсутствует или None (по умолчанию), то среднее арифметическое значение рассчитывается автоматически.

Используйте функцию statistics.variance() , когда данные являются выборкой из элементов числовой последовательности. Смотрите функцию statistics.pvariance() , чтобы вычислить дисперсию всей совокупности числовой последовательности.

Примеры использования функции statistics.variance() :

>>> import statistics >>> data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5] >>> statistics.variance(data) # 1.3720238095238095 # дисперсию всей числовой последовательности >>> statistics.pvariance(data) # 0.9739583333333334 

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

>>> data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5] >>> m = statistics.mean(data) >>> statistics.variance(data, m) # 1.3720238095238095 

Функция statistics.variance() не проверяет переданное значение аргумента xbar на фактическое среднее значение числовой последовательности. Использование произвольных значений для xbar может привести к недействительным или невозможным результатам.

Функция statistics.variance() поддерживает десятичные и дробные значения:

>>> from decimal import Decimal as D >>> statistics.variance([D("27.5"), D("30.25"), D("30.25"), D("34.5"), D("41.75")]) # Decimal('31.01875') >>> from fractions import Fraction as F >>> statistics.variance([F(1, 6), F(1, 2), F(5, 3)]) # Fraction(67, 108) 

Примечание. Значение этой функции представляет собой выборочную дисперсию s² из элементов числовой последовательности с поправкой Бесселя, также известную как дисперсия с N-1 степенями свободы. При условии, что элементы данных репрезентативны (например, независимы и одинаково распределены), то результатом должна быть объективная оценка истинной дисперсии всей числовой последовательности.

Если каким-то образом известно фактическое среднее значение всей числовой последовательности μ , то это значение необходимо передать функции statistics.pvariance() в качестве параметра mu , чтобы получить дисперсию выборки из числовой последовательности.

  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Функция mean() и fmean() модуля statistics, среднее арифметическое
  • Функция geometric_mean() модуля statistics, среднее геометрическое
  • Функция harmonic_mean() модуля statistics, среднее гармоническое
  • Функция median() модуля statistics, медиана последовательности
  • Функция median_low() модуля statistics, наименьшее среднее значение
  • Функция median_high() модуля statistics, наибольшее среднее значение
  • Функция median_grouped() модуля statistics, медиана непрерывных данных
  • Функция mode() модуля statistics, распространенный элемент
  • Функция multimode() модуля statistics, часто встречающиеся элементы
  • Функция pstdev() модуля statistics, стандартное отклонение
  • Функция pvariance() модуля statistics, дисперсия элементов
  • Функция stdev() модуля statistics, выборочное отклонение
  • Функция variance() модуля statistics, выборочная дисперсия
  • Функция quantiles() модуля statistics, интервалы равной вероятности
  • Класс NormalDist() модуля statistics, распределение случайной величины
  • Функция covariance() модуля statistics ковариация данных
  • Функция correlation() модуля statistics, корреляция Пирсона
  • Функция linear_regression() модуля statistics, линейная регрессия

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

Расчет дисперсии и стандартного отклонения в Python

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

Время чтения: 11 мин.

Вступление

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

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

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

Расчет дисперсии

В статистике дисперсия — это мера того, насколько отдельные (числовые) значения в наборе данных отличаются от среднего или среднего значения . Дисперсия часто используется для количественной оценки разброса или дисперсии. Распространение — это характеристикавыборки или генеральной совокупности, которая описывает степень ее изменчивости.

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

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

  • это среднее квадратов этих различий. Мы можем выразить дисперсию с помощью следующего математического выражения:

В этом уравнении x ~i~ обозначает отдельные значения или наблюдения в наборе данных. μ обозначает среднее или среднее значение этих значений. n — количество значений в наборе данных.

Член x ~i~ — μ называется отклонением от среднего . Итак, дисперсия — это среднее квадратическое отклонение. Поэтому мы обозначили его как ^2^ .

Скажем, у нас есть набор данных [3, 5, 2, 7, 1, 3]. Чтобы найти его дисперсию, нам нужно вычислить среднее значение:

$$
(3 + 5 + 2 + 7 + 1 + 3) / 6 = 3,5
$

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

$$
(3 — 3,5) ^ 2 + (5 — 3,5) ^ 2 + (2 — 3,5) ^ 2 + (7 — 3,5) ^ 2 + (1 — 3,5) ^ 2 + (3 — 3,5) ^ 2 = 23,5
$

Чтобы найти дисперсию, нам просто нужно разделить этот результат на количество наблюдений следующим образом:

Это все. Разница наших данных составляет 3,916666667. Дисперсию сложно понять и интерпретировать, особенно насколько странны ее единицы.

Например, если наблюдения в нашем наборе данных измеряются в фунтах, тогда дисперсия будет измеряться в квадратных фунтах. Итак, мы можем сказать, что наблюдения составляют в среднем 3,916666667 квадратных фунтов, что далеко от среднего значения 3,5. К счастью, стандартное отклонение помогает решить эту проблему, но это тема следующего раздела.

Если мы применим концепцию дисперсии к набору данных, то сможем различить дисперсию выборки и дисперсию генеральной совокупности . Дисперсия генеральной совокупности — это дисперсия, которую мы видели раньше, и мы можем вычислить ее, используя данные из полной ^генеральной\ совокупности\ и\ выражение\ для\ 2^ .

Дисперсия выборки обозначается как S ^2,^ и мы можем вычислить ее, используя выборку из данной генеральной совокупности и следующее выражение:

Это выражение очень похоже на выражение для вычисления ^2,^ но в этом случае x ~i~ представляет отдельные наблюдения в выборке, а X — это среднее значение выборки.

S ^2^ обычно используется для оценки дисперсии генеральной ^совокупности\ (2^ ) с использованием выборки данных. Однако S ^2^ систематически недооценивает дисперсию населения. По этой причине его называют предвзятой оценкой дисперсии совокупности.

Когда у нас есть большая выборка, S ^2^ может быть адекватной оценкой ^2^ . Для небольших образцов он, как правило, слишком низкий. К счастью, есть еще одна простая статистика, которую мы можем использовать для более точной ^оценки\ σ\ 2^ . Вот его уравнение:

Это очень похоже на предыдущее выражение. Это похоже на квадрат отклонения от среднего, но в этом случае мы делим на n — 1 вместо n . Это называется поправкой Бесселя . Поправка Бесселя показывает, что S ^2^ ~n-1~ является наилучшей несмещенной оценкой дисперсии генеральной совокупности. Итак, на практике мы будем использовать это уравнение для оценки дисперсии генеральной совокупности с использованием выборки данных. Обратите внимание, что S ^2^ ~n-1~ также известен как дисперсия с n — 1 степенями свободы.

Теперь, когда мы узнали, как вычислить дисперсию с помощью математического выражения, пора приступить к действию и вычислить дисперсию с помощью Python.

Кодирование функции variance () в Python

Чтобы вычислить дисперсию, мы собираемся закодировать функцию Python под названием variance() . Эта функция возьмет некоторые данные и вернет их дисперсию. Внутри variance() мы собираемся вычислить среднее значение данных и квадратные отклонения от среднего. Наконец, мы собираемся вычислить дисперсию, найдя среднее значение отклонений.

Вот возможная реализация variance() :

 >>> def variance(data): . # Number of observations . n = len(data) . # Mean of the data . mean = sum(data) / n . # Square deviations . deviations = [(x - mean) ** 2 for x in data] . # Variance . variance = sum(deviations) / n . return variance . >>> variance([4, 8, 6, 5, 3, 2, 8, 9, 2, 5]) 5.76 

Сначала мы вычисляем количество наблюдений ( n ) в наших данных, используя встроенную функцию len() . Затем мы вычисляем среднее значение данных, деля общую сумму наблюдений на количество наблюдений.

Следующий шаг — вычислить квадратные отклонения от среднего. Для этого мы используем понимание list которое создает list квадратных отклонений с использованием выражения (x — mean) ** 2 где x обозначает каждое наблюдение в наших данных.

Наконец, мы вычисляем дисперсию, суммируя отклонения и деля их на количество наблюдений n .

В этом случае variance() вычислит дисперсию генеральной совокупности, потому что мы используем n вместо n — 1 для вычисления среднего значения отклонений. Если мы работаем с выборкой и хотим оценить дисперсию генеральной совокупности, то нам нужно обновить выражение variance = sum(deviations) / n до variance = sum(deviations) / (n — 1) .

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

 >>> def variance(data, ddof=0): . n = len(data) . mean = sum(data) / n . return sum((x - mean) ** 2 for x in data) / (n - ddof) . >>> variance([4, 8, 6, 5, 3, 2, 8, 9, 2, 5]) 5.76 >>> variance([4, 8, 6, 5, 3, 2, 8, 9, 2, 5], ddof=1) 6.4 

В этом случае мы удаляем некоторые промежуточные шаги и временные переменные, такие как deviations и variance . Мы также превращаем понимание list в выражение генератора , что намного эффективнее с точки зрения потребления памяти.

Обратите внимание, что эта реализация принимает второй аргумент, называемый ddof который по умолчанию 0 . Этот аргумент позволяет нам установить степени свободы, которые мы хотим использовать при вычислении дисперсии. Например, ddof=0 позволит нам вычислить дисперсию генеральной совокупности. Между тем, ddof=1 позволит нам оценить дисперсию генеральной совокупности с использованием выборки данных.

Использование Python pvariance () и variance ()

Python включает стандартный модуль, называемый statistics который предоставляет некоторые функции для вычисления базовой статистики данных. В этом случае statistics.pvariance() и statistics.variance()

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

Вот как работает Python pvariance() :

 >>> import statistics >>> statistics.pvariance([4, 8, 6, 5, 3, 2, 8, 9, 2, 5]) 5.760000000000001 

Нам просто нужно импортировать statistics а затем вызвать pvariance() с нашими данными в качестве аргумента. Это вернет дисперсию населения.

С другой стороны, мы можем использовать Python variance() для вычисления дисперсии выборки и использовать ее для оценки дисперсии всей генеральной совокупности. Это потому, что variance() использует n — 1 вместо n для вычисления дисперсии. Вот как это работает:

 >>> import statistics >>> statistics.variance([4, 8, 6, 5, 3, 2, 8, 9, 2, 5]) 6.4 

Это выборочная дисперсия S ^2^ . Таким образом, результатом использования Python variance() должна быть объективная оценка дисперсии совокупности ^2^ при условии, что наблюдения репрезентативны для всей совокупности.

Расчет стандартного отклонения

Стандартное отклонение измеряет степень вариации или дисперсии набора числовых значений. Стандартное отклонение представляет собой квадратный корень из дисперсии σ ^2^ и обозначается как σ. Итак, если мы хотим вычислить стандартное отклонение, то все, что нам нужно сделать, это извлечь квадратный корень из дисперсии следующим образом:

Опять же, нам нужно различать стандартное отклонение генеральной совокупности ^,\ которое\ представляет\ собой\ квадратный\ корень\ из\ дисперсии\ генеральной\ совокупности\ (2^ ), и стандартное отклонение выборки, которое является квадратным корнем из выборочной дисперсии ( S ^2^ ). Обозначим стандартное отклонение выборки как S :

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

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

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

Если мы пытаемся оценить стандартное отклонение генеральной совокупности с использованием выборки данных, тогда нам будет удобнее использовать n — 1 степень свободы. Вот математическое выражение, которое мы обычно используем для оценки дисперсии совокупности:
$
\ sigma_x = \ sqrt \ frac ^ <(x_i - \ mu_x) ^ 2>>
$
Обратите внимание, что это квадратный корень из дисперсии выборки с **n

  • 1** степенями свободы. Это равносильно тому, чтобы сказать:
    $
    S_ = \ sqrt
    $
    Как только мы узнаем, как рассчитать стандартное отклонение с использованием его математического выражения, мы можем взглянуть на то, как мы можем вычислить эту статистику с помощью Python.
Кодирование функции stdev () на Python

Чтобы вычислить стандартное отклонение набора данных, мы будем полагаться на нашу функцию variance() Мы также собираемся использовать функцию sqrt() math модуля стандартной библиотеки Python. Вот функция stdev() которая берет данные из совокупности и возвращает ее стандартное отклонение:

 >>> import math >>> # We relay on our previous implementation for the variance >>> def variance(data, ddof=0): . n = len(data) . mean = sum(data) / n . return sum((x - mean) ** 2 for x in data) / (n - ddof) . >>> def stdev(data): . var = variance(data) . std_dev = math.sqrt(var) . return std_dev >>> stdev([4, 8, 6, 5, 3, 2, 8, 9, 2, 5]) 2.4 

Наша stdev() принимает некоторые data и возвращает стандартное отклонение генеральной совокупности. Для этого мы полагаемся на нашу предыдущую variance() для вычисления дисперсии, а затем с помощью math.sqrt() извлекаем квадратный корень из дисперсии.

Если мы хотим использовать stdev() для оценки стандартного отклонения генеральной совокупности с использованием выборки данных, нам просто нужно вычислить дисперсию с n — 1 степенями свободы, как мы видели ранее. Вот более общий stdev() который также позволяет передавать степени свободы:

 >>> def stdev(data, ddof=0): . return math.sqrt(variance(data, ddof)) >>> stdev([4, 8, 6, 5, 3, 2, 8, 9, 2, 5]) 2.4 >>> stdev([4, 8, 6, 5, 3, 2, 8, 9, 2, 5], ddof=1) 2.5298221281347035 

В этой новой реализации мы можем использовать ddof=0 для вычисления стандартного отклонения генеральной совокупности или мы можем использовать ddof=1 для оценки стандартного отклонения генеральной совокупности с использованием выборки данных.

Использование Python pstdev () и stdev ()

Модуль statistics Python также предоставляет функции для расчета стандартного отклонения. Мы можем найти pstdev() и stdev() . Первая функция берет данные о генеральной совокупности и возвращает ее стандартное отклонение. Вторая функция берет данные из выборки и возвращает оценку стандартного отклонения генеральной совокупности.

Вот как работают эти функции:

 >>> import statistics >>> statistics.pstdev([4, 8, 6, 5, 3, 2, 8, 9, 2, 5]) 2.4000000000000004 >>> statistics.stdev([4, 8, 6, 5, 3, 2, 8, 9, 2, 5]) 2.5298221281347035 

Сначала нам нужно импортировать модуль statistics Затем мы можем вызвать statistics.pstdev() с данными по генеральной совокупности, чтобы получить ее стандартное отклонение.

Если у нас нет данных для всей генеральной совокупности, что является обычным сценарием, мы можем использовать выборку данных и использовать statistics.stdev() для оценки стандартного отклонения генеральной совокупности.

Заключение

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

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

Licensed under CC BY-NC-SA 4.0

Как посчитать дисперсию в pandas: простое руководство с шаг за шагом ��

Для расчета дисперсии в pandas мы можем использовать функцию var() , которая доступна для объектов типа Series и DataFrame.

import pandas as pd # Создаем пример DataFrame data = df = pd.DataFrame(data) # Рассчитываем дисперсию для столбца 'A' variance = df['A'].var() # Выводим результат print(f"Дисперсия столбца 'A': ")

Детальный ответ

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

pip install pandas

После успешной установки вы можете импортировать pandas в свой проект:

import pandas as pd

Теперь, когда у нас установлен pandas и мы импортировали его, можно приступить к вычислению дисперсии. Для примера давайте создадим DataFrame с некоторыми значениями:

data = df = pd.DataFrame(data)

Теперь у нас есть DataFrame с тремя столбцами: A, B и C. Мы можем использовать метод .var() для вычисления дисперсии каждого столбца:

variance = df.var() print(variance)

Метод .var() возвращает дисперсию каждого столбца в DataFrame. Результат будет представлен в виде нового Series, где индексы будут соответствовать именам столбцов, а значения — дисперсии. Также можно вычислить дисперсию только для определенных столбцов. Для этого можно указать названия столбцов через запятую в методе .var(). Например, если мы хотим вычислить дисперсию только для столбцов A и B, мы можем использовать следующий код:

variance_AB = df[['A', 'B']].var() print(variance_AB)

В этом примере мы используем двойные скобки, чтобы указать столбцы, для которых мы хотим вычислить дисперсию. Результат будет содержать только дисперсии для столбцов A и B. Кроме того, можно вычислить дисперсию для каждой строки в DataFrame. Для этого мы можем использовать параметр axis=1 в методе .var(). Например:

row_variance = df.var(axis=1) print(row_variance)

В этом примере мы вычисляем дисперсию для каждой строки в DataFrame. Результат будет представлен в виде нового Series, где индексы будут соответствовать номерам строк, а значения — дисперсии. Теперь, когда вы знаете, как посчитать дисперсию в pandas, вы можете использовать этот инструмент для анализа разброса данных в своих проектах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *