【问题标题】:R-programming. PercentilesR 编程。百分位数
【发布时间】:2015-07-09 22:01:54
【问题描述】:

所以我估计未来 10 年有 1000 笔现金流。这些现金流包含在1000*10 矩阵中。

出于分析目的,我想根据现金流量来检查不同的百分位数/分位数。

我的 R 代码的一部分

plot(timeline, TOTKS[1,], ylim=range(-15000000,100000000), type="l", ylab="Cash Flow", xlab="year")
for (i in 1:total.simulations){
lines(timeline, TOTKS[i,])}

例子:

  1. 我想在上图中为最低 10% 的现金流着色。

  2. 我想在一个新矩阵中检查这 10 %。

有什么建议吗?

问候

【问题讨论】:

  • 什么是时间线? 10年后1000个现金流是什么意思?每年 1000 笔现金流?
  • 试试quantile 函数。您可以使用 quantile(myvals,seq(0.1,0.9,0.1))[1] 之类的方式选择最低的 Ubound

标签: r matrix percentile quantile


【解决方案1】:

您所说的“最低现金流”是指“多年来最低的总现金流”还是“多年来最低的单点现金流”或......?

我猜是前者,虽然你的意思可能是我完全没有猜到的。 :)

另外,我没有您提供的任何数据,所以以下内容是根据您的描述进行的猜测。将来,如果您可以使用dput() 将一些样本或假数据(以正确的结构)放入问题中,您将更快地获得更好的答案。但我希望这能让你开始。

已编辑 - 将 10 个最低更改为最低 10%

由于注意力不集中和咖啡不足,我回答错了问题。我想是固定的。

首先,找出总现金流量最低的 10 个。将列相加:

total.cashflow <- drop(colSums(TOTKS, na.rm=TRUE))

然后找出最低的 10%:

rank.cashflow.le10 <- which(
    total.cashflow <= qualtile(total.cashflow, 0.1)
    )

将它们添加到情节中:

matlines(timeline, TOTKS[,rank.cashflow.le10], col="red")

将它们作为一个单独的矩阵进行检查(但您可能不需要,使用索引向量)

low10TOTKS <- TOTKS[,rank.cashflow.le10]

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2017-08-31
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多