如果您还记得,Tufte构思了一个不错的表版本,其中包括在相应数据行旁边运行的小四分位数图:
R中使用package NMOF和函数qTable
实现了这种解决方案,该解决方案基本上创建了上面显示的表并将其输出为LaTeX代码:
require(NMOF)
x <- rnorm(100, mean = 0, sd = 2)
y <- rnorm(100, mean = 1, sd = 2)
z <- rnorm(100, mean = 1, sd = 0.5)
X <- cbind(x, y, z)
qTable(X,filename="res.tex")#this will save qTable in tex format in current dir
如果您要显示的信息量很少,并且不想浪费整个图形的空间,则这种可视化方法似乎特别有用。但我想稍微修改
qTable
。与其显示分位数图,不如显示均值的标准误差。我不是很擅长破解此类功能,因此我使用了蛮力。我从qTable
函数中替换了计算分位数的行:A <- apply(X, 2L, quantile, c(0.25, 0.5, 0.75))
有一些非常残酷的东西,可以计算标准错误:
require(psych)#got 'SE' function to compute columns standard deviation
M = colMeans(X)#column means
SE = SD(X)/sqrt(nrow(X))#standard error
SELo = M-SE#lower bound
SEHi = M+SE#upper bound
A = t(data.frame(SELo,M,SEHi))#combines it together
我知道,我知道这可能是不可持续的方法,但实际上它在一定程度上有效-它绘制了标准误差,但在图中保留了此间隙:
我希望这个差距消失。
Here is a qTable function with modification discussed above。
最佳答案
要消除间隙,您可以插入以下两行:
B[2, ] <- B[3, ]
B[4, ] <- B[3, ]
就在以开头的
for
循环之前for (cc in 1L:dim(X)[2L]) {...
为什么行得通?从左至右读取图形,
B
的五行对应于1) the left segments start
2) the left segments ends
3) the dots are
4) the right segments start
5) the right segments end
因此,通过将
B[2, ]
和B[4, ]
强制为B[3, ]
,您可以有效地消除这些差距。关于r - Tufte表:将四分位数图转换为标准错误图,从而从NMOF软件包中入侵qTable函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11402784/