【问题标题】:Plot quantiles in R在 R 中绘制分位数
【发布时间】:2013-11-14 07:21:44
【问题描述】:

我正在尝试查找矩阵列的平均值、平均值 ± 标准差和某些分位数(5%、50%、95%)。

矩阵尺寸为10*20(行表示样本数,列表示时间):

现在,从这个数据集中,我想找到上面的分位数。我尝试了以下方法:

但是这些函数只给了我一个值。我希望每次都能获得上述手段(均值、标准差、分位数)。

那么,我们如何绘制一个x轴为时间tt=1到t=20),y 轴是基金值,显示所有 5 条线(平均值、平均值 ± 标准差、5% 分位数、50% 分位数和 95% 分位数)。 p>

非常感谢您的帮助。

非常感谢

【问题讨论】:

    标签: r graph plot subset quantile


    【解决方案1】:

    apply 将让您将函数应用于矩阵的每一行或每一列。您定义矩阵、要应用的维度(行=1,列=2)、函数(例如quantile)以及函数的附加参数。

    例子:

    set.seed(1)
    Fund <- matrix(rnorm(20*10), ncol=20, nrow=10)
    qs <- apply(Fund, 2, quantile, probs=c(0.05, 0.5, 0.95))
    qs
    ylim=range(qs)
    plot(seq(ncol(Fund)), qs[1,], t="l", lty=2, ylim=ylim) #5%
    lines(seq(ncol(Fund)), qs[2,], lty=1, lwd=2) #50%
    lines(seq(ncol(Fund)), qs[3,], lty=2, col=2)  #95%
    legend("topleft", legend=rev(rownames(qs)), lwd=c(1,2,1), col=c(2,1,1), lty=c(2,1,2))
    

    【讨论】:

    • 我们如何在情节旁边打印标签?我试过 text(locator(), labels = c("5% quantile", "50% quantile","95% quantile")) 但什么也没发生
    • @Nor Abd - 我对你在这里的问题感到困惑,所以我无法提供太多帮助。但是,您是否尝试过探索 ggplot2 & reshape pacakges?
    • @NorAbd - 我现在在情节中添加了一个图例。我不清楚你还希望在这里做什么。
    • 据我了解,为了找到分位数,我们首先对值进行升序排序。例如,我在时间 t=1 有 10 个数据样本,即 [2,3,4,5,8,9,11,12,19,20]。为了获得 25% 的分位数,我们将其计算为25% x 10 个样本 = 2.5。所以这意味着分位数在第二个和第三个样本之间。因此,25% 的分位数应该是 (3+4)/2 = 3.5。正确的?但是,如果您查看我的样本,例如在 t=1 时,样本值都是 66.7。分位数与样本有何不同? (95% 分位数 = 1.645)。有人可以向我解释一下吗?还是我这里有错误的概念?
    • @NorAbd - 这不是一个统计论坛。如果您正在寻找函数背后的基础数学,我建议您寻找其他地方。从?quantile开始
    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多