data_long = readxl::read_xlsx("~/Desktop/My_Data/R_analysis/Copy of data_wide.xlsx") |>
janitor::clean_names()
The 3 plots below are just show a graphical representation of outliers, I intially had a boxplot, but Andy wasn’t too hapy with and suggested I try something else, so I included 2 more plots. Do you have an opionion on what might bve a good plot to show residuals or outliers?
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: t_ha_total_marketable ~ variety * spacing + (1 | rep)
## Data: dat_2025
##
## REML criterion at convergence: 116
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -1.53490 -0.70338 -0.05258 0.64108 1.67106
##
## Random effects:
## Groups Name Variance Std.Dev.
## rep (Intercept) 15.87 3.984
## Residual 25.77 5.077
## Number of obs: 23, groups: rep, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 55.35063 3.58935 12.60298 15.421 1.49e-09 ***
## varietyLakeview 0.08187 3.91908 14.24805 0.021 0.9836
## spacing10 7.04437 3.91908 14.24805 1.797 0.0935 .
## spacing12 0.35687 3.91908 14.24805 0.091 0.9287
## varietyLakeview:spacing10 -7.27687 5.31472 14.16516 -1.369 0.1923
## varietyLakeview:spacing12 -4.13937 5.31472 14.16516 -0.779 0.4489
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) vrtyLk spcn10 spcn12 vrL:10
## varietyLkvw -0.634
## spacing10 -0.634 0.580
## spacing12 -0.634 0.580 0.580
## vrtyLkvw:10 0.467 -0.737 -0.737 -0.428
## vrtyLkvw:12 0.467 -0.737 -0.428 -0.737 0.544
## variety spacing emmean SE df lower.CL upper.CL
## Caribou 8 55.4 3.61 12.5 47.5 63.2
## Lakeview 8 55.4 3.23 10.1 48.3 62.6
## Caribou 10 62.4 3.23 10.1 55.2 69.6
## Lakeview 10 55.2 3.23 10.1 48.0 62.4
## Caribou 12 55.7 3.23 10.1 48.5 62.9
## Lakeview 12 51.6 3.23 10.1 44.5 58.8
##
## Degrees-of-freedom method: kenward-roger
## Confidence level used: 0.95
## contrast estimate SE df t.ratio p.value
## Caribou spacing8 - Lakeview spacing8 -0.0819 3.94 14.2 -0.021 1.0000
## Caribou spacing8 - Caribou spacing10 -7.0444 3.94 14.2 -1.788 0.5022
## Caribou spacing8 - Lakeview spacing10 0.1506 3.94 14.2 0.038 1.0000
## Caribou spacing8 - Caribou spacing12 -0.3569 3.94 14.2 -0.091 1.0000
## Caribou spacing8 - Lakeview spacing12 3.7006 3.94 14.2 0.939 0.9294
## Lakeview spacing8 - Caribou spacing10 -6.9625 3.59 14.0 -1.939 0.4200
## Lakeview spacing8 - Lakeview spacing10 0.2325 3.59 14.0 0.065 1.0000
## Lakeview spacing8 - Caribou spacing12 -0.2750 3.59 14.0 -0.077 1.0000
## Lakeview spacing8 - Lakeview spacing12 3.7825 3.59 14.0 1.054 0.8914
## Caribou spacing10 - Lakeview spacing10 7.1950 3.59 14.0 2.004 0.3868
## Caribou spacing10 - Caribou spacing12 6.6875 3.59 14.0 1.863 0.4609
## Caribou spacing10 - Lakeview spacing12 10.7450 3.59 14.0 2.993 0.0831
## Lakeview spacing10 - Caribou spacing12 -0.5075 3.59 14.0 -0.141 1.0000
## Lakeview spacing10 - Lakeview spacing12 3.5500 3.59 14.0 0.989 0.9141
## Caribou spacing12 - Lakeview spacing12 4.0575 3.59 14.0 1.130 0.8609
##
## Degrees-of-freedom method: kenward-roger
## P value adjustment: tukey method for comparing a family of 6 estimates
## variety = Caribou:
## contrast estimate SE df t.ratio p.value
## spacing8 - spacing10 -7.044 3.94 14.2 -1.788 0.2089
## spacing8 - spacing12 -0.357 3.94 14.2 -0.091 0.9955
## spacing10 - spacing12 6.688 3.59 14.0 1.863 0.1860
##
## variety = Lakeview:
## contrast estimate SE df t.ratio p.value
## spacing8 - spacing10 0.233 3.59 14.0 0.065 0.9977
## spacing8 - spacing12 3.783 3.59 14.0 1.054 0.5569
## spacing10 - spacing12 3.550 3.59 14.0 0.989 0.5955
##
## Degrees-of-freedom method: kenward-roger
## P value adjustment: tukey method for comparing a family of 3 estimates
## spacing = 8:
## contrast estimate SE df t.ratio p.value
## Caribou - Lakeview -0.0819 3.94 14.2 -0.021 0.9837
##
## spacing = 10:
## contrast estimate SE df t.ratio p.value
## Caribou - Lakeview 7.1950 3.59 14.0 2.004 0.0648
##
## spacing = 12:
## contrast estimate SE df t.ratio p.value
## Caribou - Lakeview 4.0575 3.59 14.0 1.130 0.2774
##
## Degrees-of-freedom method: kenward-roger
m_all = lmer(
t_ha_total_marketable ~ year * variety * spacing + (1 | year:rep),
data = dat,
REML = TRUE
)
anova(m_all)
summary(m_all)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: t_ha_total_marketable ~ year * variety * spacing + (1 | year:rep)
## Data: dat
##
## REML criterion at convergence: 253.2
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.02576 -0.51527 0.04525 0.45732 1.77466
##
## Random effects:
## Groups Name Variance Std.Dev.
## year:rep (Intercept) 7.077 2.660
## Residual 45.554 6.749
## Number of obs: 47, groups: year:rep, 8
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 52.8075 3.6274 32.2451 14.558 9.94e-16
## year2025 2.3647 5.5176 33.3042 0.429 0.671
## varietyLakeview 9.4975 4.7725 29.1387 1.990 0.056
## spacing10 4.1375 4.7725 29.1387 0.867 0.393
## spacing12 -0.5775 4.7725 29.1387 -0.121 0.905
## year2025:varietyLakeview -9.2372 7.0486 29.5858 -1.311 0.200
## year2025:spacing10 3.0853 7.0486 29.5858 0.438 0.665
## year2025:spacing12 1.1128 7.0486 29.5858 0.158 0.876
## varietyLakeview:spacing10 -2.2450 6.7494 29.1387 -0.333 0.742
## varietyLakeview:spacing12 -5.4500 6.7494 29.1387 -0.807 0.426
## year2025:varietyLakeview:spacing10 -5.2103 9.7589 29.3729 -0.534 0.597
## year2025:varietyLakeview:spacing12 1.1322 9.7589 29.3729 0.116 0.908
##
## (Intercept) ***
## year2025
## varietyLakeview .
## spacing10
## spacing12
## year2025:varietyLakeview
## year2025:spacing10
## year2025:spacing12
## varietyLakeview:spacing10
## varietyLakeview:spacing12
## year2025:varietyLakeview:spacing10
## year2025:varietyLakeview:spacing12
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) yr2025 vrtyLk spcn10 spcn12 yr2025:L y2025:10 y2025:12
## year2025 -0.657
## varietyLkvw -0.658 0.432
## spacing10 -0.658 0.432 0.500
## spacing12 -0.658 0.432 0.500 0.500
## yr2025:vrtL 0.445 -0.692 -0.677 -0.339 -0.339
## yr2025:sp10 0.445 -0.692 -0.339 -0.677 -0.339 0.542
## yr2025:sp12 0.445 -0.692 -0.339 -0.339 -0.677 0.542 0.542
## vrtyLkvw:10 0.465 -0.306 -0.707 -0.707 -0.354 0.479 0.479 0.239
## vrtyLkvw:12 0.465 -0.306 -0.707 -0.354 -0.707 0.479 0.239 0.479
## yr2025:L:10 -0.322 0.500 0.489 0.489 0.245 -0.722 -0.722 -0.391
## yr2025:L:12 -0.322 0.500 0.489 0.245 0.489 -0.722 -0.391 -0.722
## vrL:10 vrL:12 y2025:L:10
## year2025
## varietyLkvw
## spacing10
## spacing12
## yr2025:vrtL
## yr2025:sp10
## yr2025:sp12
## vrtyLkvw:10
## vrtyLkvw:12 0.500
## yr2025:L:10 -0.692 -0.346
## yr2025:L:12 -0.346 -0.692 0.522
# Year-specific treatment means
emm_by_year = emmeans(m_all, ~ variety * spacing | year)
emm_by_year
## year = 2024:
## variety spacing emmean SE df lower.CL upper.CL
## Caribou 8 52.8 3.63 32.2 45.4 60.2
## Lakeview 8 62.3 3.63 32.2 54.9 69.7
## Caribou 10 56.9 3.63 32.2 49.6 64.3
## Lakeview 10 64.2 3.63 32.2 56.8 71.6
## Caribou 12 52.2 3.63 32.2 44.8 59.6
## Lakeview 12 56.3 3.63 32.2 48.9 63.7
##
## year = 2025:
## variety spacing emmean SE df lower.CL upper.CL
## Caribou 8 55.2 4.19 33.9 46.7 63.7
## Lakeview 8 55.4 3.63 32.2 48.0 62.8
## Caribou 10 62.4 3.63 32.2 55.0 69.8
## Lakeview 10 55.2 3.63 32.2 47.8 62.6
## Caribou 12 55.7 3.63 32.2 48.3 63.1
## Lakeview 12 51.6 3.63 32.2 44.3 59.0
##
## Degrees-of-freedom method: kenward-roger
## Confidence level used: 0.95
# Pairwise within each year (all 6 combos per year)
pairs(emm_by_year, adjust = "tukey")
## year = 2024:
## contrast estimate SE df t.ratio p.value
## Caribou spacing8 - Lakeview spacing8 -9.4975 4.77 29.0 -1.990 0.3720
## Caribou spacing8 - Caribou spacing10 -4.1375 4.77 29.0 -0.867 0.9514
## Caribou spacing8 - Lakeview spacing10 -11.3900 4.77 29.0 -2.387 0.1941
## Caribou spacing8 - Caribou spacing12 0.5775 4.77 29.0 0.121 1.0000
## Caribou spacing8 - Lakeview spacing12 -3.4700 4.77 29.0 -0.727 0.9769
## Lakeview spacing8 - Caribou spacing10 5.3600 4.77 29.0 1.123 0.8678
## Lakeview spacing8 - Lakeview spacing10 -1.8925 4.77 29.0 -0.397 0.9986
## Lakeview spacing8 - Caribou spacing12 10.0750 4.77 29.0 2.111 0.3098
## Lakeview spacing8 - Lakeview spacing12 6.0275 4.77 29.0 1.263 0.8021
## Caribou spacing10 - Lakeview spacing10 -7.2525 4.77 29.0 -1.520 0.6549
## Caribou spacing10 - Caribou spacing12 4.7150 4.77 29.0 0.988 0.9181
## Caribou spacing10 - Lakeview spacing12 0.6675 4.77 29.0 0.140 1.0000
## Lakeview spacing10 - Caribou spacing12 11.9675 4.77 29.0 2.508 0.1550
## Lakeview spacing10 - Lakeview spacing12 7.9200 4.77 29.0 1.659 0.5679
## Caribou spacing12 - Lakeview spacing12 -4.0475 4.77 29.0 -0.848 0.9556
##
## year = 2025:
## contrast estimate SE df t.ratio p.value
## Caribou spacing8 - Lakeview spacing8 -0.2603 5.21 29.8 -0.050 1.0000
## Caribou spacing8 - Caribou spacing10 -7.2228 5.21 29.8 -1.385 0.7354
## Caribou spacing8 - Lakeview spacing10 -0.0278 5.21 29.8 -0.005 1.0000
## Caribou spacing8 - Caribou spacing12 -0.5353 5.21 29.8 -0.103 1.0000
## Caribou spacing8 - Lakeview spacing12 3.5222 5.21 29.8 0.675 0.9834
## Lakeview spacing8 - Caribou spacing10 -6.9625 4.77 29.0 -1.459 0.6919
## Lakeview spacing8 - Lakeview spacing10 0.2325 4.77 29.0 0.049 1.0000
## Lakeview spacing8 - Caribou spacing12 -0.2750 4.77 29.0 -0.058 1.0000
## Lakeview spacing8 - Lakeview spacing12 3.7825 4.77 29.0 0.793 0.9666
## Caribou spacing10 - Lakeview spacing10 7.1950 4.77 29.0 1.508 0.6623
## Caribou spacing10 - Caribou spacing12 6.6875 4.77 29.0 1.401 0.7259
## Caribou spacing10 - Lakeview spacing12 10.7450 4.77 29.0 2.251 0.2462
## Lakeview spacing10 - Caribou spacing12 -0.5075 4.77 29.0 -0.106 1.0000
## Lakeview spacing10 - Lakeview spacing12 3.5500 4.77 29.0 0.744 0.9745
## Caribou spacing12 - Lakeview spacing12 4.0575 4.77 29.0 0.850 0.9551
##
## Degrees-of-freedom method: kenward-roger
## P value adjustment: tukey method for comparing a family of 6 estimates
# Spacing comparisons within variety, by year
pairs(emm_by_year, by = c("year","variety"), adjust = "tukey")
## year = 2024, variety = Caribou:
## contrast estimate SE df t.ratio p.value
## spacing8 - spacing10 -4.138 4.77 29.0 -0.867 0.6650
## spacing8 - spacing12 0.578 4.77 29.0 0.121 0.9920
## spacing10 - spacing12 4.715 4.77 29.0 0.988 0.5902
##
## year = 2025, variety = Caribou:
## contrast estimate SE df t.ratio p.value
## spacing8 - spacing10 -7.223 5.21 29.8 -1.385 0.3614
## spacing8 - spacing12 -0.535 5.21 29.8 -0.103 0.9942
## spacing10 - spacing12 6.688 4.77 29.0 1.401 0.3535
##
## year = 2024, variety = Lakeview:
## contrast estimate SE df t.ratio p.value
## spacing8 - spacing10 -1.893 4.77 29.0 -0.397 0.9172
## spacing8 - spacing12 6.027 4.77 29.0 1.263 0.4270
## spacing10 - spacing12 7.920 4.77 29.0 1.659 0.2378
##
## year = 2025, variety = Lakeview:
## contrast estimate SE df t.ratio p.value
## spacing8 - spacing10 0.233 4.77 29.0 0.049 0.9987
## spacing8 - spacing12 3.783 4.77 29.0 0.793 0.7105
## spacing10 - spacing12 3.550 4.77 29.0 0.744 0.7397
##
## Degrees-of-freedom method: kenward-roger
## P value adjustment: tukey method for comparing a family of 3 estimates
# Variety comparisons within spacing, by year
pairs(emm_by_year, by = c("year","spacing"), adjust = "tukey")
## year = 2024, spacing = 8:
## contrast estimate SE df t.ratio p.value
## Caribou - Lakeview -9.50 4.77 29.0 -1.990 0.0561
##
## year = 2025, spacing = 8:
## contrast estimate SE df t.ratio p.value
## Caribou - Lakeview -0.26 5.21 29.8 -0.050 0.9605
##
## year = 2024, spacing = 10:
## contrast estimate SE df t.ratio p.value
## Caribou - Lakeview -7.25 4.77 29.0 -1.520 0.1394
##
## year = 2025, spacing = 10:
## contrast estimate SE df t.ratio p.value
## Caribou - Lakeview 7.20 4.77 29.0 1.508 0.1425
##
## year = 2024, spacing = 12:
## contrast estimate SE df t.ratio p.value
## Caribou - Lakeview -4.05 4.77 29.0 -0.848 0.4033
##
## year = 2025, spacing = 12:
## contrast estimate SE df t.ratio p.value
## Caribou - Lakeview 4.06 4.77 29.0 0.850 0.4022
##
## Degrees-of-freedom method: kenward-roger