12 10 May 2027

12.1 Spread patterns in evolution experiments

We’ll repeat the analysis with the newly loaded RIL data. Let’s calculate the means and variances of cumulative spread:

cum_spread_stats <- group_by(RIL_spread, Treatment, Gap, Gen, Generation) %>%
  summarise(mean_spread = mean(Furthest),
            var_spread = var(Furthest),
            CV_spread = sqrt(var_spread)/mean_spread
  )

And now plot the results:

ggplot(aes(x = Generation, y = mean_spread, color = Treatment), data = cum_spread_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)

ggplot(aes(x = Generation, y = var_spread, color = Treatment), data = cum_spread_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)

ggplot(aes(x = Generation, y = CV_spread, color = Treatment), data = cum_spread_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)
Warning: Removed 1 rows containing missing values (geom_point).

The patterns in the mean are probably not overly distinguishable from linear, although I’d want to see CIs.

Let’s look at per-generation spread.

speed_stats <- group_by(RIL_spread, Treatment, Gap, Gen, Generation) %>%
  summarise(mean_spread = mean(speed),
            var_spread = var(speed),
            CV_spread = sqrt(var_spread)/mean_spread
  )

And now plot the results:

ggplot(aes(x = Generation, y = mean_spread, color = Treatment), data = speed_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)

ggplot(aes(x = Generation, y = var_spread, color = Treatment), data = speed_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)

ggplot(aes(x = Generation, y = CV_spread, color = Treatment), data = speed_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)
Warning: Removed 6 rows containing missing values (geom_point).
Warning: Removed 1 rows containing missing values (geom_path).

In 0p and 1p, the treatments look very similar. But I bet there will be differences in the autocorrelation structure. Let’s fit some models.

m1_0NO <- lm(speed ~ Gen + Rep + speed_m1, data = filter(RIL_spread, Gap == "0p", Treatment == "NO"))
summary(m1_0NO)

Call:
lm(formula = speed ~ Gen + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "0p", Treatment == "NO"))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.3398 -0.9501  0.0388  0.7904  3.5296 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   2.3567     0.7471   3.154   0.0029 **
Gen3         -0.2490     0.6206  -0.401   0.6902   
Gen4         -0.4796     0.6155  -0.779   0.4401   
Gen5          0.1000     0.6146   0.163   0.8715   
Gen6          1.0612     0.6232   1.703   0.0957 . 
Gen7         -0.2470     0.6669  -0.370   0.7129   
Rep2         -0.2007     0.7955  -0.252   0.8020   
Rep3          0.2347     0.8017   0.293   0.7711   
Rep4          0.6667     0.7934   0.840   0.4053   
Rep5          1.4013     0.8017   1.748   0.0874 . 
Rep6         -0.4660     0.7955  -0.586   0.5610   
Rep7          0.2007     0.7955   0.252   0.8020   
Rep8          0.7177     0.7981   0.899   0.3734   
Rep9          0.9353     0.8119   1.152   0.2556   
Rep10         1.0850     0.8063   1.346   0.1853   
speed_m1     -0.1020     0.1726  -0.591   0.5575   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.374 on 44 degrees of freedom
  (10 observations deleted due to missingness)
Multiple R-squared:  0.2873,    Adjusted R-squared:  0.04432 
F-statistic: 1.182 on 15 and 44 DF,  p-value: 0.3201
car::Anova(m1_0NO)
Anova Table (Type II tests)

Response: speed
          Sum Sq Df F value Pr(>F)
Gen       14.832  5  1.5709 0.1882
Rep       18.390  9  1.0820 0.3949
speed_m1   0.660  1  0.3493 0.5575
Residuals 83.090 44               
m1_0YES <- lm(speed ~ Gen + Rep + speed_m1, data = filter(RIL_spread, Gap == "0p", Treatment == "YES"))
summary(m1_0YES)

Call:
lm(formula = speed ~ Gen + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "0p", Treatment == "YES"))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.4242 -0.9333 -0.0096  0.7844  9.4123 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   3.1877     1.2650   2.520   0.0154 * 
Gen3          0.8602     1.0866   0.792   0.4328   
Gen4          0.3393     1.0909   0.311   0.7572   
Gen5          3.4000     1.0862   3.130   0.0031 **
Gen6          0.4369     1.1807   0.370   0.7131   
Gen7         -0.5796     1.0877  -0.533   0.5968   
Rep2         -1.2330     1.4031  -0.879   0.3843   
Rep3         -0.7330     1.4031  -0.522   0.6040   
Rep4         -0.9329     1.4041  -0.664   0.5099   
Rep5         -0.6667     1.4023  -0.475   0.6368   
Rep6         -0.1667     1.4023  -0.119   0.9059   
Rep7         -0.5663     1.4031  -0.404   0.6884   
Rep8         -1.1998     1.4025  -0.856   0.3969   
Rep9         -0.4668     1.4025  -0.333   0.7408   
Rep10        -0.3333     1.4023  -0.238   0.8132   
speed_m1     -0.1990     0.1446  -1.376   0.1757   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.429 on 44 degrees of freedom
  (10 observations deleted due to missingness)
Multiple R-squared:   0.32, Adjusted R-squared:  0.08825 
F-statistic: 1.381 on 15 and 44 DF,  p-value: 0.1992
car::Anova(m1_0YES)
Anova Table (Type II tests)

Response: speed
           Sum Sq Df F value  Pr(>F)  
Gen        96.161  5  3.2602 0.01369 *
Rep         9.104  9  0.1715 0.99602  
speed_m1   11.173  1  1.8940 0.17572  
Residuals 259.560 44                  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Nothing here, really, except for a generation effect in the evolution treatment, which is in turn driven by the high mean in generation 5. We don’t have enough df to look at an interaction, let’s look at the distribution of values to see if it’s a single outlier:

filter(RIL_spread, Treatment == "YES", Gap == "0p", Generation == 5)$speed
 [1] 16  3  7  6  5  7  1  4  3  3

It’s rep 1 with a crazy jump. Could that be a data error? Let’s look at the time series:

filter(RIL_spread, Treatment == "YES", Gap == "0p", Rep == "1")$speed
[1]  2 -1  0  0 16  1  4
popRIL %>% filter(Treatment == "YES", Gap == "0p", Rep == "1") %>%
  select(Generation, Pot, Seedlings) %>%
  reshape(timevar = "Generation", direction = "wide", idvar = "Pot")
   Pot Seedlings.1 Seedlings.2 Seedlings.3 Seedlings.4 Seedlings.5
1    0         262         503         602         785         506
2    1          47         330         484         454         172
3    2           5          NA          NA          NA         298
13   3          NA          NA          NA          NA         236
14   4          NA          NA          NA          NA         176
15   5          NA          NA          NA          NA         519
16   6          NA          NA          NA          NA         235
17   7          NA          NA          NA          NA         340
18   8          NA          NA          NA          NA         322
19   9          NA          NA          NA          NA         346
20  10          NA          NA          NA          NA         346
21  11          NA          NA          NA          NA         340
22  12          NA          NA          NA          NA         345
23  13          NA          NA          NA          NA         208
24  14          NA          NA          NA          NA         117
25  15          NA          NA          NA          NA           1
26  17          NA          NA          NA          NA           1
43  16          NA          NA          NA          NA          NA
45  18          NA          NA          NA          NA          NA
65  19          NA          NA          NA          NA          NA
66  20          NA          NA          NA          NA          NA
67  22          NA          NA          NA          NA          NA
   Seedlings.6 Seedlings.7
1          880         271
2          601         166
3          845         249
13         992         332
14         628         225
15         788         388
16         526         571
17         778         285
18         630         563
19         490         384
20         733         268
21         632         312
22         602         368
23         281         133
24         826         194
25         152         266
26          96         355
43         644         136
45           4         251
65          NA          89
66          NA          15
67          NA           1

There is clearly missing data in generations 2-4! This also appears to have been fixed in the Science paper, as there is no replicate sitting at pot 2 for several generations.

I’ve emailed Jenn, but for now let’s look at it without Rep1

Let’s calculate the means and variances of cumulative spread:

cum_spread_stats <- filter(RIL_spread, !(Rep == "1" & Treatment == "YES" & Gap == "0p")) %>%
  group_by(Treatment, Gap, Gen, Generation) %>%
  summarise(mean_spread = mean(Furthest),
            var_spread = var(Furthest),
            CV_spread = sqrt(var_spread)/mean_spread
  )

And now plot the results:

ggplot(aes(x = Generation, y = mean_spread, color = Treatment), data = cum_spread_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)

ggplot(aes(x = Generation, y = var_spread, color = Treatment), data = cum_spread_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)

ggplot(aes(x = Generation, y = CV_spread, color = Treatment), data = cum_spread_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)
Warning: Removed 1 rows containing missing values (geom_point).

The patterns in the mean are probably not overly distinguishable from linear, although I’d want to see CIs.

Let’s look at per-generation spread.

speed_stats <- filter(RIL_spread, !(Rep == "1" & Treatment == "YES" & Gap == "0p")) %>%
  group_by(Treatment, Gap, Gen, Generation) %>%
  summarise(mean_spread = mean(speed),
            var_spread = var(speed),
            CV_spread = sqrt(var_spread)/mean_spread
  )

And now plot the results:

ggplot(aes(x = Generation, y = mean_spread, color = Treatment), data = speed_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)

ggplot(aes(x = Generation, y = var_spread, color = Treatment), data = speed_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)

ggplot(aes(x = Generation, y = CV_spread, color = Treatment), data = speed_stats) +
  geom_point() + geom_line() + facet_wrap(~ Gap)
Warning: Removed 6 rows containing missing values (geom_point).
Warning: Removed 1 rows containing missing values (geom_path).

In 0p and 1p, the treatments look very similar. But I bet there will be differences in the autocorrelation structure. Let’s fit some models.

m1_0NO <- lm(speed ~ Gen + Rep + speed_m1, 
             data = filter(RIL_spread, Gap == "0p", Treatment == "NO"))
summary(m1_0NO)

Call:
lm(formula = speed ~ Gen + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "0p", Treatment == "NO"))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.3398 -0.9501  0.0388  0.7904  3.5296 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   2.3567     0.7471   3.154   0.0029 **
Gen3         -0.2490     0.6206  -0.401   0.6902   
Gen4         -0.4796     0.6155  -0.779   0.4401   
Gen5          0.1000     0.6146   0.163   0.8715   
Gen6          1.0612     0.6232   1.703   0.0957 . 
Gen7         -0.2470     0.6669  -0.370   0.7129   
Rep2         -0.2007     0.7955  -0.252   0.8020   
Rep3          0.2347     0.8017   0.293   0.7711   
Rep4          0.6667     0.7934   0.840   0.4053   
Rep5          1.4013     0.8017   1.748   0.0874 . 
Rep6         -0.4660     0.7955  -0.586   0.5610   
Rep7          0.2007     0.7955   0.252   0.8020   
Rep8          0.7177     0.7981   0.899   0.3734   
Rep9          0.9353     0.8119   1.152   0.2556   
Rep10         1.0850     0.8063   1.346   0.1853   
speed_m1     -0.1020     0.1726  -0.591   0.5575   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.374 on 44 degrees of freedom
  (10 observations deleted due to missingness)
Multiple R-squared:  0.2873,    Adjusted R-squared:  0.04432 
F-statistic: 1.182 on 15 and 44 DF,  p-value: 0.3201
car::Anova(m1_0NO)
Anova Table (Type II tests)

Response: speed
          Sum Sq Df F value Pr(>F)
Gen       14.832  5  1.5709 0.1882
Rep       18.390  9  1.0820 0.3949
speed_m1   0.660  1  0.3493 0.5575
Residuals 83.090 44               
m1_0YES <- lm(speed ~ Gen + Rep + speed_m1, 
              data = filter(RIL_spread, Gap == "0p", Treatment == "YES", Rep != "1"))
summary(m1_0YES)

Call:
lm(formula = speed ~ Gen + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "0p", Treatment == "YES", Rep != "1"))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.3389 -0.9048 -0.2336  0.9944  3.2949 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  2.51572    0.90182   2.790  0.00812 **
Gen3         0.91819    0.78315   1.172  0.24814   
Gen4         0.37478    0.79621   0.471  0.64048   
Gen5         1.94748    0.78364   2.485  0.01735 * 
Gen6         0.08289    0.83462   0.099  0.92140   
Gen7        -1.19900    0.78447  -1.528  0.13448   
Rep3         0.50000    0.95896   0.521  0.60504   
Rep4         0.28939    0.95926   0.302  0.76450   
Rep5         0.58789    0.96017   0.612  0.54391   
Rep6         1.08789    0.96017   1.133  0.26412   
Rep7         0.66667    0.95896   0.695  0.49105   
Rep8         0.04394    0.95926   0.046  0.96369   
Rep9         0.79850    0.96168   0.830  0.41141   
Rep10        0.92122    0.96017   0.959  0.34325   
speed_m1    -0.26367    0.14451  -1.825  0.07573 . 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.661 on 39 degrees of freedom
  (9 observations deleted due to missingness)
Multiple R-squared:  0.3745,    Adjusted R-squared:  0.1499 
F-statistic: 1.668 on 14 and 39 DF,  p-value: 0.1038
car::Anova(m1_0YES)
Anova Table (Type II tests)

Response: speed
           Sum Sq Df F value   Pr(>F)   
Gen        49.133  5  3.5619 0.009509 **
Rep         6.751  8  0.3059 0.959291   
speed_m1    9.184  1  3.3291 0.075731 . 
Residuals 107.593 39                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

There’s still an effect of Gen 5, but now it looks like just the peak of a quadratic pattern:

m2_0NO <- lm(speed ~ poly(Generation, 2) + Rep + speed_m1, 
             data = filter(RIL_spread, Gap == "0p", Treatment == "NO"))
summary(m2_0NO)

Call:
lm(formula = speed ~ poly(Generation, 2) + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "0p", Treatment == "NO"))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.8175 -0.9077 -0.0137  0.7040  3.0469 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)   
(Intercept)            2.4458     0.7068   3.460  0.00116 **
poly(Generation, 2)1   1.8290     2.2192   0.824  0.41402   
poly(Generation, 2)2  -0.1183     2.2043  -0.054  0.95744   
Rep2                  -0.2185     0.8279  -0.264  0.79295   
Rep3                   0.2704     0.8340   0.324  0.74719   
Rep4                   0.6667     0.8258   0.807  0.42359   
Rep5                   1.4371     0.8340   1.723  0.09143 . 
Rep6                  -0.4481     0.8279  -0.541  0.59087   
Rep7                   0.2185     0.8279   0.264  0.79295   
Rep8                   0.7445     0.8304   0.896  0.37456   
Rep9                   0.9890     0.8440   1.172  0.24723   
Rep10                  1.1297     0.8385   1.347  0.18437   
speed_m1              -0.1556     0.1743  -0.893  0.37649   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.43 on 47 degrees of freedom
  (10 observations deleted due to missingness)
Multiple R-squared:  0.1751,    Adjusted R-squared:  -0.03547 
F-statistic: 0.8316 on 12 and 47 DF,  p-value: 0.6182
car::Anova(m2_0NO)
Anova Table (Type II tests)

Response: speed
                    Sum Sq Df F value Pr(>F)
poly(Generation, 2)  1.757  2  0.4294 0.6534
Rep                 19.278  9  1.0469 0.4185
speed_m1             1.631  1  0.7972 0.3765
Residuals           96.165 47               
m2_0YES <- lm(speed ~ poly(Generation, 2) + Rep + speed_m1, 
              data = filter(RIL_spread, Gap == "0p", Treatment == "YES", Rep != "1"))
summary(m2_0YES)

Call:
lm(formula = speed ~ poly(Generation, 2) + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "0p", Treatment == "YES", Rep != "1"))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.7428 -0.9827 -0.2568  0.8754  3.4194 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)   
(Intercept)           2.71330    0.78203   3.470  0.00122 **
poly(Generation, 2)1  1.68876    2.66425   0.634  0.52961   
poly(Generation, 2)2 -8.22899    2.61909  -3.142  0.00307 **
Rep3                  0.50000    0.98302   0.509  0.61367   
Rep4                  0.28026    0.98328   0.285  0.77703   
Rep5                  0.60615    0.98407   0.616  0.54124   
Rep6                  1.10615    0.98407   1.124  0.26737   
Rep7                  0.66667    0.98302   0.678  0.50137   
Rep8                  0.05308    0.98328   0.054  0.95721   
Rep9                  0.82590    0.98538   0.838  0.40669   
Rep10                 0.93949    0.98407   0.955  0.34519   
speed_m1             -0.31846    0.13641  -2.335  0.02442 * 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.703 on 42 degrees of freedom
  (9 observations deleted due to missingness)
Multiple R-squared:  0.2921,    Adjusted R-squared:  0.1067 
F-statistic: 1.576 on 11 and 42 DF,  p-value: 0.1417
car::Anova(m2_0YES)
Anova Table (Type II tests)

Response: speed
                     Sum Sq Df F value   Pr(>F)   
poly(Generation, 2)  34.970  2  6.0315 0.004981 **
Rep                   7.029  8  0.3031 0.960710   
speed_m1             15.799  1  5.4499 0.024425 * 
Residuals           121.756 42                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

In the evolution treatment, strong quadratic effect of generation and negative autocorrelation. Nothing in the no evolution treatment!

Let’s look at the rest of the landscapes.

m2_0NO <- lm(speed ~ poly(Generation, 2) + Rep + speed_m1, 
             data = filter(RIL_spread, Gap == "1p", Treatment == "NO"))
summary(m2_0NO)

Call:
lm(formula = speed ~ poly(Generation, 2) + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "1p", Treatment == "NO"))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.6149 -0.7524  0.1080  0.6191  3.1936 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)   
(Intercept)            1.3527     0.5187   2.608  0.01218 * 
poly(Generation, 2)1   5.7573     1.8493   3.113  0.00315 **
poly(Generation, 2)2  -4.4217     1.8359  -2.408  0.02000 * 
Rep2                   0.2124     0.6976   0.304  0.76215   
Rep3                   0.9852     0.7056   1.396  0.16919   
Rep4                  -0.2271     0.6928  -0.328  0.74447   
Rep5                  -0.2271     0.6928  -0.328  0.74447   
Rep6                  -0.3333     0.6912  -0.482  0.63186   
Rep7                   0.6519     0.7056   0.924  0.36027   
Rep8                   0.6519     0.7056   0.924  0.36027   
Rep9                   0.5457     0.6976   0.782  0.43801   
Rep10                 -1.2124     0.6976  -1.738  0.08879 . 
speed_m1              -0.3186     0.1419  -2.246  0.02947 * 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.197 on 47 degrees of freedom
  (10 observations deleted due to missingness)
Multiple R-squared:  0.3434,    Adjusted R-squared:  0.1758 
F-statistic: 2.049 on 12 and 47 DF,  p-value: 0.04033
car::Anova(m2_0NO)
Anova Table (Type II tests)

Response: speed
                    Sum Sq Df F value   Pr(>F)   
poly(Generation, 2) 15.094  2  5.2656 0.008641 **
Rep                 18.723  9  1.4514 0.194196   
speed_m1             7.228  1  5.0431 0.029466 * 
Residuals           67.363 47                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m2_0YES <- lm(speed ~ poly(Generation, 2) + Rep + speed_m1, 
              data = filter(RIL_spread, Gap == "1p", Treatment == "YES", Rep != "1"))
summary(m2_0YES)

Call:
lm(formula = speed ~ poly(Generation, 2) + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "1p", Treatment == "YES", Rep != "1"))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.4322 -0.8911 -0.2425  0.8770  3.2000 

Coefficients:
                       Estimate Std. Error t value Pr(>|t|)    
(Intercept)           2.391e+00  6.566e-01   3.642 0.000737 ***
poly(Generation, 2)1 -2.207e+00  2.251e+00  -0.980 0.332469    
poly(Generation, 2)2 -4.364e-01  2.199e+00  -0.198 0.843638    
Rep3                 -8.006e-01  8.521e-01  -0.940 0.352776    
Rep4                 -1.134e+00  8.521e-01  -1.331 0.190420    
Rep5                 -1.467e+00  8.521e-01  -1.722 0.092418 .  
Rep6                 -1.694e-15  8.464e-01   0.000 1.000000    
Rep7                 -1.994e-01  8.521e-01  -0.234 0.816132    
Rep8                  5.343e-01  8.591e-01   0.622 0.537352    
Rep9                 -7.336e-01  8.478e-01  -0.865 0.391776    
Rep10                -1.067e+00  8.478e-01  -1.258 0.215167    
speed_m1             -2.009e-01  1.469e-01  -1.368 0.178626    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.466 on 42 degrees of freedom
  (9 observations deleted due to missingness)
Multiple R-squared:  0.2046,    Adjusted R-squared:  -0.003779 
F-statistic: 0.9819 on 11 and 42 DF,  p-value: 0.4775
car::Anova(m2_0YES)
Anova Table (Type II tests)

Response: speed
                    Sum Sq Df F value Pr(>F)
poly(Generation, 2)  3.847  2  0.8950 0.4163
Rep                 18.402  8  1.0703 0.4019
speed_m1             4.021  1  1.8711 0.1786
Residuals           90.269 42               
m2_0NO <- lm(speed ~ poly(Generation, 2) + Rep + speed_m1, 
             data = filter(RIL_spread, Gap == "2p", Treatment == "NO"))
summary(m2_0NO)

Call:
lm(formula = speed ~ poly(Generation, 2) + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "2p", Treatment == "NO"))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.5500 -1.0534 -0.1734  0.5902  4.3641 

Coefficients:
                       Estimate Std. Error t value Pr(>|t|)  
(Intercept)           9.251e-01  6.895e-01   1.342   0.1861  
poly(Generation, 2)1 -4.270e+00  2.527e+00  -1.690   0.0977 .
poly(Generation, 2)2  6.366e+00  2.470e+00   2.577   0.0132 *
Rep2                 -6.145e-01  9.541e-01  -0.644   0.5226  
Rep3                  1.844e+00  9.791e-01   1.883   0.0659 .
Rep4                  1.229e+00  9.635e-01   1.276   0.2084  
Rep5                 -1.145e-01  9.541e-01  -0.120   0.9050  
Rep6                  7.448e-16  9.509e-01   0.000   1.0000  
Rep7                  6.145e-01  9.541e-01   0.644   0.5226  
Rep8                  6.145e-01  9.541e-01   0.644   0.5226  
Rep9                  1.115e+00  9.541e-01   1.168   0.2486  
Rep10                 3.855e-01  9.541e-01   0.404   0.6880  
speed_m1             -2.290e-01  1.555e-01  -1.473   0.1474  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.647 on 47 degrees of freedom
  (10 observations deleted due to missingness)
Multiple R-squared:  0.2538,    Adjusted R-squared:  0.06328 
F-statistic: 1.332 on 12 and 47 DF,  p-value: 0.2331
car::Anova(m2_0NO)
Anova Table (Type II tests)

Response: speed
                     Sum Sq Df F value  Pr(>F)  
poly(Generation, 2)  18.231  2  3.3605 0.04324 *
Rep                  24.883  9  1.0192 0.43883  
speed_m1              5.885  1  2.1694 0.14745  
Residuals           127.489 47                  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m2_0YES <- lm(speed ~ poly(Generation, 2) + Rep + speed_m1, 
              data = filter(RIL_spread, Gap == "2p", Treatment == "YES", Rep != "1"))
summary(m2_0YES)

Call:
lm(formula = speed ~ poly(Generation, 2) + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "2p", Treatment == "YES", Rep != "1"))

Residuals:
    Min      1Q  Median      3Q     Max 
-2.5667 -1.4896 -0.9113  1.4641  4.6388 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)  
(Intercept)            2.1786     0.9285   2.346   0.0238 *
poly(Generation, 2)1  -1.1631     3.4858  -0.334   0.7403  
poly(Generation, 2)2  -3.2860     3.6111  -0.910   0.3680  
Rep3                  -0.2584     1.2902  -0.200   0.8422  
Rep4                  -1.1208     1.2815  -0.875   0.3868  
Rep5                  -0.3792     1.2815  -0.296   0.7687  
Rep6                  -0.3792     1.2815  -0.296   0.7687  
Rep7                  -1.1208     1.2815  -0.875   0.3868  
Rep8                   0.2416     1.2902   0.187   0.8524  
Rep9                  -1.0000     1.2786  -0.782   0.4385  
Rep10                 -0.3792     1.2815  -0.296   0.7687  
speed_m1              -0.2416     0.1731  -1.396   0.1701  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.215 on 42 degrees of freedom
  (9 observations deleted due to missingness)
Multiple R-squared:  0.1019,    Adjusted R-squared:  -0.1334 
F-statistic: 0.4331 on 11 and 42 DF,  p-value: 0.9321
car::Anova(m2_0YES)
Anova Table (Type II tests)

Response: speed
                     Sum Sq Df F value Pr(>F)
poly(Generation, 2)   9.878  2  1.0071 0.3739
Rep                  10.909  8  0.2781 0.9696
speed_m1              9.553  1  1.9479 0.1701
Residuals           205.971 42               
m2_0NO <- lm(speed ~ poly(Generation, 2) + Rep + speed_m1, 
             data = filter(RIL_spread, Gap == "3p", Treatment == "NO"))
summary(m2_0NO)

Call:
lm(formula = speed ~ poly(Generation, 2) + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "3p", Treatment == "NO"))

Residuals:
    Min      1Q  Median      3Q     Max 
-4.4865 -0.7241 -0.0991  0.2443  3.1763 

Coefficients:
                       Estimate Std. Error t value Pr(>|t|)  
(Intercept)           1.595e+00  6.701e-01   2.381   0.0214 *
poly(Generation, 2)1  2.321e-01  2.426e+00   0.096   0.9242  
poly(Generation, 2)2  2.721e+00  2.405e+00   1.131   0.2636  
Rep2                 -6.928e-16  9.135e-01   0.000   1.0000  
Rep3                 -1.524e+00  9.207e-01  -1.655   0.1045  
Rep4                 -1.524e+00  9.207e-01  -1.655   0.1045  
Rep5                 -8.573e-01  9.207e-01  -0.931   0.3565  
Rep6                 -4.760e-01  9.207e-01  -0.517   0.6076  
Rep7                 -1.524e+00  9.207e-01  -1.655   0.1045  
Rep8                 -6.667e-01  9.135e-01  -0.730   0.4692  
Rep9                 -6.667e-01  9.135e-01  -0.730   0.4692  
Rep10                -1.333e+00  9.135e-01  -1.460   0.1511  
speed_m1             -2.860e-01  1.715e-01  -1.667   0.1021  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.582 on 47 degrees of freedom
  (10 observations deleted due to missingness)
Multiple R-squared:  0.1767,    Adjusted R-squared:  -0.03345 
F-statistic: 0.8409 on 12 and 47 DF,  p-value: 0.6093
car::Anova(m2_0NO)
Anova Table (Type II tests)

Response: speed
                     Sum Sq Df F value Pr(>F)
poly(Generation, 2)   5.157  2  1.0299 0.3649
Rep                  18.543  9  0.8229 0.5982
speed_m1              6.961  1  2.7805 0.1021
Residuals           117.671 47               
m2_0YES <- lm(speed ~ poly(Generation, 2) + Rep + speed_m1, 
              data = filter(RIL_spread, Gap == "3p", Treatment == "YES", Rep != "1"))
summary(m2_0YES)

Call:
lm(formula = speed ~ poly(Generation, 2) + Rep + speed_m1, data = filter(RIL_spread, 
    Gap == "3p", Treatment == "YES", Rep != "1"))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.3934 -1.1567 -0.0894  0.8961  6.0397 

Coefficients:
                       Estimate Std. Error t value Pr(>|t|)    
(Intercept)           1.543e+00  8.663e-01   1.781 0.082173 .  
poly(Generation, 2)1  4.948e+00  3.323e+00   1.489 0.143922    
poly(Generation, 2)2 -1.057e+01  3.209e+00  -3.293 0.002019 ** 
Rep3                  2.596e-15  1.189e+00   0.000 1.000000    
Rep4                  1.009e+00  1.193e+00   0.846 0.402187    
Rep5                  1.009e+00  1.193e+00   0.846 0.402187    
Rep6                 -1.009e+00  1.193e+00  -0.846 0.402187    
Rep7                  1.009e+00  1.193e+00   0.846 0.402187    
Rep8                  1.832e-15  1.189e+00   0.000 1.000000    
Rep9                 -1.009e+00  1.193e+00  -0.846 0.402187    
Rep10                -1.009e+00  1.193e+00  -0.846 0.402187    
speed_m1             -5.141e-01  1.322e-01  -3.888 0.000353 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.06 on 42 degrees of freedom
  (9 observations deleted due to missingness)
Multiple R-squared:  0.381, Adjusted R-squared:  0.2189 
F-statistic:  2.35 on 11 and 42 DF,  p-value: 0.02312
car::Anova(m2_0YES)
Anova Table (Type II tests)

Response: speed
                     Sum Sq Df F value    Pr(>F)    
poly(Generation, 2)  47.607  2  5.6079 0.0069405 ** 
Rep                  34.413  8  1.0134 0.4408425    
speed_m1             64.175  1 15.1191 0.0003532 ***
Residuals           178.275 42                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

It’s a very mixed bag here. In summary, polynomial time and negative autocorrelation are found in:

  • 0p, evo YES
  • 1p, evo NO
  • 3p, evo YES

I’m not sure how to interpret this…. Maybe it’s random artifacts???