8

我想使用ggplot. 一些旧的非 SO 讨论(例如从 2012 年开始)表明这是不可能的,但我认为我会再次加注。

例如,考虑以下数据:

df <- data.frame(x=sort(runif(100)), w=1:100)

我可以显示一个未加权的 CDF

ggplot(df, aes(x)) + stat_ecdf()

在此处输入图像描述

我将如何衡量这个w?对于这个例子,我期望一个x^2-looking 函数,因为更大的数字具有更高的权重。

4

1 回答 1

10

你的回答有错误。

这是计算加权 ECDF 的正确代码:

df <- df[order(df$x), ]  # Won't change anything since it was created sorted
df$cum.pct <- with(df, cumsum(w) / sum(w))
ggplot(df, aes(x, cum.pct)) + geom_line()

ECDF 是一个函数F(a),等于观测值的权重(概率)之和x<a除以权重的总和。

但是这里有一个更令人满意的选项,它只是修改了 ggplot2 stat_ecdf 的原始代码: https ://github.com/NicolasWoloszko/stat_ecdf_weighted

于 2018-06-22T12:46:58.523 回答