使用ggplot2绘制boxplot并进行两次样本t检验

时间:2017-05-12 00:56:33

标签: r plot t-test

这是我的数据。您可以打开此链接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")

1 个答案:

答案 0 :(得分:1)

对于这种类型的数据,您应该做的第一件事是将其从宽格式转换为长格式。这意味着创建2列,一列用于P1,P2 等。,另一列用于相应的值。

$('.js-grid-item:last').clone();

在这种情况下,我不建议使用箱线图;鉴于数据中存在大量零值,因此不会提供信息。我是否可以建议使用library(dplyr) library(tidyr) library(ggplot2) trial1 %>% gather(variable, value, -Habitat, -Sex, -Birds) 绘制计数与性别的关系,并使用facets进一步进行子集生成:

geom_jitter

enter image description here

您可以通过多种方式汇总数据,以便进行后续的统计测试。例如,按性别和栖息地获得2 x 2计数表(实际上是2 x 3,因为性别是第一列:

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()
相关问题