Alexa Fredston
Alexa Fredston

Reputation: 727

resolving singular fit error of mixed model in R using lme4

I'm working with a dataset that I have already analyzed using GLMs. I want to use a LMEM, for which I have a random effect (species name) with seven different values (levels). I think the model is coded correctly but I am getting a boundary (singular) fit error. Is there anything I can do to fix it, or do I just not have enough data?

Here's the data and the model:

years <- c(1986, 1986, 1986, 1986, 1986, 1986, 1986, 1989, 1989, 1989, 
1989, 1989, 1989, 1989, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 
1995, 1995, 1995, 1995, 1995, 1995, 1995, 1998, 1998, 1998, 1998, 
1998, 1998, 1998, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2003, 
2003, 2003, 2003, 2003, 2003, 2003, 2004, 2004, 2004, 2004, 2004, 
2004, 2004, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2006, 2006, 
2006, 2006, 2006, 2006, 2006, 2007, 2007, 2007, 2007, 2007, 2007, 
2007, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2009, 2009, 2009, 
2009, 2009, 2009, 2009, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 
2011, 2011, 2011, 2011, 2011, 2011, 2011, 2012, 2012, 2012, 2012, 
2012, 2012, 2012, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2014, 
2014, 2014, 2014, 2014, 2014, 2014, 2015, 2015, 2015, 2015, 2015, 
2015, 2015, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2017, 2017, 
2017, 2017, 2017, 2017, 2017, 2018, 2018, 2018, 2018, 2018, 2018, 
2018)

names <- c("Sebastes_saxicola", "Doryteuthis_opalescens", "Sebastes_diploproa", 
"Sebastes_goodei", "Porichthys_notatus", "Zalembius_rosaceus", 
"Sebastes_jordani", "Sebastes_saxicola", "Doryteuthis_opalescens", 
"Sebastes_diploproa", "Sebastes_goodei", "Porichthys_notatus", 
"Zalembius_rosaceus", "Sebastes_jordani", "Sebastes_saxicola", 
"Doryteuthis_opalescens", "Sebastes_diploproa", "Sebastes_goodei", 
"Porichthys_notatus", "Zalembius_rosaceus", "Sebastes_jordani", 
"Sebastes_saxicola", "Doryteuthis_opalescens", "Sebastes_diploproa", 
"Sebastes_goodei", "Porichthys_notatus", "Zalembius_rosaceus", 
"Sebastes_jordani", "Sebastes_saxicola", "Doryteuthis_opalescens", 
"Sebastes_diploproa", "Sebastes_goodei", "Porichthys_notatus", 
"Zalembius_rosaceus", "Sebastes_jordani", "Sebastes_saxicola", 
"Doryteuthis_opalescens", "Sebastes_diploproa", "Sebastes_goodei", 
"Porichthys_notatus", "Zalembius_rosaceus", "Sebastes_jordani", 
"Sebastes_saxicola", "Doryteuthis_opalescens", "Sebastes_diploproa", 
"Sebastes_goodei", "Porichthys_notatus", "Zalembius_rosaceus", 
"Sebastes_jordani", "Sebastes_saxicola", "Doryteuthis_opalescens", 
"Sebastes_diploproa", "Sebastes_goodei", "Porichthys_notatus", 
"Zalembius_rosaceus", "Sebastes_jordani", "Sebastes_saxicola", 
"Doryteuthis_opalescens", "Sebastes_diploproa", "Sebastes_goodei", 
"Porichthys_notatus", "Zalembius_rosaceus", "Sebastes_jordani", 
"Sebastes_saxicola", "Doryteuthis_opalescens", "Sebastes_diploproa", 
"Sebastes_goodei", "Porichthys_notatus", "Zalembius_rosaceus", 
"Sebastes_jordani", "Sebastes_saxicola", "Doryteuthis_opalescens", 
"Sebastes_diploproa", "Sebastes_goodei", "Porichthys_notatus", 
"Zalembius_rosaceus", "Sebastes_jordani", "Sebastes_saxicola", 
"Doryteuthis_opalescens", "Sebastes_diploproa", "Sebastes_goodei", 
"Porichthys_notatus", "Zalembius_rosaceus", "Sebastes_jordani", 
"Sebastes_saxicola", "Doryteuthis_opalescens", "Sebastes_diploproa", 
"Sebastes_goodei", "Porichthys_notatus", "Zalembius_rosaceus", 
"Sebastes_jordani", "Sebastes_saxicola", "Doryteuthis_opalescens", 
"Sebastes_diploproa", "Sebastes_goodei", "Porichthys_notatus", 
"Zalembius_rosaceus", "Sebastes_jordani", "Sebastes_saxicola", 
"Doryteuthis_opalescens", "Sebastes_diploproa", "Sebastes_goodei", 
"Porichthys_notatus", "Zalembius_rosaceus", "Sebastes_jordani", 
"Sebastes_saxicola", "Doryteuthis_opalescens", "Sebastes_diploproa", 
"Sebastes_goodei", "Porichthys_notatus", "Zalembius_rosaceus", 
"Sebastes_jordani", "Sebastes_saxicola", "Doryteuthis_opalescens", 
"Sebastes_diploproa", "Sebastes_goodei", "Porichthys_notatus", 
"Zalembius_rosaceus", "Sebastes_jordani", "Sebastes_saxicola", 
"Doryteuthis_opalescens", "Sebastes_diploproa", "Sebastes_goodei", 
"Porichthys_notatus", "Zalembius_rosaceus", "Sebastes_jordani", 
"Sebastes_saxicola", "Doryteuthis_opalescens", "Sebastes_diploproa", 
"Sebastes_goodei", "Porichthys_notatus", "Zalembius_rosaceus", 
"Sebastes_jordani", "Sebastes_saxicola", "Doryteuthis_opalescens", 
"Sebastes_diploproa", "Sebastes_goodei", "Porichthys_notatus", 
"Zalembius_rosaceus", "Sebastes_jordani", "Sebastes_saxicola", 
"Doryteuthis_opalescens", "Sebastes_diploproa", "Sebastes_goodei", 
"Porichthys_notatus", "Zalembius_rosaceus", "Sebastes_jordani", 
"Sebastes_saxicola", "Doryteuthis_opalescens", "Sebastes_diploproa", 
"Sebastes_goodei", "Porichthys_notatus", "Zalembius_rosaceus", 
"Sebastes_jordani")

