R ggplot:加权 CDF
R ggplot: Weighted CDF
我想使用 ggplot
绘制加权 CDF。一些旧的非 SO 讨论(例如 2012 年的 this)表明这是不可能的,但我认为我会重新提出。
例如,考虑以下数据:
df <- data.frame(x=sort(runif(100)), w=1:100)
我可以用
显示未加权的 CDF
ggplot(df, aes(x)) + stat_ecdf()
我将如何根据 w
加权?对于这个例子,我希望有一个看起来像 x^2
的函数,因为较大的数字具有较高的权重。
您的回答有误。
这是计算加权 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
我想使用 ggplot
绘制加权 CDF。一些旧的非 SO 讨论(例如 2012 年的 this)表明这是不可能的,但我认为我会重新提出。
例如,考虑以下数据:
df <- data.frame(x=sort(runif(100)), w=1:100)
我可以用
显示未加权的 CDFggplot(df, aes(x)) + stat_ecdf()
我将如何根据 w
加权?对于这个例子,我希望有一个看起来像 x^2
的函数,因为较大的数字具有较高的权重。
您的回答有误。
这是计算加权 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