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

Редакция Кодкампа

читать 1 мин


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

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

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

куда:

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

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

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

куда:

  • x : выборочное среднее
  • x i : i -й элемент из выборки
  • n : размер выборки

Мы можем использовать функции дисперсии и

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:

Как рассчитать межквартильный диапазон в Python
Как рассчитать коэффициент вариации в Python
Как рассчитать стандартное отклонение списка в 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)

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

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

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

Метод Python Statistics.variance()

❮ Статистические методы


Пример

Рассчитать дисперсию по выборке данных:

# Статистика импорта Библиотека
Статистика импорта

# Расчет дисперсия выборки данных
print(statistics.variance([1, 3, 5, 7, 9, 11]))
print(statistics.variance([2, 2.5, 1.25, 3.1, 1.75, 2.8]))
print(statistics.variance([-11, 5.5, -3.4, 7.1]))
print(statistics. variance([1, 30, 50, 100]))

Попробуйте сами »


Определение и использование

Метод statistics.variance() вычисляет дисперсию из выборки данных (из совокупности).

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

Совет: Чтобы рассчитать дисперсию всей совокупности, см. в статистике .pvariance() метод.


Синтаксис

статистика.дисперсия( данные , xbar )

Значения параметров

Параметр Описание
данные Обязательно. Используемые значения данных (могут быть любой последовательностью, списком или итератор)
xbar Дополнительно. Среднее значение данных. Если этот параметр опущен (или установлен в None), среднее значение рассчитывается автоматически

Примечание: Если данных содержит менее двух значений, возвращается ошибка StatisticsError.

Технические детали

Возвращаемое значение: Значение с плавающей запятой , представляющее выборку дисперсия приведенных данных
Версия Python: 3,4

❮ Статистические методы


ВЫБОР ЦВЕТА



Лучшие учебники
Учебник HTML
Учебник CSS
Учебник JavaScript
How To Tutorial
Учебник SQL
Учебник Python
Учебник W3.CSS
Учебник Bootstrap
Учебник PHP
Учебник Java
Учебник C++
Учебник jQuery

900 Справочник

900 Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

Основные примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.
CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery

FORUM | О

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

Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.

Как найти дисперсию с помощью Python

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

Что такое дисперсия?

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

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

Другие учебные пособия по науке о данныхКак найти выбросы с помощью IQR с использованием Python

 

Что такое дисперсия?

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

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

Как найти дисперсию?

Расчет дисперсии для набора данных может различаться в зависимости от того, является ли набор полной совокупностью или выборкой совокупности. Формула расчета дисперсии всей совокупности выглядит так: σ² = ∑ (Xᵢ— μ)²/N

Один из популярных статистических тестов, применяющих дисперсию, называется тестом дисперсионного анализа (ANOVA). Тест ANOVA используется для оценки того, существенно ли отличаются какие-либо средние группы друг от друга при анализе категориальной независимой переменной и количественной зависимой переменной. Например, вы хотите проанализировать, влияет ли использование социальных сетей на продолжительность сна. Вы можете разбить использование социальных сетей на разные категории, такие как низкое использование , среднее использование и high используйте , затем запустите тест ANOVA, чтобы определить, есть ли статистические различия между средними группами. Тест может показать, объясняются ли результаты групповыми или индивидуальными различиями.

Еще от встроенных специалистов по данным Расчет квартилей: пошаговое объяснение

 

Как найти дисперсию?

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

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

σ² = ∑ (Xᵢ— μ)² / N

