No linear model > richness is count data.
Checked for overdispersion
Pearson ratio = 1.13 - no meaningful overdispersion
p = 0.26 - not significant, model is not overdispersed
Using Poisson Generalized Linear Mixed Model (GLMM)
model_SR1_pois <- glmmTMB(
richness ~ age + olsenp_2022 + ph_2022 + n_sown_design,
data = df_model_scaled,
family = poisson
)
check_collinearity(model_SR1_pois)
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## age 1.38 [1.12, 2.15] 1.17 0.73 [0.46, 0.89]
## olsenp_2022 1.46 [1.17, 2.25] 1.21 0.69 [0.44, 0.86]
## ph_2022 1.26 [1.06, 2.06] 1.12 0.79 [0.49, 0.94]
## n_sown_design 1.04 [1.00, 33.82] 1.02 0.96 [0.03, 1.00]
summary(model_SR1_pois)
## Family: poisson ( log )
## Formula: richness ~ age + olsenp_2022 + ph_2022 + n_sown_design
## Data: df_model_scaled
##
## AIC BIC logLik -2*log(L) df.resid
## 305.8 315.2 -147.9 295.8 43
##
##
## Conditional model:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.147062 0.029994 104.92 <2e-16 ***
## age -0.069622 0.036335 -1.92 0.0554 .
## olsenp_2022 0.003216 0.036583 0.09 0.9300
## ph_2022 0.054172 0.035088 1.54 0.1226
## n_sown_design 0.005127 0.031316 0.16 0.8700
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(allEffects(model_SR1_pois))
model_SD1 <- lm(shannon ~ age + olsenp_2022 + ph_2022 + n_sown, data = df_model_scaled)
check_collinearity(model_SD1)
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## age 1.39 [1.13, 2.17] 1.18 0.72 [0.46, 0.89]
## olsenp_2022 1.46 [1.17, 2.25] 1.21 0.69 [0.44, 0.86]
## ph_2022 1.26 [1.06, 2.06] 1.12 0.80 [0.49, 0.94]
## n_sown 1.03 [1.00, 367.50] 1.01 0.97 [0.00, 1.00]
summary(model_SD1)
##
## Call:
## lm(formula = shannon ~ age + olsenp_2022 + ph_2022 + n_sown,
## data = df_model_scaled)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.67784 -0.25047 0.02062 0.24941 0.74659
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.16608 0.05066 42.758 <2e-16 ***
## age 0.01277 0.06033 0.212 0.833
## olsenp_2022 0.09865 0.06185 1.595 0.118
## ph_2022 0.02779 0.05740 0.484 0.631
## n_sown 0.02924 0.05187 0.564 0.576
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.351 on 43 degrees of freedom
## Multiple R-squared: 0.07865, Adjusted R-squared: -0.007058
## F-statistic: 0.9176 on 4 and 43 DF, p-value: 0.4624
plot(allEffects(model_SD1))
## Competitive species ----
model_C1 <- lm(C_score ~ age + olsenp_2022 + ph_2022 + n_sown,data = df_model_scaled)
check_collinearity(model_C1)
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## age 1.39 [1.13, 2.17] 1.18 0.72 [0.46, 0.89]
## olsenp_2022 1.46 [1.17, 2.25] 1.21 0.69 [0.44, 0.86]
## ph_2022 1.26 [1.06, 2.06] 1.12 0.80 [0.49, 0.94]
## n_sown 1.03 [1.00, 367.50] 1.01 0.97 [0.00, 1.00]
summary(model_C1)
##
## Call:
## lm(formula = C_score ~ age + olsenp_2022 + ph_2022 + n_sown,
## data = df_model_scaled)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.5111 -4.8698 -0.5635 4.8947 19.1250
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 25.1754 1.0665 23.606 <2e-16 ***
## age 0.7245 1.2701 0.570 0.571
## olsenp_2022 1.6099 1.3021 1.236 0.223
## ph_2022 1.5832 1.2085 1.310 0.197
## n_sown 1.3833 1.0920 1.267 0.212
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.389 on 43 degrees of freedom
## Multiple R-squared: 0.09672, Adjusted R-squared: 0.0127
## F-statistic: 1.151 on 4 and 43 DF, p-value: 0.3457
plot(allEffects(model_C1))
## Stress tolerant species ----
model_S1 <- lm(S_score ~ age + olsenp_2022 + ph_2022 + n_sown,data = df_model_scaled)
check_collinearity(model_S1)
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## age 1.39 [1.13, 2.17] 1.18 0.72 [0.46, 0.89]
## olsenp_2022 1.46 [1.17, 2.25] 1.21 0.69 [0.44, 0.86]
## ph_2022 1.26 [1.06, 2.06] 1.12 0.80 [0.49, 0.94]
## n_sown 1.03 [1.00, 367.50] 1.01 0.97 [0.00, 1.00]
summary(model_S1)
##
## Call:
## lm(formula = S_score ~ age + olsenp_2022 + ph_2022 + n_sown,
## data = df_model_scaled)
##
## Residuals:
## Min 1Q Median 3Q Max
## -18.0355 -4.4508 -0.4823 5.2417 23.9121
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 22.7877 1.4161 16.092 <2e-16 ***
## age 4.5788 1.6865 2.715 0.0095 **
## olsenp_2022 -0.1995 1.7290 -0.115 0.9087
## ph_2022 1.8871 1.6046 1.176 0.2461
## n_sown 0.3689 1.4499 0.254 0.8004
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.811 on 43 degrees of freedom
## Multiple R-squared: 0.1984, Adjusted R-squared: 0.1238
## F-statistic: 2.661 on 4 and 43 DF, p-value: 0.04534
plot(allEffects(model_S1))
## Ruderal species ----
model_R1 <- lm(R_score ~ age + olsenp_2022 + ph_2022 + n_sown,data = df_model_scaled)
check_collinearity(model_R1)
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## age 1.39 [1.13, 2.17] 1.18 0.72 [0.46, 0.89]
## olsenp_2022 1.46 [1.17, 2.25] 1.21 0.69 [0.44, 0.86]
## ph_2022 1.26 [1.06, 2.06] 1.12 0.80 [0.49, 0.94]
## n_sown 1.03 [1.00, 367.50] 1.01 0.97 [0.00, 1.00]
summary(model_R1)
##
## Call:
## lm(formula = R_score ~ age + olsenp_2022 + ph_2022 + n_sown,
## data = df_model_scaled)
##
## Residuals:
## Min 1Q Median 3Q Max
## -30.762 -5.781 1.299 5.786 22.240
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 41.5749 1.5478 26.860 <2e-16 ***
## age -3.5170 1.8434 -1.908 0.0631 .
## olsenp_2022 -0.5665 1.8898 -0.300 0.7658
## ph_2022 -0.3173 1.7539 -0.181 0.8573
## n_sown 1.0179 1.5848 0.642 0.5241
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.72 on 43 degrees of freedom
## Multiple R-squared: 0.1029, Adjusted R-squared: 0.01949
## F-statistic: 1.234 on 4 and 43 DF, p-value: 0.3109
plot(allEffects(model_R1))
model_grass <- lm(graminoid_cover ~ age + olsenp_2022 + ph_2022 + n_sown,data = df_model_scaled)
check_collinearity(model_grass)
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## age 1.39 [1.13, 2.17] 1.18 0.72 [0.46, 0.89]
## olsenp_2022 1.46 [1.17, 2.25] 1.21 0.69 [0.44, 0.86]
## ph_2022 1.26 [1.06, 2.06] 1.12 0.80 [0.49, 0.94]
## n_sown 1.03 [1.00, 367.50] 1.01 0.97 [0.00, 1.00]
summary(model_grass)
##
## Call:
## lm(formula = graminoid_cover ~ age + olsenp_2022 + ph_2022 +
## n_sown, data = df_model_scaled)
##
## Residuals:
## Min 1Q Median 3Q Max
## -47.653 -23.346 -8.419 25.489 76.969
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 50.2813 4.8668 10.331 3.18e-13 ***
## age -0.3903 5.7961 -0.067 0.947
## olsenp_2022 2.4806 5.9423 0.417 0.678
## ph_2022 -10.2492 5.5148 -1.858 0.070 .
## n_sown -0.6305 4.9832 -0.127 0.900
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 33.72 on 43 degrees of freedom
## Multiple R-squared: 0.1073, Adjusted R-squared: 0.02423
## F-statistic: 1.292 on 4 and 43 DF, p-value: 0.2883
plot(allEffects(model_grass))
model_pol <- lm(total_nectar ~ age + olsenp_2022 + ph_2022 + n_sown,data = df_model_scaled)
check_collinearity(model_pol)
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## age 1.39 [1.13, 2.17] 1.18 0.72 [0.46, 0.89]
## olsenp_2022 1.46 [1.17, 2.25] 1.21 0.69 [0.44, 0.86]
## ph_2022 1.26 [1.06, 2.06] 1.12 0.80 [0.49, 0.94]
## n_sown 1.03 [1.00, 367.50] 1.01 0.97 [0.00, 1.00]
summary(model_pol)
##
## Call:
## lm(formula = total_nectar ~ age + olsenp_2022 + ph_2022 + n_sown,
## data = df_model_scaled)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.591 -5.377 -1.439 4.349 16.557
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 16.49292 1.06363 15.506 <2e-16 ***
## age 0.43700 1.26671 0.345 0.7318
## olsenp_2022 0.02839 1.29865 0.022 0.9827
## ph_2022 2.22119 1.20525 1.843 0.0722 .
## n_sown 1.96577 1.08905 1.805 0.0781 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.369 on 43 degrees of freedom
## Multiple R-squared: 0.1514, Adjusted R-squared: 0.07248
## F-statistic: 1.918 on 4 and 43 DF, p-value: 0.1247
plot(allEffects(model_pol))
model_sownsucc <- lm(prop_sown_observed ~ age + olsenp_2022 + ph_2022 + n_sown,data = df_model_scaled)
check_collinearity(model_sownsucc)
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## age 1.39 [1.13, 2.17] 1.18 0.72 [0.46, 0.89]
## olsenp_2022 1.46 [1.17, 2.25] 1.21 0.69 [0.44, 0.86]
## ph_2022 1.26 [1.06, 2.06] 1.12 0.80 [0.49, 0.94]
## n_sown 1.03 [1.00, 367.50] 1.01 0.97 [0.00, 1.00]
summary(model_sownsucc)
##
## Call:
## lm(formula = prop_sown_observed ~ age + olsenp_2022 + ph_2022 +
## n_sown, data = df_model_scaled)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.184129 -0.074000 -0.000525 0.068358 0.291178
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.154373 0.015818 9.759 1.8e-12 ***
## age -0.018838 0.018838 -1.000 0.323
## olsenp_2022 -0.010537 0.019313 -0.546 0.588
## ph_2022 0.032938 0.017924 1.838 0.073 .
## n_sown -0.006071 0.016196 -0.375 0.710
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1096 on 43 degrees of freedom
## Multiple R-squared: 0.1441, Adjusted R-squared: 0.06445
## F-statistic: 1.81 on 4 and 43 DF, p-value: 0.1445
plot(allEffects(model_sownsucc))