Медиана и Boxplot (R) - PullRequest
       26

Медиана и Boxplot (R)

0 голосов
/ 27 февраля 2020

Я пишу на ваш форум, потому что не могу найти решение своей проблемы. Я пытаюсь графически изобразить среднее время отлова комаров (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 комара. И я предполагаю, что медиана этого количества москитов ie составляет 83 + 1/2 = 42 (и я даже не нахожу это число на R), вызывая среднее время отлова в 2 часа ночи (02).

Поэтому я попытался использовать функцию «boxplot» с другими параметрами, но у меня не может быть того, что я хочу представить. В самом деле, у меня есть поля для каждого часа сбора, когда я хочу, чтобы представление фактического накопления за время сбора. И время использования в R составляет «20H-21H» = 20, «21H-22H» = 21 et c.

Я нашел статью (Nicolas Moiroux, 2012), в которой представлено среднее время отлова и коробочный сюжет, который я хотел бы иметь. Я копирую изображение процитированного коробочного графика: Boxplot_Moiroux2012

Заранее благодарю за помощь и надеюсь, что моя грамматика в порядке (я говорю и пишу в основном на французском, мой родной язык ).

С наилучшими пожеланиями, Эдуард

PS: А что касается кода, который я использовал с этим набором данных, я здесь (с "Eff" = Количество комаров и "Heure" = время сбора):

сумма (Eff)

как.фактор (Heure)

tapply (Eff, Heure, медиана) tapply (Heure, Eff, медиана)

boxplot (Eff, горизонтальный = T)

boxplot (Heure ~ Eff) boxplot (Eff ~ Heur))

(Мои навыки в R не очень острые ... )

1 Ответ

1 голос
/ 27 февраля 2020

Вам нужно использовать хитрость, поскольку у вас уже есть счетчики, а не данные о времени для каждого улова.

Сначала вы переводите значения времени в более непрерывную переменную, а затем генерируете вектор со всеми значения времени и , затем ваш блокпост (с пользовательской осью).

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)

выводит следующий график:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...