from itertools import product
import numpy as np
import pandas as pd
import scipy.stats as stats
np.random.seed(42)
all_combs = product(
['Spring', 'Summer', 'Fall', 'Winter'],
['New', 'Old'],
['Cold', 'Warm', 'Hot']
)
df = pd.DataFrame(all_combs, columns=['Season', 'Age', 'Weather'])
df['Sales'] = np.random.randint(25, 200, len(df))
df.head()
# Season Age Weather Sales
# 0 Spring New Cold 127
# 1 Spring New Warm 117
# 2 Spring New Hot 39
# 3 Spring Old Cold 131
# 4 Spring Old Warm 96
将该表转换为列联表,用于测量Season和Age之间的关联,并将其另存为二维数组:
cont = df.pivot_table('Sales', 'Season', 'Age', 'sum')
cont
# Age New Old
# Season
# Fall 459 277
# Spring 283 272
# Summer 372 377
# Winter 356 384
cont_arr = cont.values
您可能知道,Cramer的V度量两个标称变量之间的关联。因此,对于变量的每个成对组合,您可以将当前表转换为单独的列联表,然后计算成对统计数据
创建类似于您的表的代码:
将该表转换为列联表,用于测量
Season
和Age
之间的关联,并将其另存为二维数组:现在,你可以计算卡方统计量,并从中计算克莱默的V。克莱默的V的公式可以找到here
相关问题 更多 >
编程相关推荐