strangecharm
strangecharm

Reputation: 168

Unexpected error while using ANOVA w/repeated measures: Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases

I have four datasets derived and processed identically (though differing in size due to the availability of Landsat scenes)

I am trying to compute ANOVA using the formula:

res.aov <- anova_test(
  data = LST_Weather_dataset_ANOVA, dv = LST, wid = JulianDay,
  within = c(Buffer, TimePeriod),
  effect.size = "ges",
  detailed = TRUE,
)
get_anova_table(res.aov, correction = "auto")

Where: *) LST = surface temperature deviation in C *) JulianDay = days since start of year *) Buffer = a value 100-1900 - one of 19 areas outward from the boundary of a solar power plant (each 100m wide) *) TimePeriod = a factor with a value of 0 or 1 corresponding to pre-/post-construction of the solar power plant.

The intent is to investigate if the construction of the installation affected the adjacent land surface temperature.

At three sites the ANOVA runs successfully, however at the fourth site it doesn't and fails with the error:

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases

I have 381 rows of data in 4 columns (extract below), the only difference I can think of here is that I had to remove two paired months from the time series as data was not available in one of the months. This means there are 20 months of data, rather than 24. Every other processing step is identical.

Reading online I have searched for N/As (there are none), and can't see how there are levels without values as every cell has data. I don't know how to properly evaluate this, though, as it seems this is the root of the error.

I'm hoping someone will know the code needed and/or be able to suggest a way forwards.

Buffer  LST         JulianDay   TimePeriod
1800    -0.04576149 73          2
1900    -0.03422945 73          2
1900    -0.02089755 302         1
1900    -0.02062432 96          1
1900    -0.01465229 192         1
1900    -0.00643754 128         1
1900    -0.00333345 105         2
1800    -0.00266312 366         1
1900    -0.00181226 201         2
1900    -0.00158173 169         2
1900    -1.81E-05   41          2
1800    0.00144813  128         1
and 367 additional rows...

[Edits]

Per comments below:

  1. dput() whole dataframe
  2. dput() subset (as suggested)

Thanks @Dion for noting anova_test is from the RStatix package.

1)

> dput(LST_Weather_dataset_ANOVA)
structure(list(Buffer = c(100L, 200L, 300L, 400L, 500L, 600L, 
700L, 800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L, 100L, 200L, 300L, 400L, 500L, 600L, 700L, 
800L, 900L, 1000L, 1100L, 1200L, 1300L, 1400L, 1500L, 1600L, 
1700L, 1800L, 1900L), LST = c(0.91797777, 0.95083024, 0.79129483, 
0.74791195, 0.68740945, 0.64516119, 0.74870729, 0.78357522, 0.83663769, 
0.82156894, 0.77440129, 0.62769619, 0.52052404, 0.46497939, 0.34456476, 
0.20359411, 0.11688336, 0.04136486, -0.02089755, 1.15111659, 
1.20353638, 1.11717501, 1.0286145, 0.90984545, 0.82983601, 0.78186792, 
0.73227976, 0.6989393, 0.65015275, 0.56241798, 0.39651023, 0.34213091, 
0.3386525, 0.24000145, 0.11809023, 0.07704512, -0.00266312, 0.01273022, 
1.04229626, 1.14347392, 1.1156609, 1.10575157, 1.01202522, 0.77829087, 
0.80477079, 0.79677169, 0.83116477, 0.83242401, 0.82394197, 0.72073306, 
0.64099082, 0.58188225, 0.43328083, 0.28349521, 0.19752629, 0.10636456, 
0.01987005, 0.74458844, 0.71512573, 0.6395358, 0.65294657, 0.63325921, 
0.56155255, 0.60860815, 0.60614753, 0.59989994, 0.58766288, 0.57257261, 
0.50018929, 0.4367402, 0.40497079, 0.31822141, 0.2300726, 0.16928876, 
0.09449034, 0.01799424, 0.82747052, 0.78262774, 0.65488597, 0.62609552, 
0.60057131, 0.59950609, 0.6609992, 0.6876772, 0.73196883, 0.75516596, 
0.75554112, 0.64167458, 0.54703129, 0.49947692, 0.38230481, 0.25519237, 
0.16087274, 0.07759223, 0.00820849, 0.75009747, 0.71421977, 0.62411035, 
0.58621041, 0.58438012, 0.61346156, 0.72712994, 0.81372726, 0.87579554, 
0.88934787, 0.87369461, 0.74686202, 0.64084028, 0.5599638, 0.40021941, 
0.23612052, 0.13408522, 0.04484869, -0.02062432, 0.22133116, 
0.28562902, 0.24359043, 0.17788898, 0.16563242, 0.11740664, 0.10102937, 
0.07328697, 0.07948283, 0.07521508, 0.08526232, 0.0548022, 0.04632606, 
0.06670398, 0.03262545, 0.00650875, 0.01186519, 0.00144813, -0.00643754, 
0.26360849, 0.22139941, 0.16915041, 0.13499715, 0.12846785, 0.15351528, 
0.15321108, 0.13963269, 0.13413671, 0.13097696, 0.15897844, 0.15489366, 
0.12600815, 0.12363834, 0.0943688, 0.07324289, 0.0565765, 0.04005241, 
0.01346488, 0.42361198, 0.39149841, 0.29086274, 0.21492842, 0.20664552, 
0.24524285, 0.30548979, 0.35256808, 0.37350282, 0.38680061, 0.38567758, 
0.31177736, 0.24643091, 0.22001284, 0.14356522, 0.07076854, 0.04168654, 
0.01276553, -0.01465229, 0.57032414, 0.50658577, 0.41717664, 
0.36134446, 0.35794989, 0.38457285, 0.43700723, 0.48358206, 0.50516801, 
0.50086146, 0.49398709, 0.41516438, 0.33165215, 0.28357127, 0.20030152, 
0.11993505, 0.08438345, 0.05755944, 0.01071499, 0.04963208, 0.34087747, 
0.38385889, 0.40408637, 0.41182138, 0.15662208, 0.18857013, 0.17978741, 
0.1533216, 0.1451422, 0.14890638, 0.14090521, 0.1782449, 0.23624089, 
0.21003477, 0.13812217, 0.10759364, 0.07225312, 0.03185378, 0.27507486, 
0.54404521, 0.56568824, 0.58543167, 0.49124799, 0.28299777, 0.27514982, 
0.27526446, 0.27376722, 0.24620415, 0.22871699, 0.19647326, 0.2450593, 
0.27133386, 0.15248773, 0.06240341, 0.04933824, 0.03356535, -1.81e-05, 
0.21776379, 0.37010032, 0.32743525, 0.30588107, 0.31226738, 0.30518286, 
0.32637517, 0.31003415, 0.23691586, 0.1985241, 0.16143326, 0.12384526, 
0.11556386, 0.09243356, 0.05773894, 0.03660942, 0.02173758, -0.04576149, 
-0.03422945, 0.06214728, 0.26440563, 0.24838816, 0.22704611, 
0.17230754, 0.15660109, 0.18689433, 0.24464547, 0.28273218, 0.29602945, 
0.29992488, 0.24679735, 0.24521192, 0.23913767, 0.15081173, 0.08724556, 
0.05561237, 0.02530266, -0.00333345, 0.11993489, 0.20504424, 
0.17323488, 0.14541868, 0.10994579, 0.12741154, 0.17959797, 0.22553943, 
0.26564836, 0.29760832, 0.3207305, 0.28592135, 0.26551685, 0.2493214, 
0.15767906, 0.0883716, 0.05058495, 0.02207594, 0.00162532, 0.05621313, 
0.08020623, 0.05187855, 0.02643543, 0.02422505, 0.05372454, 0.09563737, 
0.14735627, 0.18199015, 0.22456299, 0.25302274, 0.21978124, 0.19092835, 
0.18255829, 0.11850551, 0.0581734, 0.03406168, 0.01868243, -0.00158173, 
0.00980756, 0.07077972, 0.05126985, 0.03126771, 0.01828044, 0.00678076, 
0.03566275, 0.05622289, 0.07218645, 0.08767578, 0.11078182, 0.08827425, 
0.08881865, 0.10037876, 0.05952601, 0.03440435, 0.01843206, 0.0091852, 
-0.00181226, 0.08737325, 0.14470842, 0.13066747, 0.12324597, 
0.12014198, 0.13435757, 0.17843025, 0.19926835, 0.20503774, 0.20485414, 
0.2124073, 0.1864257, 0.18810996, 0.20665551, 0.13839744, 0.08488387, 
0.06246853, 0.03463723, 0.00349753, 0.35245488, 0.57692156, 0.64897028, 
0.67306088, 0.68344534, 0.56106697, 0.52144197, 0.49250191, 0.47494065, 
0.4359944, 0.39638743, 0.32554099, 0.28717774, 0.2826675, 0.22703594, 
0.18186983, 0.15875118, 0.09672536, 0.04305742, 0.24294606, 0.54654222, 
0.56344638, 0.53312729, 0.47324972, 0.34482643, 0.34915085, 0.33729055, 
0.32086985, 0.29578347, 0.25030669, 0.17928298, 0.17007511, 0.18375903, 
0.15222616, 0.10934224, 0.07536797, 0.04154465, 0.02550096), 
    JulianDay = c(302L, 302L, 302L, 302L, 302L, 302L, 302L, 302L, 
    302L, 302L, 302L, 302L, 302L, 302L, 302L, 302L, 302L, 302L, 
    302L, 366L, 366L, 366L, 366L, 366L, 366L, 366L, 366L, 366L, 
    366L, 366L, 366L, 366L, 366L, 366L, 366L, 366L, 366L, 366L, 
    16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 
    16L, 16L, 16L, 16L, 16L, 16L, 16L, 64L, 64L, 64L, 64L, 64L, 
    64L, 64L, 64L, 64L, 64L, 64L, 64L, 64L, 64L, 64L, 64L, 64L, 
    64L, 64L, 80L, 80L, 80L, 80L, 80L, 80L, 80L, 80L, 80L, 80L, 
    80L, 80L, 80L, 80L, 80L, 80L, 80L, 80L, 80L, 96L, 96L, 96L, 
    96L, 96L, 96L, 96L, 96L, 96L, 96L, 96L, 96L, 96L, 96L, 96L, 
    96L, 96L, 96L, 96L, 128L, 128L, 128L, 128L, 128L, 128L, 128L, 
    128L, 128L, 128L, 128L, 128L, 128L, 128L, 128L, 128L, 128L, 
    128L, 128L, 160L, 160L, 160L, 160L, 160L, 160L, 160L, 160L, 
    160L, 160L, 160L, 160L, 160L, 160L, 160L, 160L, 160L, 160L, 
    160L, 192L, 192L, 192L, 192L, 192L, 192L, 192L, 192L, 192L, 
    192L, 192L, 192L, 192L, 192L, 192L, 192L, 192L, 192L, 192L, 
    224L, 224L, 224L, 224L, 224L, 224L, 224L, 224L, 224L, 224L, 
    224L, 224L, 224L, 224L, 224L, 224L, 224L, 224L, 224L, 9L, 
    9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 
    9L, 9L, 9L, 41L, 41L, 41L, 41L, 41L, 41L, 41L, 41L, 41L, 
    41L, 41L, 41L, 41L, 41L, 41L, 41L, 41L, 41L, 41L, 73L, 73L, 
    73L, 73L, 73L, 73L, 73L, 73L, 73L, 73L, 73L, 73L, 73L, 73L, 
    73L, 73L, 73L, 73L, 73L, 105L, 105L, 105L, 105L, 105L, 105L, 
    105L, 105L, 105L, 105L, 105L, 105L, 105L, 105L, 105L, 105L, 
    105L, 105L, 105L, 137L, 137L, 137L, 137L, 137L, 137L, 137L, 
    137L, 137L, 137L, 137L, 137L, 137L, 137L, 137L, 137L, 137L, 
    137L, 137L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 
    169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 169L, 
    169L, 201L, 201L, 201L, 201L, 201L, 201L, 201L, 201L, 201L, 
    201L, 201L, 201L, 201L, 201L, 201L, 201L, 201L, 201L, 201L, 
    217L, 217L, 217L, 217L, 217L, 217L, 217L, 217L, 217L, 217L, 
    217L, 217L, 217L, 217L, 217L, 217L, 217L, 217L, 217L, 313L, 
    313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 
    313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 361L, 361L, 
    361L, 361L, 361L, 361L, 361L, 361L, 361L, 361L, 361L, 361L, 
    361L, 361L, 361L, 361L, 361L, 361L, 361L), TimePeriod = c(1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L)), class = "data.frame", row.names = c(NA, 
-380L))
> dput(LST_Weather_dataset_ANOVA[sample(1:nrow(LST_Weather_dataset_ANOVA), 50),])
structure(list(Buffer = c(800L, 1400L, 500L, 200L, 400L, 1400L, 
100L, 1600L, 1800L, 100L, 1400L, 1500L, 900L, 700L, 800L, 600L, 
400L, 1300L, 500L, 700L, 700L, 300L, 700L, 200L, 200L, 500L, 
500L, 900L, 1000L, 1300L, 1400L, 1600L, 700L, 400L, 500L, 200L, 
400L, 1500L, 1400L, 800L, 500L, 1200L, 1500L, 1900L, 600L, 800L, 
100L, 1000L, 900L, 1100L), LST = c(0.48358206, 0.46497939, 0.41182138, 
0.07077972, 0.17788898, 0.18255829, 0.21776379, 0.03660942, 0.04154465, 
0.42361198, 0.49947692, 0.38230481, 0.28273218, 0.18857013, 0.33729055, 
0.56106697, 0.13499715, 0.28717774, 0.12014198, 0.78186792, 0.74870729, 
0.56344638, 0.18689433, 0.54404521, 0.78262774, 0.60057131, 1.01202522, 
0.20503774, 0.13097696, 0.34213091, 0.5599638, 0.08724556, 0.17843025, 
1.0286145, 0.01828044, 0.22139941, 0.67306088, 0.15248773, 0.22001284, 
0.27526446, 0.02422505, 0.50018929, 0.31822141, 0.01799424, 0.56155255, 
0.13963269, 0.27507486, 0.29578347, 0.18199015, 0.3207305), JulianDay = c(224L, 
302L, 9L, 201L, 128L, 169L, 73L, 73L, 361L, 192L, 80L, 80L, 105L, 
9L, 361L, 313L, 160L, 313L, 217L, 366L, 302L, 361L, 105L, 41L, 
80L, 80L, 16L, 217L, 160L, 366L, 96L, 105L, 217L, 366L, 201L, 
160L, 313L, 41L, 192L, 41L, 169L, 64L, 64L, 64L, 64L, 160L, 41L, 
361L, 169L, 137L), TimePeriod = c(1L, 1L, 2L, 2L, 1L, 2L, 2L, 
2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 
2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 1L, 
2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L)), row.names = c(179L, 
14L, 195L, 306L, 118L, 299L, 229L, 244L, 379L, 153L, 90L, 91L, 
256L, 197L, 369L, 348L, 137L, 355L, 328L, 26L, 7L, 364L, 254L, 
211L, 78L, 81L, 43L, 332L, 143L, 32L, 109L, 263L, 330L, 23L, 
309L, 135L, 346L, 224L, 166L, 217L, 290L, 69L, 72L, 76L, 63L, 
141L, 210L, 371L, 294L, 277L), class = "data.frame")

