使用 qqplot 将原始数据转换为高斯(正常)导致相同原始数据值的不同正常值
Convert raw data to Gaussian (normal) using qqplot leads to different normal values for same raw data value
我想使用 qqnorm 函数将原始数据转换为高斯分布(均值=0,标准差=1)。但我意识到,对于相同的原始值,我得到不同的高斯值。例如:
mydata = c(2.4, 3.7, 2.1, 3, 1.6, 2.5, 2.9, 2.9 )
myquant = qqnorm(mydata)
myquant
-0.4727891 1.4342002 -0.8524950 0.8524950 -1.4342002 -0.1525060 0.1525060 0.4727891
此外,我使用以下代码将数据转换为正常数据:
for (i in 1:ncol(sampledataSubGaus) ) {
sampledataSubGaus[,i] <- qqnorm( as.matrix(sampledataSub[,i]) )$x
}
我又遇到了同样的问题。
对此有解释吗?供您参考,我使用了另一个名为 score.transform 的函数,它的行为正常。
我不太确定您使用 qqnorm
将数据“转换”为 N(0,1) 是什么意思。 qqnorm()
函数 returns x
,它们是与数据中相应分位数关联的正常分位数。 qqnorm()
的胆量正在做以下事情:
mydata = c(2.4,3.7,2.1,3,1.6,2.5,2.9, 2.9 )
y <- mydata
n <- length(y)
x <- qnorm(ppoints(n))[order(order(y))]
plot(x,y)
如果您采用这些值的子集,您将得到不同的 x
值,因为它将使用不同数量的点来生成正常分位数(即 [=16 的值=] 会有所不同)。
我可能是错的,但我从未听说过有人使用 qqnorm()
来转换数据 - 它是对正常情况的诊断,而不是补救措施。在适当的情况下,像 Box-Cox transformation 这样的东西可以帮助将偏斜变量转换为具有更正态分布的变量。
我想使用 qqnorm 函数将原始数据转换为高斯分布(均值=0,标准差=1)。但我意识到,对于相同的原始值,我得到不同的高斯值。例如:
mydata = c(2.4, 3.7, 2.1, 3, 1.6, 2.5, 2.9, 2.9 )
myquant = qqnorm(mydata)
myquant
-0.4727891 1.4342002 -0.8524950 0.8524950 -1.4342002 -0.1525060 0.1525060 0.4727891
此外,我使用以下代码将数据转换为正常数据:
for (i in 1:ncol(sampledataSubGaus) ) {
sampledataSubGaus[,i] <- qqnorm( as.matrix(sampledataSub[,i]) )$x
}
我又遇到了同样的问题。 对此有解释吗?供您参考,我使用了另一个名为 score.transform 的函数,它的行为正常。
我不太确定您使用 qqnorm
将数据“转换”为 N(0,1) 是什么意思。 qqnorm()
函数 returns x
,它们是与数据中相应分位数关联的正常分位数。 qqnorm()
的胆量正在做以下事情:
mydata = c(2.4,3.7,2.1,3,1.6,2.5,2.9, 2.9 )
y <- mydata
n <- length(y)
x <- qnorm(ppoints(n))[order(order(y))]
plot(x,y)
如果您采用这些值的子集,您将得到不同的 x
值,因为它将使用不同数量的点来生成正常分位数(即 [=16 的值=] 会有所不同)。
我可能是错的,但我从未听说过有人使用 qqnorm()
来转换数据 - 它是对正常情况的诊断,而不是补救措施。在适当的情况下,像 Box-Cox transformation 这样的东西可以帮助将偏斜变量转换为具有更正态分布的变量。