提问人:Nate 提问时间:1/10/2023 更新时间:1/11/2023 访问量:64
这两种计算加权中位数的方法有什么区别?
What's the difference between these two methods for calculating a weighted median?
问:
我正在尝试计算加权中位数,但不明白以下两种方法之间的区别。我从 weighted.median() 得到的答案与 (df, median(rep(value, count))) 不同,但我不明白为什么。有很多方法可以得到加权中位数吗?一个比另一个更可取吗?
df = read.table(text="row count value
1 1. 25.
2 2. 26.
3 3. 30.
4 2. 32.
5 1. 39.", header=TRUE)
# weighted median
with(df, median(rep(value, count)))
# [1] 30
library(spatstat)
weighted.median(df$value, df$count)
# [1] 28
答:
2赞
John Coleman
1/11/2023
#1
请注意,这仅对正整数的权重有意义( 将接受浮点值,但会强制为整数)。因此,这种方法并不是计算加权中位数的完整通用方法。 显示该函数尝试执行的操作是计算一个值,使以下数据的总权重为总权重的 50%。就您的样品而言,没有完全有效的方法。数据总权重的 28.5% 为 <= 26,61.9% 为 <= 30。在这种情况下,默认情况下(“类型 2”)它会对这 2 个值进行平均,以获得返回的 28。还有另外两种类型。 返回 30。我不完全确定这种类型是否总是同意您的其他方法。with(df, median(rep(value, count)))
rep
count
?weighted.median
m
m
m
weighted.median(df$value,df$count,type = 1)
评论
0赞
Nate
1/11/2023
另外,你是说 28 岁,对吧?
2赞
John Coleman
1/11/2023
@Nate 是的,那是个错别字。谢谢。
上一个:扩大 ggplot 的边距
评论