Upvotes: 2

Views: 411

Answers (2)

StupidWolf
StupidWolf

Reputation: 46978

You are running a repeated anova and this requires the observations to be complete for every individual, within your specified within effects. In your case, you need the ensure for every JulianDay, the observations are complete for every combination of Buffer and TimePeriod

We can tabulate it by using table() and you can see for all the JulianDays they are incomplete, for example on 9 and 16:

with(LST_Weather_dataset_ANOVA,table(Buffer,TimePeriod,JulianDay))[,,c("9","16")]
, , JulianDay = 9

      TimePeriod
Buffer 1 2
  100  0 1
  200  0 1
  300  0 1
  400  0 1
  500  0 1
  600  0 1
  700  0 1
  800  0 1
  900  0 1
  1000 0 1
  1100 0 1
  1200 0 1
  1300 0 1
  1400 0 1
  1500 0 1
  1600 0 1
  1700 0 1
  1800 0 1
  1900 0 1

, , JulianDay = 16

      TimePeriod
Buffer 1 2
  100  1 0
  200  1 0
  300  1 0
  400  1 0
  500  1 0
  600  1 0
  700  1 0
  800  1 0
  900  1 0
  1000 1 0
  1100 1 0
  1200 1 0
  1300 1 0
  1400 1 0
  1500 1 0
  1600 1 0
  1700 1 0
  1800 1 0
  1900 1 0

