1

这是我正在为我的公共卫生硕士课程所做的研究

我正在将数据相互绘制,一个标准的 x,y 类型的交易,除此之外,我正在绘制一条预测线。我得到了我认为最时髦的点/箱线图,x 轴是半填充的,我不明白为什么,因为我不调用箱线图函数。当我调用绘图函数时,我的理解是只有点会绘图。

我正在绘制的数据看起来像这样

TOTAL.LACE | DAYS.TO.FAILURE
9          | 15
16         | 7
...        | ...

TOTAL.LACE 的范围是 0 到 19,DAYS.TO.FAILURE 是 0 - 30

我的代码如下,也许是情节之前的东西,但我不认为是:

# To control the type of symbol we use we will use psymbol, it takes
# value 1 and 2
psymbol <- unique(FAILURE + 1)

# Build a test frame that will predict values of the lace score due to
# a patient being in a state of failure
test <- survreg(Surv(time = DAYS.TO.FAILURE, event = FAILURE) ~ TOTAL.LACE,
                dist = "logistic")

pred <- predict(test, type="response") <-- produces numbers from about 14 to 23
summary(pred) 

ord <- order(TOTAL.LACE)
tl_ord <- TOTAL.LACE[ord]
pred_ord <- pred[ord]
plot(TOTAL.LACE, DAYS.TO.FAILURE, pch=unique(psymbol)) <-- Produces goofy graph
lines(tl_ord, pred_ord) <-- this produces the line not boxplots

这是结果图片 R中看起来很傻的情节

不知道如何从这里开始,这是我在这个链接上使用相同数据集遇到的另一个问题的一个分支,我不明白为什么要绘制箱线图,原因是我没有专门调用boxplot()命令所以我不知道为什么它们与点图一起出现。当我发出以下命令时:plot(DAYS.TO.FAILURE, TOTAL.LACE)我只能像预期的那样在结果图上得到点,但是当我改变绘制的顺序x并且y箱线图出现时,这对我来说是出乎意料的。

这是示例数据的链接,希望有助于重现@Dwin et all Some Sample Data指出的问题

谢谢,

4

1 回答 1

2

由于您没有可重现的示例,因此很难提供适合您情况的答案。在这里,我生成了一些看起来有点相似的数据:

set.seed(4)
TOTAL.LACE      <- rep(1:19, each=1000)
zero.prob       <- rbinom(19000, size=1, prob=.01)
DAYS.TO.FAILURE <- rpois(19000, lambda=15)
DAYS.TO.FAILURE <- ifelse(zero.prob==1, DAYS.TO.FAILURE, 0)

这是情节:

在此处输入图像描述

首先,某些类别没有打印在 x 轴上的问题是因为它们不适合。当您有这么多类别时,要使它们都适合,您必须以较小的字体显示它们。执行此操作的代码是使用并设置值 <1(您可以在此处cex.axis阅读有关此内容的更多信息):

boxplot(DAYS.TO.FAILURE~TOTAL.LACE, cex.axis=.8)

在此处输入图像描述

至于为什么你的情节是“愚蠢”或“时髦”的问题,很难说,因为这些术语相当模糊。我的猜测是,您需要更清楚地了解箱线图的工作原理,然后了解这些图告诉您有关数据分布的信息。在箱线图中,箱体的中线是数据的第 50 个百分位,而箱体的底部和顶部是第 25 个和第 75 个百分位。通常,“晶须”将延伸到最远的数据点,该数据点最多是超出盒子末端的四分位间距的 1.5 倍。在你的情况下,对于前 9TOTAL.LACEs,超过 75% 的数据是 0,所以没有盒子,因此不可能有胡须。超出晶须限制的所有内容都被绘制为一个单独的点。我不认为你的情节是“时髦的”(虽然我承认我不知道你的意思),我认为你的数据可能是“时髦的”并且你的箱线图准确地代表了你的数据的分布根据构造箱线图的规则。

将来(我的意思是礼貌),如果您可以编写更明确指定的问题并包含可重复的示例,它将帮助您获得更有用和更快的答案。


更新: 感谢您提供更多信息。我通过“时髦”收集您的意思是它是boxplot,而不是典型的scatterplot。要实现的是这plot()是一个通用函数,它将根据您传递给它的内容调用不同的方法。如果你传递简单的连续数据,它会产生一个散点图,但如果你传递连续数据和一个因子,那么它会产生一个箱线图,即使你没有boxplot显式调用。考虑:

plot(TOTAL.LACE, DAYS.TO.FAILURE)

在此处输入图像描述

plot(as.factor(TOTAL.LACE), DAYS.TO.FAILURE)

在此处输入图像描述

显然,您已经转换DAYS.TO.FAILURE为一个没有意义的因素。大概这是pch=unique(psymbol)通过上面的代码在参数中完成的psymbol <- unique(FAILURE + 1)。虽然我没有时间尝试这个,但我怀疑消除那行代码并使用pch=(FAILURE + 1)将实现您的目标。

于 2013-10-21T03:51:56.877 回答