我的变量的数据仅采用 Z 分数的形式。我想记录转换分数,但我不知道平均值或标准差以转换为原始分数。我可以分配一个任意的平均值和标准差,用它来转换为原始分数,然后对原始分数进行对数转换吗?还是有其他方法可以记录变换 Z 分数?谢谢。
如何记录变换 Z 分数?
机器算法验证
数据转换
对数
标准化
2022-04-06 09:13:22
3个回答
关于日志的几个要点
下面的 R 代码是一个提醒,负数的对数不是数字,零的对数是负无穷大。因此,如果您要记录 z 分数,您首先需要使获得的所有值都大于零。
> values <- c(-2, -1, 0, .001, .1, 1, 10)
> data.frame(values=values, logvalues=log(values))
values logvalues
1 -2.000 NaN
2 -1.000 NaN
3 0.000 -Inf
4 0.001 -6.907755
5 0.100 -2.302585
6 1.000 0.000000
7 10.000 2.302585
Warning message:
In log(values) : NaNs produced
一个简单的 z-scores 日志策略
对变量进行对数转换的一个简单策略是首先向变量添加一个常数,使最小值为 1。即,1 + x - min(x)。
以下代码显示了一些标准化正偏斜数据的简单示例。的最小值1 + x - min(x)为 1。因此,可以对变量进行对数转换。然后该图显示了变换前后的密度。
> set.seed(4444)
> # some skewed raw data
> x <- scale((rnorm(1000) + 3)^2)
>
> xnew <- 1 + x - min(x)
> min(xnew)
[1] 1
> min(x)
[1] -1.584252
> xnew <- log(xnew)
>
> par(mfrow=c(2,1))
> plot(density(x))
> plot(density(xnew))

但究竟应该执行什么转换?
- 日志转换是否适合您的数据是一个普遍问题,如果适合,您应该向原始数据添加什么常量。
- 大概如果您已经有了 z 分数,那么您就不会太在意绝对指标。
- 你会在这个问题上找到关于这个问题的进一步讨论
我知道您想对数据进行日志转换,使其看起来更“正常”(即更对称)。但如果这是目标,为什么不对数据应用转换,使其完全符合标准?
假设您有一个变量,并且您将其 CDF 估计为。然后您可以应用转换,其中是标准的普通 CDF。根据定义,将是标准正态。
不同的算法,比如 scikit-learn quantile transformation,会为你做这件事。
您不能分配任意平均值和 SD 以将 z 分数数据转换为原始数据 (x)。但是,您可以通过计算偏度或峰度来检查 z 分数的分布形状。仅当您的数据正偏斜时,对数转换才有用。此外,如果您解释一下您的目标是什么会很好?正如@Karl 所问。访问此URL可能会有所帮助。
其它你可能感兴趣的问题