As you have noted, if you reconcile the dates between sites, it will work. I am not very sure how you converted the JulianDay to months, but using your data, it works if I just do

df = LST_Weather_dataset_ANOVA
df$Month = months(strptime(paste("2020",df$JulianDay),"%Y %j"))
df = subset(df,Month %in% c("May","June"))
with(df,table(Buffer,TimePeriod,Month))

, , Month = June

      TimePeriod
Buffer 1 2
  100  1 1
  200  1 1
  300  1 1
  400  1 1
  500  1 1
  600  1 1
  700  1 1
  800  1 1
  900  1 1
  1000 1 1
  1100 1 1
  1200 1 1
  1300 1 1
  1400 1 1
  1500 1 1
  1600 1 1
  1700 1 1
  1800 1 1
  1900 1 1

, , Month = May

      TimePeriod
Buffer 1 2
  100  1 1
  200  1 1
  300  1 1
  400  1 1
  500  1 1
  600  1 1
  700  1 1
  800  1 1
  900  1 1
  1000 1 1
  1100 1 1
  1200 1 1
  1300 1 1
  1400 1 1
  1500 1 1
  1600 1 1
  1700 1 1
  1800 1 1
  1900 1 1

You can see for months June and May, they are complete (no zeros), and if we run anova, it works:

