r - General linear mixed-effect (glmer) heteroscedasticity modelling -


my variables measured on randomized block subsampling design treatments 23 accesion. have 3 complete blocks , 6 samples per block. example dataframe has 4 response variables (lh, ren, ftt, dfr), accesion (treatment), bloque (block number) , plot (that variable accounting subsampling). head of data is:

  plot accesion bloque   lh  ren ftt dfr 1  221       22      1 20.6 1127  23  88 2  221       22      1 20.5 1638  20  88 3  221       22      1 24.5 1319  16  88 4  221       22      1 21.4  960  17  88 5  221       22      1 25.7 1469  18  88 6  221       22      1 25.8 1658  21  88 

so, data non-normal , heteroscedastic of 100 response variables after types of transformations (log, boxcox, power, etc). of variables show chi-squared or poisson-like distribution different variance each accesion.

histogram ftt

so far i've beeng working on running generalized linear model-effect poisson using glmer() on ftt response variable. using code:

fttglme = glmer(ftt ~ accesion + bloque + (1|plot), data = lyc,    family=poisson(link="identity")) 

the residuals non-normal according shapiro.test(). that, assume, because of heteroscedasticity observed in residuals. boxplot of residuals accesion, shows difference of variances:

boxplot of residuals accesion

the heteroscedasticity expected between plant populations, know can modelled inside glme. code should add, have investigated already, is:

vf <- varident(form=~accesion)  fttglme = glmer(ftt ~ accesion + bloque + (1|plot), data = lyc,    family=poisson(link="identity"), weights = vf) 

i want different variances account each accesion category. keep getting error:

error in model.frame.default(data = lyc, weights = varident(form = ~accesion),  :    variable lengths differ (found '(weights)') 

does know how account differences of variance between accesions inside glmer()?

any other suggestions analyze data welcome.

i've solved issue. in glmer() weights argument correspond vector of same length original. model heteroscedaticity generated variance dataframe:

var<-aggregate(lyc[,6],by=list(lyc$accesion), var) colnames(var)<-c("accesion", "var") 

that yields dataframe treatment/variance, head of is:

 accesion       var 1       22  4.369281 2       23 16.251634 3       24 13.911765 4       25 15.404412 5       26 15.895833 6       27 44.838095 

then create new dataframe merging both dataframes

lyc2<-merge(var, lyc, by="accesion") 

and saw doing wrong 1 time, needed use inverse variance, in order correct variance.

lyc2$var<-(1/lyc2$var) 

after data steps, run code:

fttglme = glmer(ftt ~ accesion + bloque + (1|plot), data = lyc2,     family=poisson(link="log"), weights = lyc2$var) 

that fixes variance issue:

corrected variance residuals boxplot


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -