Как рассчитать V Крамера в Python?

Опубликовано: 9 Сентября, 2022

V Крамера: определяется как измерение длины между двумя заданными номинальными переменными. Номинальная переменная — это тип шкалы измерения данных, который используется для классификации различных типов данных. V Крамера находится между 0 и 1 (включительно). 0 указывает, что две переменные не связаны никаким отношением. 1 указывает на то, что существует сильная связь между двумя переменными. V Крамера можно рассчитать по следующей формуле:

√(X2/N) / min(C-1, R-1)

Here, 

  • X2: It is the Chi-square statistic
  • N: It represents the total sample size
  • R: It is equal to the number of rows
  • C: It is equal to the number of columns

Пример 1:

Давайте вычислим V Крамера для таблицы 3 × 3.

Python3




# Load necessary packages and functions
import scipy.stats as stats
import numpy as np
  
# Make a 3 x 3 table
dataset = np.array([[13, 17, 11], [4, 6, 9],
                    [20, 31, 42]])
  
# Finding Chi-squared test statistic,
# sample size, and minimum of rows
# and columns
X2 = stats.chi2_contingency(dataset, correction=False)[0]
N = np.sum(dataset)
minimum_dimension = min(dataset.shape)-1
  
# Calculate Cramer"s V
result = np.sqrt((X2/N) / minimum_dimension)
  
# Print the result
print(result)

Выход:

Cramers V оказывается равным 0,121, что ясно показывает слабую связь между двумя переменными в таблице.

Пример 2:

Теперь мы вычислим V Крамера для больших таблиц, имеющих неодинаковую размерность. Cramers V оказывается равным 0,12, что ясно показывает слабую связь между двумя переменными в таблице.

Python3




# Load necessary packages and functions
import scipy.stats as stats
import numpy as np
  
# Make a 5 x 4 table
dataset = np.array([[4, 13, 17, 11], [4, 6, 9, 12],
                    [2, 7, 4, 2], [5, 13, 10, 12],
                    [5, 6, 14, 12]])
  
# Finding Chi-squared test statistic, 
# sample size, and minimum of rows and
# columns
X2 = stats.chi2_contingency(dataset, correction=False)[0]
N = np.sum(dataset)
minimum_dimension = min(dataset.shape)-1
  
# Calculate Cramer"s V
result = np.sqrt((X2/N) / minimum_dimension)
  
# Print the result
print(result)

Выход:

Cramers V оказывается равным 0,146, что ясно показывает слабую связь между двумя переменными в таблице.