16 31 May 2027
16.1 Silique counts in the Ler population data
I’ve loaded in the silique count data from ~Arabidopsis/analysis/*_siliques.csv. I’m not actually sure how “clean” these are; I had to add the gap treatments to generation zero, and in the process found one error in generation 1; I didn’t look at the other generations.
The script is in data/popLer_sil.R
and the data frame is popLer_sil
.
16.2 Patterns of silique variation
Let’s look at silique production in treatment B as a function of replicate (here labeled “ID”) and generation. If my speculations last week hold, then ID:Gen should be significant, but probably not the main effect of ID.
In order to have enough replication to get at the interaction, I’ll look only at the continuous runways and not at generation zero.
sil_data <- subset(popLer_sil, Treatment == "B" & Generation > 0 & Gap == "0p")
summary(aov(Siliques ~ Gen * ID, data = sil_data))
Df Sum Sq Mean Sq F value Pr(>F)
Gen 4 116793 29198 16.377 4.22e-12 ***
ID 10 65216 6522 3.658 0.00013 ***
Gen:ID 37 201238 5439 3.051 8.07e-08 ***
Residuals 288 513482 1783
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
So I’m not sure how to interpret the main effect of ID. Let’s look at the coefficients of a regression to see.
summary(lm(Siliques ~ Gen * ID, data = sil_data))
Call:
lm(formula = Siliques ~ Gen * ID, data = sil_data)
Residuals:
Min 1Q Median 3Q Max
-131.600 -21.557 -1.404 18.703 157.000
Coefficients: (3 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 120.0000 29.8573 4.019 7.46e-05 ***
Gen2 -58.5000 36.5676 -1.600 0.1107
Gen3 -53.1111 33.0085 -1.609 0.1087
Gen4 -2.6923 32.0719 -0.084 0.9332
Gen5 -6.8125 31.6685 -0.215 0.8298
ID84 49.5000 42.2247 1.172 0.2420
ID88 -38.0000 38.5457 -0.986 0.3250
ID91 13.0000 42.2247 0.308 0.7584
ID92 -86.1875 43.5242 -1.980 0.0486 *
ID94 -22.5000 42.2247 -0.533 0.5945
ID96 -40.0000 51.7144 -0.773 0.4399
ID99 -14.0000 42.2247 -0.332 0.7405
ID103 -18.7500 36.5676 -0.513 0.6085
ID107 -3.3333 38.5457 -0.086 0.9311
ID108 -5.0000 42.2247 -0.118 0.9058
Gen2:ID84 11.7500 51.7144 0.227 0.8204
Gen3:ID84 -46.0556 47.7303 -0.965 0.3354
Gen4:ID84 -123.4744 47.0874 -2.622 0.0092 **
Gen5:ID84 -93.0875 45.5263 -2.045 0.0418 *
Gen2:ID88 70.1000 47.8339 1.465 0.1439
Gen3:ID88 34.1111 44.0292 0.775 0.4391
Gen4:ID88 7.2637 43.3315 0.168 0.8670
Gen5:ID88 81.4125 42.1366 1.932 0.0543 .
Gen2:ID91 6.8333 50.2574 0.136 0.8919
Gen3:ID91 -8.3333 46.6811 -0.179 0.8584
Gen4:ID91 -48.5804 45.6306 -1.065 0.2879
Gen5:ID91 -1.1875 45.1988 -0.026 0.9791
Gen2:ID92 NA NA NA NA
Gen3:ID92 NA NA NA NA
Gen4:ID92 26.8798 61.7610 0.435 0.6637
Gen5:ID92 NA NA NA NA
Gen2:ID94 38.6000 50.8452 0.759 0.4484
Gen3:ID94 2.8111 48.3488 0.058 0.9537
Gen4:ID94 -13.3077 47.0874 -0.283 0.7777
Gen5:ID94 116.3125 45.7434 2.543 0.0115 *
Gen2:ID96 59.8333 60.9461 0.982 0.3271
Gen3:ID96 42.9111 56.8249 0.755 0.4508
Gen4:ID96 -20.8077 55.7556 -0.373 0.7093
Gen5:ID96 41.9554 55.1409 0.761 0.4474
Gen2:ID99 52.5000 50.8452 1.033 0.3027
Gen3:ID99 1.2361 46.9456 0.026 0.9790
Gen4:ID99 -55.4327 46.2919 -1.197 0.2321
Gen5:ID99 -35.9653 45.7434 -0.786 0.4324
Gen2:ID103 59.0500 46.2548 1.277 0.2028
Gen3:ID103 29.9722 41.6341 0.720 0.4722
Gen4:ID103 -10.8077 40.2854 -0.268 0.7887
Gen5:ID103 -23.5089 39.6986 -0.592 0.5542
Gen2:ID107 38.8333 48.7568 0.796 0.4264
Gen3:ID107 -0.7556 45.1714 -0.017 0.9867
Gen4:ID107 -29.3744 44.4916 -0.660 0.5096
Gen5:ID107 -40.8542 43.0338 -0.949 0.3432
Gen2:ID108 51.6667 50.2574 1.028 0.3048
Gen3:ID108 10.5556 46.6811 0.226 0.8213
Gen4:ID108 -45.0769 45.3566 -0.994 0.3211
Gen5:ID108 28.6125 44.8689 0.638 0.5242
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 42.22 on 288 degrees of freedom
Multiple R-squared: 0.4274, Adjusted R-squared: 0.326
F-statistic: 4.215 on 51 and 288 DF, p-value: 3.016e-15
anova(lm(Siliques ~ Gen * ID, data = sil_data))
Analysis of Variance Table
Response: Siliques
Df Sum Sq Mean Sq F value Pr(>F)
Gen 4 116793 29198.3 16.3766 4.222e-12 ***
ID 10 65216 6521.6 3.6578 0.0001295 ***
Gen:ID 37 201238 5438.9 3.0505 8.074e-08 ***
Residuals 288 513482 1782.9
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Oh, I see - aov still uses the default contrasts.
## Set orthogonal contrasts.
op <- options(contrasts = c("contr.helmert", "contr.poly"))
summary(aov(Siliques ~ Gen * ID, data = sil_data))
Df Sum Sq Mean Sq F value Pr(>F)
Gen 4 116793 29198 16.377 4.22e-12 ***
ID 10 65216 6522 3.658 0.00013 ***
Gen:ID 37 201238 5439 3.051 8.07e-08 ***
Residuals 288 513482 1783
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
options(op) # reset to previous
Nope, that didn’t do it either.