【问题标题】:R ggplot: Weighted CDFR ggplot:加权CDF
【发布时间】:2015-09-09 19:12:00
【问题描述】:

我想使用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 的函数,因为更大的数字具有更高的权重。

【问题讨论】:

    标签: r ggplot2 cdf


    【解决方案1】:

    您的回答有误。

    这是计算加权 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&lt;a 除以权重的总和。

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

    【讨论】:

    • 嗨,github repo 中的代码看起来很有趣。您能否添加一些指导如何安全地“安装/卸载”它?谢谢
    • @vagvaf,我对此不是很有经验,但对我来说它只是一个 .R 文件,所以我认为您只需在加载 ggplot2 后复制代码即可库(它将覆盖stat_ecdf 函数)。我认为可以从 GitHub 安装软件包,使用诸如 library(devtools)install_github("NicolasWoloszko/stat_ecdf_weighted") 之类的命令。
    • 最简单的方法是获取原始 URL。只需输入source("https://raw.githubusercontent.com/NicolasWoloszko/stat_ecdf_weighted/master/stat_ecdf_weighted.R")。您可以键入stat_ecdf(不带括号)来查看函数是如何定义的之前和调用尼古拉斯的脚本之后。
    猜你喜欢
    • 2020-12-24
    • 2021-05-02
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2020-07-05
    • 2016-05-17
    相关资源
    最近更新 更多