Trong sâu bướm, chế độ ăn có quan trọng hơn kích thước trong khả năng chống lại động vật ăn thịt?


8

Tôi đang cố gắng xác định xem sâu bướm ăn chế độ ăn tự nhiên (khỉ) có khả năng kháng động vật ăn thịt (kiến) hơn sâu bướm ăn chế độ ăn nhân tạo (hỗn hợp mầm lúa mì và vitamin). Tôi đã thực hiện một nghiên cứu thử nghiệm với cỡ mẫu nhỏ (20 con sâu bướm; 10 con mỗi chế độ ăn). Tôi đã cân từng con sâu bướm trước khi thí nghiệm. Tôi đã cung cấp một cặp sâu bướm (một con cho mỗi chế độ ăn kiêng) cho một nhóm kiến ​​trong khoảng thời gian năm phút và đếm số lần mà mỗi con sâu bướm bị từ chối. Tôi đã lặp lại quá trình này mười lần.

Đây là dữ liệu của tôi trông như thế nào (A = chế độ ăn nhân tạo, N = chế độ ăn uống tự nhiên):

Trial A_Weight   N_Weight   A_Rejections N_Rejections
1     0.0496     0.1857     0     1 
2     0.0324     0.1112     0     2
3     0.0291     0.3011     0     2
4     0.0247     0.2066     0     3
5     0.0394     0.1448     3     1
6     0.0641     0.0838     1     3
7     0.0360     0.1963     0     2
8     0.0243     0.145      0     3
9     0.0682     0.1519     0     3
10    0.0225     0.1571     1     0

Tôi đang cố gắng chạy ANOVA ở R. Đây là mã của tôi (0 = Chế độ ăn uống nhân tạo, 1 = Chế độ ăn uống tự nhiên; tất cả các vectơ được tổ chức với dữ liệu cho mười con sâu bướm chế độ ăn nhân tạo trước, sau đó là dữ liệu cho mười chế độ ăn uống tự nhiên sâu bướm):

