Python 按组标准化变量-为什么平均值总是零?
我有以下数据:Python 按组标准化变量-为什么平均值总是零?,python,pandas,standardized,Python,Pandas,Standardized,我有以下数据: df = pd.DataFrame({'sound': ['A', 'B', 'B', 'A', 'B', 'A'], 'score': [10, 5, 6, 7, 11, 1]}) print(df) sound score 0 A 10 1 B 5 2 B 6 3 A 7 4 B 11 5 A 1 如果我将score变量标准化
df = pd.DataFrame({'sound': ['A', 'B', 'B', 'A', 'B', 'A'],
'score': [10, 5, 6, 7, 11, 1]})
print(df)
sound score
0 A 10
1 B 5
2 B 6
3 A 7
4 B 11
5 A 1
如果我将score
变量标准化(即Z分数),则得到以下值。新的z
列的平均值基本上为0,SD为1,这两个值都是标准化变量的预期值:
df['z'] = (df['score'] - df['score'].mean())/df['score'].std()
print(df)
print('Mean: {}'.format(df['z'].mean()))
print('SD: {}'.format(df['z'].std()))
sound score z
0 A 10 0.922139
1 B 5 -0.461069
2 B 6 -0.184428
3 A 7 0.092214
4 B 11 1.198781
5 A 1 -1.567636
Mean: -7.401486830834377e-17
SD: 1.0
然而,我真正感兴趣的是基于组成员身份计算Z分数(声音
)。例如,如果分数来自声音a,则仅使用声音a值的平均值和SD将该值转换为Z分数。同样,声音B Z分数将仅使用声音B的平均值和SD。与常规Z分数计算相比,这将产生不同的值:
df['zg'] = df.groupby('sound')['score'].transform(lambda x: (x - x.mean()) / x.std())
print(df)
print('Mean: {}'.format(df['zg'].mean()))
print('SD: {}'.format(df['zg'].std()))
sound score z zg
0 A 10 0.922139 0.872872
1 B 5 -0.461069 -0.725866
2 B 6 -0.184428 -0.414781
3 A 7 0.092214 0.218218
4 B 11 1.198781 1.140647
5 A 1 -1.567636 -1.091089
Mean: 3.700743415417188e-17
SD: 0.894427190999916
我的问题是:为什么基于组的标准值(zg
)的平均值也基本上等于0?这是预期的行为还是我的计算中有错误
z
分数是有意义的,因为变量内的标准化本质上迫使平均值为0。但是对于每个声音组,zg
值是使用不同的平均值和SDs来计算的,所以我不确定为什么新变量的平均值也被设置为0
我能看到这种情况发生的唯一情况是,如果值之和>0等于值之和<0,则平均值将抵消为0。这在常规的Z分数计算中发生,但我很惊讶,在这样的多组操作中也会发生…我认为这非常有意义。如果E[
abc
|def
]是给定的def
的期望值,则在df['zg']
中:
m1
=E['zg'
声音='A']=(0.872872+0.218218-1.091089)/3
~0
m2
=E[/code>'zg'声音='B']=(-0.725866-0.414781+1.140647)/3
~0
及
我认为这很有意义。如果E[
abc
|def
]是给定的def
的期望值,则在df['zg']
中:
m1
=E['zg'
声音='A']=(0.872872+0.218218-1.091089)/3
~0
m2
=E[/code>'zg'声音='B']=(-0.725866-0.414781+1.140647)/3
~0
及
E[
'zg'
]=(m1+m2)/2
=(0.872872+0.218218-1.091089-0.725866-0.414781+1.140647)/6
~0是的,这是预期行为
用花言巧语,用
具体来说,如果组Y
是有限的,因此是可数的
在哪里
然而,通过构造,对于可能组的集合G
中Y
的所有值,每个E[X | Y\u j]
都是0
因此,总平均值也将为零。是的,这是预期行为 用花言巧语,用 具体来说,如果组
Y
是有限的,因此是可数的
在哪里
然而,通过构造,对于可能组的集合G
中Y
的所有值,每个E[X | Y\u j]
都是0
因此,总平均值也将为零。您是否查看了每组平均值(非标准化)?您是否查看了每组平均值(非标准化)?