中位数和箱线图 (R)
Median and Boxplot (R)
我写信给你们的论坛是因为我没有找到解决我的问题的方法。我试图用图形表示我们(我和我的团队)收集的蚊子的中值捕捉时间 (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(而且我什至没有在 R 上找到这个数字),导致中位数捕捉时间为凌晨 2 点 (02)。
因此,我尝试使用不同参数的函数"boxplot",但我无法得到我想要的表示。事实上,当我想要表示收集期间累积的有效数据时,我会为收集的每个小时设置一个框。并且在 R 中使用的时间是“20H-21H”= 20,“21H-22H”= 21 等
我找到了一篇文章 (Nicolas Moiroux, 2012),其中介绍了中值捕捉时间和我想要的箱线图。我复制引用的箱线图的图像:
Boxplot_Moiroux2012
在此先感谢您的帮助,希望我的语法没问题(我的主要语言是法语,我的母语是法语)。
亲切的问候,
爱德华
PS :关于我在这组数据中使用的代码,我在这里("Eff" = 蚊子数量和 "Heure" = 收集时间):
总和(效果)
as.factor(Heure)
tapply(Eff,Heure,median)
tapply(Heure,Eff,median)
箱线图(效果,水平=T)
箱线图(Heure~Eff)
箱线图(Eff~Heur))
(我的R技能不是很熟练...)
您需要使用一个技巧,因为您已经有了计数,而不是每次捕获的时间数据。
首先,将时间值转换为更连续的变量,然后生成包含所有时间值的向量,然后然后绘制箱线图(使用自定义轴)。
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)
输出以下图:
我写信给你们的论坛是因为我没有找到解决我的问题的方法。我试图用图形表示我们(我和我的团队)收集的蚊子的中值捕捉时间 (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(而且我什至没有在 R 上找到这个数字),导致中位数捕捉时间为凌晨 2 点 (02)。
因此,我尝试使用不同参数的函数"boxplot",但我无法得到我想要的表示。事实上,当我想要表示收集期间累积的有效数据时,我会为收集的每个小时设置一个框。并且在 R 中使用的时间是“20H-21H”= 20,“21H-22H”= 21 等
我找到了一篇文章 (Nicolas Moiroux, 2012),其中介绍了中值捕捉时间和我想要的箱线图。我复制引用的箱线图的图像: Boxplot_Moiroux2012
在此先感谢您的帮助,希望我的语法没问题(我的主要语言是法语,我的母语是法语)。
亲切的问候, 爱德华
PS :关于我在这组数据中使用的代码,我在这里("Eff" = 蚊子数量和 "Heure" = 收集时间):
总和(效果)
as.factor(Heure)
tapply(Eff,Heure,median) tapply(Heure,Eff,median)
箱线图(效果,水平=T)
箱线图(Heure~Eff) 箱线图(Eff~Heur))
(我的R技能不是很熟练...)
您需要使用一个技巧,因为您已经有了计数,而不是每次捕获的时间数据。
首先,将时间值转换为更连续的变量,然后生成包含所有时间值的向量,然后然后绘制箱线图(使用自定义轴)。
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)
输出以下图: