построить блок-график с использованием ggplot2 и провести два выборочных t-теста

Это мои данные. Вы можете открыть эту ссылку https://www.dropbox.com/s/3bypmpojkpnomos/trial1.txt?dl=0

я хочу построить коробку, где мужчина и женщина находятся по оси x, а их частота - по оси y. затем оттуда я хочу провести два выборочных t-теста. Есть ли способ различить беспокоящую и ненарушенную среду обитания?

это то, что я пробовал;

# install and load ggplot2
trial1$Sex <- factor(trial1$Sex,labels = c("Female", "Male"))
P1 <- qplot(trial1$Sex, xlab="Host Sex", ylab="Host caught", main="HOSTS CAUGHT VS SEX")
trial1$Habitat <- factor(trial1$Age,labels = c("Disturb", "Undisturb"))
P2 <- qplot(trial1$Habitat, xlab="Habitat", ylab="Host caught", main="HOSTS CAUGHT VS HABITAT")

# calculatefrequency
library(plyr) #can also count using this package
#calculate frequency and make data frame
library(dplyr)#or this package
f1 <- factor(c(Sex))
T1 <- table(f1) #create table of frequency

f2 <- factor(c(Habitat))
T2 <- table(f2)

a1 <- ggplot(data = trial1, aes(x = Sex, y = Freq, colour = Sex)) + 
      geom_boxplot() + xlab("Sex") + ylab("Total ectoparasites") + 
      ggtitle("Sex vs Total ectoparasites")

person user112231    schedule 12.05.2017    source источник
comment
Не уверен, что boxplot - лучший вариант здесь. При большом количестве нулевых значений результатом будет очень узкая рамка, близкая к нулю, с несколькими выбросами, показанными выше.   -  person neilfws    schedule 12.05.2017


Ответы (1)


Первое, что вы должны сделать с этим типом данных, — это преобразовать его из широкого в длинный формат. Это означает создание двух столбцов: одного для P1, P2 и т. д. и другого для соответствующих значений.

library(dplyr)
library(tidyr)
library(ggplot2)
trial1 %>% 
  gather(variable, value, -Habitat, -Sex, -Birds)

В этом случае я бы не рекомендовал коробочную диаграмму; учитывая большое количество нулевых значений в данных, это было бы неинформативно. Могу ли я предложить использовать geom_jitter для построения подсчетов в зависимости от пола и использовать фасеты для дальнейшего подмножества по среде обитания:

trial1 %>% 
  gather(variable, value, -Habitat, -Sex, -Birds) %>% 
  ggplot(aes(Sex, value)) + 
  geom_jitter(width = 0.2, alpha = 0.3) + 
  facet_grid(Habitat ~ .) +
  labs(y = "total ectoparasites", title = "Total ectoparasites by Sex and Habitat") +
  theme_light()

введите здесь описание изображения

Существует множество способов суммировать данные для последующих статистических тестов. Например, чтобы получить таблицу подсчетов 2 x 2 по полу и среде обитания (фактически 2 x 3, поскольку пол является первым столбцом:

trial1 %>% 
  gather(variable, value, -Habitat, -Sex, -Birds) %>% 
  group_by(Sex, Habitat) %>% 
  summarise(count = sum(value)) %>% 
  spread(Habitat, count)

     Sex Disturb Undisturb
*  <chr>   <int>     <int>
1 Female       6        23
2   Male      69       117
person neilfws    schedule 12.05.2017
comment
большое спасибо за ваш ответ и пояснения. мне так помогает! - person user112231; 12.05.2017
comment
Рад помочь. Я бы посоветовал провести некоторое время с dplyr, чтобы выяснить, как вы можете нарезать и нарезать набор данных, пока он не будет в форме для любого теста (тестов), который вы хотите использовать. - person neilfws; 12.05.2017