diet <- factor (rep (c (0, 1), each = 10) 
rejections <- c(0,0,0,0,3,1,0,0,0,1,1,2,2,3,1,3,2,3,3,0) 
weight <- c(0.0496,0.0324,0.0291,0.0247,0.0394,0.0641,0.036,0.0243,0.0682,0.0225,0.1857,0.1112,0.3011,0.2066,0.1448,0.0838,0.1963,0.145,0.1519,0.1571)   
all.data <- data.frame(Diet=diet, Rejections = rejections, Weight = weight)  
fit.all <- lm(Rejections ~ Diet * Weight, all.data)  
anova(fit.all)  

Và đây là kết quả của tôi như sau:

Analysis of Variance Table  

Response: Rejections  
            Df  Sum Sq Mean Sq F value   Pr(>F)    
Diet         1 11.2500 11.2500  9.8044 0.006444 ** 
Weight       1  0.0661  0.0661  0.0576 0.813432    
Diet:Weight  1  0.0748  0.0748  0.0652 0.801678    
Residuals   16 18.3591  1.1474                     
--- 
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Câu hỏi của tôi là:

  • ANOVA có thích hợp ở đây không? Tôi nhận ra cỡ mẫu nhỏ sẽ là một vấn đề với bất kỳ thử nghiệm thống kê nào; đây chỉ là một nghiên cứu thử nghiệm mà tôi muốn chạy số liệu thống kê để trình bày trên lớp. Tôi dự định làm lại nghiên cứu này với cỡ mẫu lớn hơn.
  • Tôi đã nhập dữ liệu của mình vào R chính xác chưa?
  • Có phải điều này nói với tôi rằng chế độ ăn uống là đáng kể, nhưng cân nặng thì không?

7
Vì trọng lượng hoàn toàn bị nhầm lẫn với chế độ ăn kiêng - những người có chế độ ăn tự nhiên nặng hơn đồng đều so với chế độ ăn nhân tạo - thật khó để biết làm thế nào bạn có thể kết luận bất cứ điều gì về mối quan hệ giữa một trong hai người và sự từ chối.
whuber

Yeah tôi đồng ý với bạn. Khi tôi làm lại điều này, tôi dự định sẽ cho ăn tất cả các chế độ ăn nhân tạo của sâu bướm (một loại có chất allelochemicals) để chúng sẽ phát triển với tốc độ như nhau.
Meow

Câu trả lời:


14

tl; dr @whuber nói đúng rằng chế độ ăn kiêng và cân nặng bị giới hạn trong phân tích của bạn: đây là hình ảnh trông như thế nào.

nhập mô tả hình ảnh ở đây

Các điểm chất béo + phạm vi cho thấy khoảng tin cậy trung bình và bootstrap cho chế độ ăn một mình; đường màu xám + khoảng tin cậy cho thấy mối quan hệ tổng thể với trọng lượng; các dòng riêng lẻ + CI hiển thị các mối quan hệ với trọng số cho mỗi nhóm. Có nhiều sự từ chối cho chế độ ăn uống = N, nhưng những người đó cũng có trọng lượng cao hơn.

Đi sâu vào các chi tiết cơ học chính xác: bạn đang đi đúng hướng với phân tích của mình, nhưng (1) khi bạn kiểm tra hiệu quả của chế độ ăn kiêng, bạn phải tính đến ảnh hưởng của cân nặng và ngược lại ; theo mặc định R thực hiện ANOVA tuần tự , kiểm tra hiệu quả của chế độ ăn một mình; (2) đối với dữ liệu như thế này, có lẽ bạn nên sử dụng mô hình tuyến tính tổng quát Poisson (GLM), mặc dù nó không tạo ra quá nhiều khác biệt so với kết luận thống kê trong trường hợp này.

Nếu bạn nhìn vào summary()chứ không phải anova()kiểm tra các hiệu ứng cận biên, bạn sẽ thấy rằng không có gì đặc biệt quan trọng (bạn cũng phải cẩn thận với việc kiểm tra các tác dụng chính khi có sự tương tác: trong trường hợp này hiệu quả của chế độ ăn kiêng được đánh giá ở mức trọng số bằng 0 : có thể không hợp lý, nhưng vì sự tương tác là không đáng kể (mặc dù nó có ảnh hưởng lớn!) nên nó có thể không tạo ra nhiều khác biệt.

summary(fit.lm <- lm(rejections~diet*weight,data=dd2))
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)
## (Intercept)    0.3455     0.9119   0.379    0.710
## dietN          1.9557     1.4000   1.397    0.182
## weight         3.9573    21.6920   0.182    0.858
## dietN:weight  -5.7465    22.5013  -0.255    0.802

Định tâm biến trọng lượng:

dd2$cweight <- dd2$weight-mean(dd2$weight)
summary(fit.clm <- update(fit.lm,rejections~diet*cweight))
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)
## (Intercept)     0.7559     1.4429   0.524    0.608
## dietN           1.3598     1.5318   0.888    0.388
## cweight         3.9573    21.6920   0.182    0.858
## dietN:cweight  -5.7465    22.5013  -0.255    0.802

Không có thay đổi lớn trong câu chuyện ở đây.

car::Anova(fit.clm,type="3")
## Response: rejections
##               Sum Sq Df F value Pr(>F)
## (Intercept)   0.3149  1  0.2744 0.6076
## diet          0.9043  1  0.7881 0.3878
## cweight       0.0382  1  0.0333 0.8575
## diet:cweight  0.0748  1  0.0652 0.8017
## Residuals    18.3591 16               

Có một số tranh luận về việc liệu cái gọi là xét nghiệm "loại 3" có hợp lý hay không; họ không luôn luôn, mặc dù tập trung trọng lượng giúp. Phân tích loại 2, kiểm tra các hiệu ứng chính sau khi lấy tương tác ra khỏi mô hình, có thể được bảo vệ nhiều hơn. Trong trường hợp này, chế độ ăn kiêng và cân nặng được kiểm tra với sự có mặt của nhau, nhưng không có sự tương tác đi kèm.