Пояснение к формуле: σ = Сумма…

  • χᵢ = каждое значение
  • μ = Среднее значение
  • ν = количество значений. расчет шаг за шагом.

    Пример диапазона чисел: 8, 6, 12, 3, 13, 9

    Найдите среднее значение совокупности ( μ ):

     (8+ 6+12+ 3+ 13+ 9) / 6
    = 51/6
    = 8,5 

    Рассчитать отклонения от среднего путем вычитания среднего из каждого значения.

     8–8,5 = -0,5
    6–8,5 = -2,5
    12–8,5 = 3,5
    3–8,5 = -5,5
    13–8,5 = 4,5
    9–8,5 = 0,5 

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

     -0,5² = 0,25
    -2,5² = 6,25
    3,5² = 12,25
    -5,5² = 30,25
    4,5² = 20,25
    0,5² = 0,25 

    Суммируйте квадраты значений.

     0,25 + 6,25 + 12,25 + 30,25 + 20,25 + 0,25
    = 69,5 

    Разделите сумму квадратов на N или n-1 .

    Поскольку мы работаем со всем населением, разделим на N . Если бы мы работали с выборкой населения, мы бы разделили на

    n-1 .

    69,5/6 = 11,583

    Вот и все! Дисперсия нашего населения составляет 11,583 .

     

    Зачем использовать n-1 при расчете выборочной дисперсии?

    Применение к формуле n-1 называется поправкой Бесселя, названной в честь Фридриха Бесселя. При использовании выборок нам необходимо рассчитать предполагаемую дисперсию для совокупности. Если бы мы использовали N вместо n-1 для выборки, оценка была бы смещенной, потенциально недооценивая дисперсию генеральной совокупности. Использование n-1 сделает оценку дисперсии больше, переоценивая изменчивость в выборках, тем самым уменьшая погрешности.

    Давайте пересчитаем дисперсию, предполагая, что значения взяты из выборки:

     69,5 / (6–1)
    = 69,5/5
    = 13,9 

    Как видим, дисперсия больше!

    Еще от ЭрикаКак практиковать Word2Vec для НЛП с использованием Python

     

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

    • Написать собственную функцию расчета дисперсии
    • Использовать встроенную функцию Pandas
     

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

    • население : массив чисел
    • is_sample : логическое значение для изменения расчета в зависимости от того, работаем ли мы с выборкой или с популяцией

    Начните с определения функции, которая принимает два параметра.

     def calculate_variance(population, is_sample = False): 

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

     #рассчитать среднее
       среднее значение = (сумма (население) / len (население))
     

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

     # вычислить разницу
       diff = [(v - среднее значение) для v в популяции]
     

    Затем возведите в квадрат разности и просуммируйте их.

     #Квадратные разности и сумма
       sqr_diff = [d**2 для d в diff]
       sum_sqr_diff = сумма (sqr_diff)
     

    Наконец, рассчитайте дисперсию. Используя оператор If/Else , мы можем использовать параметр is_sample . Если is_sample истинно, вычислите дисперсию, используя ( n-1 ). Если оно ложно (по умолчанию), используйте N :

     #рассчитать дисперсию
       если is_sample == Истина:
           дисперсия = sum_sqr_diff/(len(население) - 1)
       еще:
           дисперсия = sum_sqr_diff/(len(население))
      
       возвратная дисперсия
    Полная функция calculate_variance будет выглядеть так:
    def calculate_variance (население, is_sample = False):
       #рассчитать среднее
       среднее значение = (сумма (население) / len (население))
      
       #рассчитать разницу
       diff = [(v - среднее значение) для v в популяции]
      
       #Квадратные разности и сумма
       sqr_diff = [d**2 для d в diff]
       sum_sqr_diff = сумма (sqr_diff)
      
       #рассчитать дисперсию
       если is_sample == Истина:
           дисперсия = sum_sqr_diff/(len(население) - 1)
       еще:
           дисперсия = sum_sqr_diff/(len(население))
      
       возвратная дисперсия 

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

    Тестирование функции calculate_variance

    Произошла ошибка.

    Невозможно выполнить JavaScript. Попробуйте посмотреть это видео на сайте www.youtube.com или включите JavaScript, если он отключен в вашем браузере.

    Как найти дисперсию

     

    Поиск дисперсии с помощью Pandas

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

     

    Загрузка данных примера

    В примере Pandas используется набор данных BMW Price Challenge от Kaggle, который можно загрузить бесплатно. Начните с импорта библиотеки Pandas, а затем прочтите файл CSV во фрейм данных Pandas:

     #import dependencies
    импортировать панд как pd
    # прочитать CSV-файл в фреймворк данных
    bmw_df = bmw_df = pd.read_csv("bmw_pricing_challenge.csv")
     

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

     #печатать количество строк
    печать (длина (bmw_df))
    #4843 строки
    #проверить, что кадр данных соответствует ожиданиям
    bmw_df. head()
     
    Отображение первых строк с помощью bmw_df.head()

     

    Поиск дисперсии для данных BMW

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

    Дисперсия для числовых столбцов во фрейме данных BMW

     

    Использование функции Pandas var()

    На случай, если мы забудем расчет дисперсии и не сможем написать собственную функцию, в Pandas есть встроенная функция для расчета дисперсии с именем переменная() . По умолчанию предполагается выборочная совокупность и в расчетах используется n-1 ; однако вы можете скорректировать расчет, передав ddof=0 аргумент.

     bmw_df[['mileage', 'engine_power', 'price']].var() 
    Pandas var() function

    Как мы видим, функция Var() соответствует значениям, полученным нашим calculate_variance  функция , и это всего одна строка кода. Анализируя результаты, мы видим, что пробег имеет высокую дисперсию, что означает, что значения имеют тенденцию сильно отличаться от среднего. Это имеет смысл, потому что многие факторы влияют на расстояние, которое нужно проехать человеку. Для сравнения, engine_power имеет низкую дисперсию, что указывает на то, что значения не сильно отличаются от среднего.

    Что вы хотите узнать дальше? Как использовать число с плавающей точкой в ​​Python (с примером кода!) оценить групповые различия. Дисперсия также влияет на то, какие статистические тесты могут помочь нам принимать решения, основанные на данных. Высокая дисперсия означает, что значения сильно отличаются от среднего, в то время как низкая дисперсия означает, что числа не сильно отличаются от среднего.