如果你还记得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
我知道,我知道这可能是不可持续的方法,但它实际上在某种程度上有效 - 它描绘了标准错误,但在情节中保持这个差距:
我希望这个差距消失。
答案 0 :(得分:3)
要删除间隙,可以插入以下两行:
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, ]
,您可以有效地摆脱差距。