Jen*_*Jen 53 r transformation scale heatmap
我试图理解scale
R提供的定义.我有数据(mydata
),我想制作热图,并有一个非常强烈的积极倾斜.我已经创建了两个树形图热图scale(mydata)
和log(my data)
和树状图是两种不同的.为什么?扩展我的数据意味着什么,而不是对数据进行日志转换?如果我想查看说明数据列之间关系的树形图,哪个更合适?
感谢您的任何帮助!我已经阅读了这些定义,但他们对我的看法很高兴.
Ric*_*rta 79
log
简单地e
取向量的每个元素的对数(默认为base ).
scale
使用默认设置,将计算整个矢量的平均值和标准差,然后通过减去平均值并除以sd,将这些值"缩放"每个元素.(如果使用 scale(x, scale=FALSE)
,它只会减去平均值,但不会除以标准偏差.)
请注意,这将为您提供相同的值
set.seed(1)
x <- runif(7)
# Manually scaling
(x - mean(x)) / sd(x)
scale(x)
Run Code Online (Sandbox Code Playgroud)
von*_*njd 13
它除了提供数据标准化之外别无其他.它创建的值在几个不同的名称下是已知的,其中一个是z分数("Z",因为正态分布也称为"Z分布").
更多信息可以在这里找到:
http://en.wikipedia.org/wiki/Standard_score
小智 8
这是一个较晚的补充,但我自己正在寻找有关比例函数的信息,尽管它也可能对其他人有所帮助。
稍微修改Ricardo Saporta的回复。
缩放不是使用标准偏差完成的,至少在 R 的 3.6.1 版中没有,我基于“Becker, R. (2018). The new S language. CRC Press”。和我自己的实验。
X.man.scaled <- X/sqrt(sum(X^2)/(length(X)-1))
X.aut.scaled <- scale(X, center = F)
Run Code Online (Sandbox Code Playgroud)
这些行的结果完全相同,为了简单,我没有居中显示。
我会在评论中做出回应,但没有足够的声誉。
我想我会通过提供比例函数实际使用的具体示例来做出贡献。假设您想要比较 3 项测试成绩(数学、科学和英语)。也许您甚至可能希望根据每个观察的 3 个测试中的每一个生成综合分数。您的数据可能如下所示:
student_id <- seq(1,10)
math <- c(502,600,412,358,495,512,410,625,573,522)
science <- c(95,99,80,82,75,85,80,95,89,86)
english <- c(25,22,18,15,20,28,15,30,27,18)
df <- data.frame(student_id,math,science,english)
Run Code Online (Sandbox Code Playgroud)
显然,比较这 3 个分数的平均值是没有意义的,因为分数的范围差异很大。然而,通过缩放它们,您可以获得更多可比较的评分单位:
z <- scale(df[,2:4],center=TRUE,scale=TRUE)
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用这些缩放结果来创建综合分数。例如,对值进行平均并根据该平均值的百分位数指定等级。希望这有帮助!
注:这个例子是我从《R In Action》一书中借来的。这是一本很棒的书!肯定会推荐。
归档时间: |
|
查看次数: |
110165 次 |
最近记录: |