res.aov <- anova_test(
  data = df, dv = LST, wid = Month,
  within = c(Buffer, TimePeriod),
  effect.size = "ges",
  detailed = TRUE,
)

ANOVA Table (type III tests)

             Effect DFn DFd   SSn   SSd       F        p p<.05   ges
1       (Intercept)   1   1 1.217 0.005 222.936 4.30e-02     * 0.933
2            Buffer  18  18 0.256 0.026   9.933 5.49e-06     * 0.746
3        TimePeriod   1   1 0.013 0.048   0.274 6.93e-01       0.130
4 Buffer:TimePeriod  18  18 0.181 0.008  21.476 1.20e-08     * 0.674

Upvotes: 1

strangecharm
strangecharm

Reputation: 168

While ironing last night I wondered if JulianDay might be the source of the error. It is derived from the dates of the Landsat scenes from dependant variable data are derived, so is different for each site.

Editing the dataframe to replace the JulianDay column with Month and amending the code to:

str(LST_Weather_dataset_ANOVA)
res.aov <- anova_test(
  data = LST_Weather_dataset_ANOVA, dv = LST, wid = Month,
  within = c(Buffer, TimePeriod),
  effect.size = "ges",
  detailed = TRUE,
)
get_anova_table(res.aov, correction = "auto")

...the ANOVA test runs successfully:

> res.aov <- anova_test(
+   data = LST_Weather_dataset_ANOVA, dv = LST, wid = Month,
+   within = c(Buffer, TimePeriod),
+   effect.size = "ges",
+   detailed = TRUE,
+ )
> get_anova_table(res.aov, correction = "auto")
ANOVA Table (type III tests)

             Effect DFn DFd    SSn   SSd      F        p p<.05   ges
1       (Intercept)   1   9 36.781 6.593 50.212 5.75e-05     * 0.735
2            Buffer  18 162  8.042 3.041 23.801 1.81e-36     * 0.378
3        TimePeriod   1   9  5.065 2.506 18.194 2.00e-03     * 0.276
4 Buffer:TimePeriod  18 162  1.713 1.117 13.800 2.71e-24     * 0.114

But I still don't fully understand why...

Hopefully this will enable someone to comment and provide an explanation?

Upvotes: 0

Related Questions