R:对数比例的箱线图与对数转换*然后*创建箱线图:不要得到相同的结果

机器算法验证 r 数据转换 对数正态分布 箱形图
2022-03-01 12:02:09

boxplot()R 中的函数中,存在log =用于指定轴是否应在对数刻度上的参数。

对我来说,如果我选择此选项(指定log = "y"为参数),箱线图的形状应该看起来与我首先使用日志手动转换数据,然后绘制对数转换的数据相同(我识别标签轴上会有所不同,但我指的是绘图的形状)。然而,事实并非如此。

这是一个简单的工作示例:

set.seed(923489)
data <- rlnorm(300, meanlog = 0, sdlog = 1)
boxplot(data) # Highly skewed right raw data
boxplot(data, log="y") # Data on log scale; less right-skewed
boxplot(log10(data)) # Log base 10-transform data; shape not the same as when specify log="y"
boxplot(log(data)) # Natural log and base 10 give same shape plot (just different axis labels)

为什么会这样?

2个回答

显然,带有中间“带”的盒子看起来是一样的。不同的是胡须。在默认设置中,?boxplot告诉我们

如果“范围”为正,则须线延伸到最极端的数据点,该数据点不超过“范围”乘以框的四分位间距。

range为正数,即默认为 1.5。那么晶须是否会延伸到盒子的 1.5 倍,但在多大范围内呢?如果调用boxplot(data, log="y"),则在未缩放的数据上为 1.5;因此较低的晶须变得更长。如果你称boxplot(log(data))晶须是必然对称的。

?boxplot,您可以阅读:

范围

这决定了绘图胡须从盒子伸出多远。如果范围为正,则须线延伸到最极端的数据点,该数据点不超过范围乘以框的四分位距。零值会导致晶须延伸到数据极值。

绘制箱线图时的默认值range=1.5,表示胡须将在第三个四分位以上和第一个四分位以下延伸 1.5 倍的四分位间距;所有其他点将被标记为异常值。

您看到的差异是基于数据的对数转换不保持点到第三或第一四分位数的标准化距离;正如您的数据所预期的那样,在对数转换后,您的异常值非常高,而异常值低的异常值更多。