car::Anova(fit.clm,type="2")
## Response: rejections
##               Sum Sq Df F value  Pr(>F)  
## diet          4.1179  1  3.5888 0.07639 .
## cweight       0.0661  1  0.0576 0.81343  
## diet:cweight  0.0748  1  0.0652 0.80168  
## Residuals    18.3591 16                  

Chúng ta có thể thấy rằng nếu chúng ta phân tích chế độ ăn kiêng bỏ qua ảnh hưởng của cân nặng, chúng ta sẽ nhận được một kết quả rất có ý nghĩa - đây thực chất là những gì bạn tìm thấy trong phân tích của mình, vì ANOVA tuần tự.

fit.lm_diet <- update(fit.clm,. ~ diet)
car::Anova(fit.lm_diet)
## Response: rejections
##           Sum Sq Df F value   Pr(>F)   
## diet       11.25  1  10.946 0.003908 **
## Residuals  18.50 18                    

Sẽ là tiêu chuẩn hơn để phù hợp với loại dữ liệu này với Poisson GLM ( glm(rejections~diet*cweight,data=dd2,family=poisson)), nhưng trong trường hợp này, nó không tạo ra nhiều khác biệt cho kết luận.

Nhân tiện, tốt hơn là sắp xếp lại dữ liệu của bạn theo chương trình thay vì bằng tay nếu bạn có thể. Để tham khảo, đây là cách tôi đã làm (xin lỗi vì số lượng "ma thuật" tôi đã sử dụng):

library(tidyr)
library(dplyr)

dd <- read.table(header=TRUE,text=
"Trial A_Weight   N_Weight   A_Rejections N_Rejections
1     0.0496     0.1857     0     1 
2     0.0324     0.1112     0     2
3     0.0291     0.3011     0     2
4     0.0247     0.2066     0     3
5     0.0394     0.1448     3     1
6     0.0641     0.0838     1     3
7     0.0360     0.1963     0     2
8     0.0243     0.145      0     3
9     0.0682     0.1519     0     3
10    0.0225     0.1571     1     0
")

## pick out weight and rearrange to long format
dwt <- dd %>% select(Trial,A_Weight,N_Weight) %>%
    gather(diet,weight,-Trial) %>%
    mutate(diet=gsub("_.*","",diet))
## ditto, rejections
drej <- dd %>% select(Trial,A_Rejections,N_Rejections) %>%
    gather(diet,rejections,-Trial) %>%
    mutate(diet=gsub("_.*","",diet))
## put them back together
dd2 <- full_join(dwt,drej,by=c("Trial","diet"))

Mã âm mưu:

dd_sum <- dd2 %>% group_by(diet) %>%
   do(data.frame(weight=mean(.$weight),
              rbind(mean_cl_boot(.$rejections))))

library(ggplot2); theme_set(theme_bw())
ggplot(dd2,aes(weight,rejections,colour=diet))+
geom_point()+
scale_colour_brewer(palette="Set1")+
scale_fill_brewer(palette="Set1")+
geom_pointrange(data=dd_sum,aes(y=y,ymin=ymin,ymax=ymax),
                size=4,alpha=0.5,show.legend=FALSE)+
geom_smooth(method="lm",aes(fill=diet),alpha=0.1)+
geom_smooth(method="lm",aes(group=1),colour="darkgray",
            alpha=0.1)+
scale_y_continuous(limits=c(0,3),oob=scales::squish)

2
Cảm ơn bạn rất nhiều vì đã giúp đỡ của bạn. Tôi đã không nhận ra ANOVA là tuần tự, và bỏ qua trọng lượng trong trường hợp này - thật tốt khi biết!
Meow
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.