[prev in list] [next in list] [prev in thread] [next in thread] 

List:       r-sig-mixed-models
Subject:    Re: [R-sig-ME] Latent variable regression in lme4 as in HLM
From:       Ben Bolker <bbolker () gmail ! com>
Date:       2020-05-28 1:17:06
Message-ID: 88369ea4-9768-736d-1dd1-d4cb21ca6fb2 () gmail ! com
[Download RAW message or body]


On 5/26/20 10:12 PM, Simon Harmel wrote:
> Dear James,
> 
> Thanks for your response. I should research this a bit more. I have 
> the feeling that HLM software under the /Latent Variable Regression 
> /tab might be doing something different. But I highly appreciate you 
> insightful response.
> 
> Dear Ben, lmerControl(check.nobs.vs.nRE="ignore") didn't work.


    Really?  (Whenever you say "didn't work" you should give more 
detail; as I show below, it worked on my platform.  That it didn't work 
for you could mean a lot of different things [e.g. it really didn't work 
on your computer due to differences in lme4 version or OS or R version 
or ... ; you misinterpreted the results; ... Knowing what didn't work 
gives us a big head-start in helping you resolve the problem ...)

    I think it did what it was intended to do, which is bypass the check 
of numbers of obs vs number of random effect levels.

   I get:

    Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Model failed to converge with max|grad| = 0.0028078 (tol = 0.002, 
component 1)

   However, the results look sensible.  Further exploration:

    aa <- allFit(m1)

 > aa
original model:
y ~ year + (year | stid)
data:  dat
optimizers (7): bobyqa, Nelder_Mead, nlminbwrap, nmkbw, 
optimx.L-BFGS-B,nloptwrap.NLOPT_LN_N...
differences in negative log-likelihoods:
max= 4.25e-06 ; std dev= 1.58e-06


summary(aa)

   Differences among parameter estimates, log-likelihoods, etc. are all 
very small, so the convergence warning is a false positive.

   cheers

     Ben Bolker


> 
> library(lme4)
> dat <- read.csv('https://raw.githubusercontent.com/hkil/m/master/z.csv')
> m1 <- lmer(y~ year + (year|stid), data = dat,
> control=lmerControl(check.nobs.vs.nRE="ignore"))
> 
> On Tue, May 26, 2020 at 7:38 PM Ben Bolker <bbolker@gmail.com 
> <mailto:bbolker@gmail.com>> wrote:
> 
> For what it's worth, *if* you're sufficiently sure that your model
> is identifiable, you can override the checks that test the relative
> numbers of observations/levels/etc.; see the "check.*" options in
> ?lme4::lmerControl, and set the relevant ones to "ignore"
> 
> On Tue, May 26, 2020 at 7:12 PM Uanhoro, James
> <uanhoro.1@buckeyemail.osu.edu
> <mailto:uanhoro.1@buckeyemail.osu.edu>> wrote:
> > 
> > Hello Simon,
> > 
> > I'm not sure what HLM does. However: if your question is about using
> > the random intercepts (individuals' starting points) to predict the
> > random slopes (their linear growth rate), then the model you
> need is:
> > 
> > summary(m2 <- lmer(y ~ year + (1 + year | stid), dat))
> > 
> > whcih returns the random intercept and a random slope on time.
> > 
> > The correlation between both random effects is the regression
> > coefficient from regressing the slope on the intercept (or
> vice-versa)
> > when both variables are standardized.
> > 
> > More generally, you can always obtain regression coefficients from a
> > correlation/covariance matrix of random effects. With a two-by-two
> > correlation matrix, the single correlation is the coefficient
> (in both
> > directions). In a larger matrix of random effects, you can use the
> > solve() function in R to obtain coefficients from the matrix.
> See here:
> > 
> https://stackoverflow.com/questions/40762865/how-do-i-get-regression-
> > coefficients-from-a-variance-covariance-matrix-in-r
> > 
> > I tried your exact example, and m2 above will not fit because
> some of
> > your participants have under 2 time points while the maximum
> number of
> > time points is 3, resulting in a situation where the software is
> > attempting to compute more random effect values than there are
> rows in
> > the data - the software complains. Also, it is a good idea to
> rescale
> > that y variable prior to data analysis. I was able to get the
> model to
> > run by limiting the data to cases with more than 1 recorded time
> point:
> > 
> > summary(m3 <- lmer(y.s ~ year + (1 + year | stid), data = t.dat,
> subset
> > = n > 1))
> > 
> > I arrived at a correlation/coefficient of -0.06.
> > 
> > Hope this helps, -James.
> > 
> > Sent from Outlook Mobile
> > 
> > From: R-sig-mixed-models
> <r-sig-mixed-models-bounces@r-project.org
> <mailto:r-sig-mixed-models-bounces@r-project.org>> on
> > behalf of Simon Harmel <sim.harmel@gmail.com
> <mailto:sim.harmel@gmail.com>>
> > Sent: Tuesday, May 26, 2020, 18:27
> > To: r-sig-mixed-models
> > Subject: [R-sig-ME] Latent variable regression in lme4 as in HLM
> > 
> > Dear All,
> > 
> > I know that in the HLM software, it is possible to use "intercept"
> > (e.g.,
> > initial place of students at year "0") as the *predictor *of "slope"
> > (e.g.,
> > fixed rate of change in years) under the *Latent Variable Regression
> > *tab.
> > 
> > I was wondering if this is also possible in "lme4" or any other
> > mixed-modeling packages in R?  *Thanks, Simon*
> > 
> > *## Here is an example dataset for demonstration:*
> > library(lme4)
> > dat <- read.csv('
> > 
> https://urldefense.com/v3/__https://raw.githubusercontent.com/hkil/m/master/z.csv__; \
> !!KGKeukY!gjIgidLro6PaJJUHZOY1gk9IW8FfrzGWzo9IEaCRgFwkorvpE1tkLXqn3ujcsmy6OvxsB2xlUIM$
> 
> > ')
> > m1 <- lmer(y ~ year + (1|stid), data = dat)      #### 'stid' =
> student
> > id
> > 
> > [[alternative HTML version deleted]]
> > 
> > _______________________________________________
> > R-sig-mixed-models@r-project.org
> <mailto:R-sig-mixed-models@r-project.org> mailing list
> > 
> > 
> https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models \
> __;!!KGKeukY!gjIgidLro6PaJJUHZOY1gk9IW8FfrzGWzo9IEaCRgFwkorvpE1tkLXqn3ujcsmy6Ovxs517Hn00$
> 
> > 
> > _______________________________________________
> > R-sig-mixed-models@r-project.org
> <mailto:R-sig-mixed-models@r-project.org> mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> 

	[[alternative HTML version deleted]]

_______________________________________________
R-sig-mixed-models@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic