Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R箱线图-如何根据给定的上限和下限而不是最小值和最大值进行规范化_R_Normalization_Boxplot - Fatal编程技术网

R箱线图-如何根据给定的上限和下限而不是最小值和最大值进行规范化

R箱线图-如何根据给定的上限和下限而不是最小值和最大值进行规范化,r,normalization,boxplot,R,Normalization,Boxplot,我有几个测量值,需要在同一个箱线图中显示,尽管有完全不同的刻度。每一组(=测量类型)都有其特定的高和低接受限值 数据应在R中标准化,以便所有组的下限始终为-1,上限始终为+1。然后我将设置Y轴,以便正确显示所有测量值 到目前为止,我已经设法绘制了最小值(NUM_值)为-1,最大值(NUM_值)为+1的箱线图,但这不是我想要的最终结果 虚假数据(只是表格的一部分): R代码: library(ggplot2) library(data.table) df <- read.table("dat

我有几个测量值,需要在同一个箱线图中显示,尽管有完全不同的刻度。每一组(=测量类型)都有其特定的高和低接受限值

数据应在R中标准化,以便所有组的下限始终为-1,上限始终为+1。然后我将设置Y轴,以便正确显示所有测量值

到目前为止,我已经设法绘制了最小值(NUM_值)为-1,最大值(NUM_值)为+1的箱线图,但这不是我想要的最终结果

虚假数据(只是表格的一部分):

R代码:

library(ggplot2)
library(data.table)
df <- read.table("data3.csv", header=TRUE, sep=";", stringsAsFactors=FALSE)
skl <- function(x){(x-min(x))/(max(x)-min(x))*2-1}
df <- transform(df,scaled=ave(df$NUM_VALUE,df$NAME,FUN=skl))
ggplot(df, aes(x=df$NAME, y = df$scaled)) + geom_boxplot()
库(ggplot2)
库(数据表)
df不使用
min()
max()
,您可以将函数
skl()
更改为同时使用
下限和
上限

调整后的功能如下所示:

df$scaled
 [1] -0.19333333 -0.16000000 -0.07333333 -0.21000000 -0.20100000  0.09000000  0.09400000  0.09800000
 [9]  0.50200000  0.24000000 -0.69000000 -0.51000000
library(ggplot2)
ggplot(df, aes(x=df$NAME, y = df$scaled)) + geom_boxplot()

skl为每个组应用您的
skl
功能,您应该会得到您想要的。有很多方法可以做到这一点,试着搜索如何做到这一点。对你的方法有一个一般性的评论/问题。将上限/下限设置为1/-1时,有关组中不同方差的信息将丢失。显示差异是箱线图的主要优点之一。也许我只是没有正确理解你的情况,你能解释一下你的方法的目的吗?从我的角度来看,从各组的所有值中减去中值是有意义的,这样所有中值都显示在x轴的零线上,以便分析各组的不同方差。Manuel-我不是统计学专家,但我会尝试解释。通常将限值设置为1/-1,例如在Q-stat统计软件中。在我的例子中,此特定视图用于快速概述一个选定项目的所有特征,以及如何在允许的范围内累积结果。当然,可以使用其他箱线图视图以及其他一些分析来进一步查明任何具体问题。
df$scaled
 [1] -0.19333333 -0.16000000 -0.07333333 -0.21000000 -0.20100000  0.09000000  0.09400000  0.09800000
 [9]  0.50200000  0.24000000 -0.69000000 -0.51000000
library(ggplot2)
ggplot(df, aes(x=df$NAME, y = df$scaled)) + geom_boxplot()