response <- c(-39.8709138425359, 407.466044766274, -26.0915713958357, 0, 
-33.6719711059685, 0, -75.6863067646427, -21.9157783599194, -151.998948311348, 
-39.8709138425359, -10.06179432113, -35.4184614200923, -14.1646625572561, 
-66.2145076813456, -55.3994283434849, 235.06475172214, 0, 0, 
35.4184614200923, -13.7332842084411, -292.805294792311, 77.3152067034043, 
-161.67128821082, -21.9157783599194, 0, -21.2537988628362, 0, 
-57.5347191454757, -85.2542653789872, 105.299273169127, 16.8957295404421, 
10.06179432113, 151.767857499762, 0, -176.052245616132, -27.9448569025965, 
-205.222077414222, 31.8249932238048, -22.7948535194005, -130.514058636926, 
-19.7517644973778, 0, -26.7387649152365, -545.1351812725, 13.0659694382084, 
12.7330591982704, 0, 0, 57.6747747172749, 0, 233.586964761608, 
-13.0659694382084, 10.06179432113, 33.6719711059685, 0, -29.609694096876, 
-11.785457443975, 292.805294792311, 13.0659694382084, 13.1774796846939, 
0, 0, -28.0650806203989, 59.2610492829533, -429.550172022961, 
6.85559176507104, 80.2310721874446, 0, 0, 0, 87.4422465383645, 
-179.66580426546, -6.85559176507104, -45.9356270477929, -33.6719711059685, 
0, -33.6719711059685, 5.02004881947732, -19.7517644973778, 0, 
-47.4729248243457, 0, 0, -21.2537988628362, 39.8709138425359, 
0, 0, 47.4729248243457, 0, 0, 0, 6.85559176507104, 199.417568762838, 
0, 60.8493916525051, 33.6719711059685, -50.4063040829841, 54.9257699688047, 
0, 136.74487723065, 0, 211.433641470909, 0, 50.4063040829841, 
57.6747747172749, 0, 153.695910264002, 0, -118.587122859412, 
-33.6719711059685, -50.4063040829841, 69.6620540066187, 0, 0, 
0, 69.2503531572081, 0, 50.4063040829841, 460.539534398771, 0, 
151.674999601701, -13.0659694382084, -29.0720714480331, 0, 19.7517644973778, 
-20.6784687684094, 0, 106.100110890285, -11.5403645477877, 129.459481981691, 
161.008799829862, 0, 0, -6.85559176507104, -350.621629103483, 
-15.2645798565397, -204.172684985661, -30.4947411929359, 0, 44.4063661800535, 
6.85559176507104, 211.433641470909, -28.5654519133886, 103.785274452003, 
102.449432090998, 13.7332842084411, 112.059209783315, 0, 61.3278964692331, 
0, 16.3182111045651, -102.449432090998, 0, 68.1437140131759)

