中位数和箱线图 (R)

问题描述 投票:0回答:1

我试图用图形表示我们收集的蚊子的中位捕捉时间(MCT)。 MCT 代表 50% 的疟疾病媒感染人类的时间。 例如,我们收集了这个样本:

Hour of collection / Mosquitoes number:
20H-21H = 1
21H-22H = 1 
22H-23H = 2 
23H-00H = 2 
00H-01H = 13 
01H-02H = 10 
02H-03H = 15 
03H-04H = 15 
04H-05H = 8 
05H-06H = 10 
06H-07H = 6 

此处累计有效蚊子数量为 83 只。我假设该蚊子系列的中位数为 (83+1)/2 = 42,从而得出中位数捕捉时间为凌晨 2 点 (02H-03H)。

我尝试使用具有不同参数的函数“boxplot”,但我无法代表我想要的。事实上,当我想要表示收集时间内的累积有效值时,我为每个小时的收集都有框。其中使用的时间范围为“20H-21H”= 20、“21H-22H”= 21 等

我找到了一篇文章(Nicolas Moiroux,2012),它以图形方式表示了预期的 MCT。我在这里复制引用的箱线图的图像: Boxplot_Moiroux2012

预先感谢您的帮助。

亲切的问候。

PS,这是我迄今为止使用的代码(其中“Eff”=蚊子数量,“Heure”=收集时间):

sum(Eff)

as.factor(Heure)

tapply(Eff,Heure,median)
tapply(Heure,Eff,median)

boxplot(Eff,horizontal=T)

boxplot(Heure~Eff)
boxplot(Eff~Heur))
r boxplot median
1个回答
1
投票

您需要使用一个技巧,因为您已经有了计数,而不是每次捕获的时间数据。

首先,将时间值转换为更连续的变量,然后生成包含所有时间值的向量,然后绘制箱线图(带有自定义轴)。

txt <- "20H-21H = 1 21H-22H = 1 22H-23H = 2 23H-00H = 2 00H-01H = 13 01H-02H = 10 02H-03H = 15 03H-04H = 15 04H-05H = 8 05H-06H = 10 06H-07H = 6" dat <- read.table(text = txt, sep = "=", h = F) colnames(dat) <- c("collect_time", "nb_mosquito") # make a continuous numerical proxy for time dat$collect_time_num <- 1:nrow(dat) # get values of proxy according to your data tvals <- rep(dat$collect_time_num, dat$nb_mosquito) # plot boxplot(tvals, horizontal = T, xaxt = "n") axis(1, labels = as.character(dat$collect_time), at = dat$collect_time_num)

输出以下图:

© www.soinside.com 2019 - 2024. All rights reserved.