Как рассчитать коэффициент вариации в Python


Коэффициент вариации , часто обозначаемый аббревиатурой CV , представляет собой способ измерения степени разброса значений в наборе данных по отношению к среднему значению. Он рассчитывается как:

CV = σ / μ

куда:

  • σ: стандартное отклонение набора данных
  • μ: среднее значение набора данных

Говоря простым языком, коэффициент вариации — это просто отношение между стандартным отклонением и средним значением.

Когда использовать коэффициент вариации

Коэффициент вариации часто используется для сравнения вариации между двумя разными наборами данных.

В реальном мире он часто используется в финансах для сравнения среднего ожидаемого дохода от инвестиций с ожидаемым стандартным отклонением инвестиций. Это позволяет инвесторам сравнивать соотношение риска и доходности между инвестициями.

Например, предположим, что инвестор рассматривает возможность инвестирования в следующие два взаимных фонда:

Взаимный фонд A: среднее = 9%, стандартное отклонение = 12,4%

Взаимный фонд B: среднее = 5%, стандартное отклонение = 8,2%

При расчете коэффициента вариации для каждого фонда инвестор находит:

CV для взаимного фонда A = 12,4% / 9% = 1,38

CV для взаимного фонда B = 8,2% / 5% = 1,64

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

Как рассчитать коэффициент вариации в Python

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

import numpy as np

cv = lambda x: np.std(x, ddof= 1 ) / np.mean (x) \* 100

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

Пример 1: Коэффициент вариации для одного массива

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

#create vector of data
data = [88, 85, 82, 97, 67, 77, 74, 86, 81, 95, 77, 88, 85, 76, 81, 82]

#define function to calculate cv
cv = lambda x: np.std(x, ddof= 1 ) / np.mean (x) \* 100 

#calculate CV
cv(data)

9.234518

Коэффициент вариации оказывается равным 9,23 .

Пример 2: Коэффициент вариации для нескольких векторов

В следующем коде показано, как рассчитать CV для нескольких столбцов в кадре данных pandas:

import numpy as np
import pandas as pd

#define function to calculate cv
cv = lambda x: np.std(x, ddof= 1 ) / np.mean (x) \* 100 

#create pandas DataFrame
df = pd.DataFrame({'a': [88, 85, 82, 97, 67, 77, 74, 86, 81, 95],
 'b': [77, 88, 85, 76, 81, 82, 88, 91, 92, 99],
 'c': [67, 68, 68, 74, 74, 76, 76, 77, 78, 84]})

#calculate CV for each column in data frame
df.apply (cv)

a 11.012892
b 8.330843
c 7.154009
dtype: float64

Обратите внимание, что пропущенные значения будут просто проигнорированы при расчете коэффициента вариации:

import numpy as np
import pandas as pd

#define function to calculate cv
cv = lambda x: np.std(x, ddof= 1 ) / np.mean (x) \* 100 

#create pandas DataFrame
df = pd.DataFrame({'a': [88, 85, 82, 97, 67, 77, 74, 86, 81, 95],
 'b': [77, 88, 85, 76, 81, 82, 88, 91, np.nan , 99],
 'c': [67, 68, 68, 74, 74, 76, 76, 77, 78, np.nan ]})

#calculate CV for each column in data frame
df.apply (cv)

a 11.012892
b 8.497612
c 5.860924
dtype: float64

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

Как рассчитать коэффициент вариации R
Как рассчитать коэффициент вариации в Excel
Как рассчитать коэффициент вариации в Google Sheets