predictor <- c(-354.759533536541, -350.844199644346, -354.909624391903, -332.463093102947, 
-354.578556990442, -348.128295505361, -352.380852547713, -284.956183762223, 
-276.278296156058, -285.583378598068, -246.632667111976, -284.369982324025, 
-281.50293550981, -279.287099693954, 357.026006231806, 361.676164668339, 
355.37545887245, 337.638508847381, 358.163123655813, 312.345335892108, 
361.784912067963, 187.518093014004, 58.8031971422286, 203.817561806077, 
-121.166159270693, 174.367399906722, 354.60256303185, 93.6842990855323, 
482.344032540366, 530.926281271939, 477.037402165887, 586.041572597991, 
486.84011371456, 473.64047689885, 517.134094932764, -781.827414991825, 
-693.604827421178, -793.77449102808, -548.797929732289, -772.400956426057, 
-952.59954421626, -717.060747190405, 84.1367164745104, 74.7959474790284, 
85.1883129489936, 54.8977134653799, 83.2687089625126, 93.0478925699144, 
77.5324699084499, 199.66604803451, 122.035995593604, 208.332075341629, 
-25.6356793146804, 192.473094627032, 264.177296139558, 144.663593171232, 
86.5535304707839, 129.854847960425, 82.4416244358297, 222.590682638225, 
90.1292081937877, 81.0212058045088, 116.415624498391, -201.796155827009, 
-162.015921438247, -207.337885377721, -106.113738901105, -197.440069170519, 
-280.219718566966, -172.324777682873, -329.96058693694, -340.42625208768, 
-327.191123872975, -321.131859459463, -331.917003362771, -258.070974146438, 
-339.350899733633, 101.381043154278, 74.5061140852908, 104.471322665692, 
17.3227886896084, 98.8484538033733, 132.375734298744, 82.3307661426661, 
-115.979764494729, -109.317010210641, -116.742890715473, -94.6774706047613, 
-115.353943363071, -123.438781895225, -111.263104791549, 427.610641780512, 
390.961287299743, 430.530777973955, 301.976501093313, 424.921699211867, 
406.084930648777, 402.972702246893, -289.888476299943, -225.23973581933, 
-297.71449630178, -121.481919455317, -283.514417063728, -363.56260374216, 
-243.269552209364, 38.2358900411646, 42.6049315763746, 37.3700873452678, 
38.4348202239919, 38.880090642233, 22.7718483607262, 41.8445751226488, 
148.214237853802, 130.575205944386, 149.283884563868, 70.2958522577696, 
147.144578947908, 132.645118780561, 136.900863329067, 17.4821742483571, 
1.98763559309828, 21.0211036377086, 13.5666287066495, 14.9306825351089, 
98.9057697600572, 4.27913398710575, 376.836130396981, 335.886955719777, 
383.530200966922, 300.868788921385, 371.746278421832, 498.831988504765, 
345.305983617788, 11.8787639881436, 24.2169762020922, 9.81236914600981, 
35.5941919990055, 13.4381699677704, -29.2757031165856, 21.4070153110549, 
-229.103849808719, -223.932153734025, -229.715460489683, -207.219597605736, 
-228.618305637208, -241.692343331574, -225.506335745496, -117.870661429788, 
-87.4139337795068, -122.033743598906, -45.9980167000583, -114.577381619082, 
-171.00564521108, -95.3527873096314)

testdf <- data.frame(years, names, response, predictor)

testlme <- lmer(response ~ predictor + (1|names), data=testdf) 

Upvotes: 1

Views: 992

Answers (1)

Eric Pedersen
Eric Pedersen

Reputation: 131

The singular fit warning is arising here because lme4 is estimating that there is zero variance between group-level means, and thus the covariance matrix is at the boundary of its parameter space.

Is it possible that the response variable has been centered already? Or it's a variable like annual productivity that you would naturally expect to be centered around zero if the population is at equilibrium?

The other issue you may be running in to is that their is substantial variation in standard deviations between species, so the estimated residual variance is so large that it becomes difficult to pick out differences in means between species, so lme4 shrinks those between-species differences to zero. Looking at the data, the species-level standard deviation is much bigger than the mean for all species:

library(dplyr)
testdf %>%
  group_by(names)%>%
  summarize(mean = mean(response),
            sd   = sd(response))

# A tibble: 7 x 3
names                    mean    sd
<fct>                   <dbl>   <dbl>
1 Doryteuthis_opalescens 11.4   245. 
2 Porichthys_notatus     4.40   67.7
3 Sebastes_diploproa     -4.30  16.3
4 Sebastes_goodei        13.0   84.0
5 Sebastes_jordani       5.61   134. 
6 Sebastes_saxicola      0.312  39.6

I think there's just very little evidence of among-species differences in the average response.

Upvotes: 2

Related Questions