【问题标题】:Calculating and plotting differences in kernel density distributions in r计算和绘制 r 中核密度分布的差异
【发布时间】:2020-06-21 21:48:42
【问题描述】:

我正在使用 R,我想计算 x 轴上每个点的两个内核密度分布之间的差异并绘制该差异,但遇到了一些麻烦。是否有某种功能或方法可以做到这一点?就上下文而言,我正在使用血压数据,我想计算男性和女性之间每个点的血压差异。

我的分布代码(不是差异)看起来像这样(SBP=收缩压):

km <- density(data$SBP[data$GENDER==0], bw="nrd0", adjust = 1, kernel = c("gaussian"), window = kernel, n=512, cut=3, give.Rkern = FALSE, na.rm=FALSE)
kf <- density(data$SBP[data$GENDER==1], bw="nrd0", adjust = 1, kernel = c("gaussian"), window = kernel, n=512, cut=3, give.Rkern = FALSE, na.rm=FALSE)

plot(km, xlab="SBP", main="SBP Distribution of Men & Women", col="blue")
lines(kf, col="green")

我对这一切完全陌生!我很确定我的确切问题也没有在这里被问到,但请引导我到任何其他可能有帮助的资源。谢谢。

【问题讨论】:

    标签: r distribution difference kernel-density


    【解决方案1】:

    density 对象具有元素 xy 元素,它们分别存储 x 轴和分布函数值。如果您对两个density() 调用使用相同的fromto 参数,则计算出的x 值应该相同。

    将两个密度的 x-y 值存储在数据框中,然后在 x 上合并/加入它们,然后您可以计算差异并绘制它们:

    x <- rnorm(1000,0,1)
    y <- rnorm(1000,1,1)
    fx <- density(x,from = -5,to=5)
    fy <- density(y,from = -5,to=5)
    plot(fx,col='blue',main="SBP Distribution of Men & Women")
    lines(fy, col="green")
    
    dfx <- data.frame(x=fx$x,
                      fx=fx$y)
    
    dfy <- data.frame(x=fy$x,
                      fy=fy$y)
    
    library(dplyr)
    #> 
    #> Attaching package: 'dplyr'
    #> The following objects are masked from 'package:stats':
    #> 
    #>     filter, lag
    #> The following objects are masked from 'package:base':
    #> 
    #>     intersect, setdiff, setequal, union
    library(ggplot2)
    

    inner_join(dfx,dfy,on='x') %>% 
      mutate(diff=fx-fy) %>% 
      ggplot()+
      geom_line(aes(x=x,y=diff))
    #> Joining, by = "x"
    

    reprex package (v0.3.0) 于 2020-03-10 创建

    【讨论】:

    • 这行得通!!!太感谢了!如何在差异图中添加 x 和 y 标签?
    • 试试this。有关详细信息,请参阅r4ds.had.co.nz
    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2014-12-19
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2019-11-26
    相关资源
    最近更新 更多