微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

abline() 不适用于 weighted.hist()

如何解决abline() 不适用于 weighted.hist()

所以我使用 plotrix 库使用一些权重绘制直方图,直方图按预期显示,但是当我尝试绘制均值作为垂直线时,它根本不会显示
这是我的代码片段:

library("plotrix")
library("zoom")


vals = seq.int(from = 52.5,to = 97.5,by = 5)
weights <- c(18.01,18.26,16.42,14.07,11.67,9.19,6.46,3.85,1.71,0.34)/100

mean <- sum(vals*weights)
wh <- weighted.hist(x = vals,w = weights,freq = FALSE)
abline(v = mean)

abline() 似乎只适用于普通的 hist() 函数

如果问题听起来很愚蠢,我很抱歉,我是 R 新手,但是我做了我的研究并且找不到任何有用的信息。

提前致谢。

解决方法

您应该提供数据样本。只有当您的权重总和为 1 时,您对加权平均值的计算才是正确的。如果不是,您应该使用 weighted.mean(vals,weights)sum(vals * weights/sum(weights))。以下示例与 weighted.hist 手册页 (help(weighted.hist)) 上的示例略有不同:

vals <- sample(1:10,300,TRUE)
weights <- (101:400)/100
weighted.hist(vals,weights,breaks=1:10,main="Test weighted histogram")
(mean <- weighted.mean(vals,weights))
# [1] 5.246374

直方图从 1 开始,但这是 x 轴坐标上的 0,所以我们需要减去 1 才能在正确的位置找到这条线:

abline(v=mean-1,col="red")

Histogram

使用您的数据,我们需要确定第一个边界以调整均值,使其绘制在正确的位置"

wh$breaks[1]
# [1] 52.5
abline(v=mean - wh$breaks[1],col="red")

New Histogram

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。