[R] checkConv and as.data.frame.default problems in R
John Fox
jfox at mcmaster.ca
Wed Jul 1 22:01:31 CEST 2015
Dear Saudi Sadiq,
If you want answers to most of your questions, you'll likely have to provide your data so that people can reproduce the errors. I can, however, answer part of your last question without the data:
plot(allEffects(modelqaaf1)) fails because the data set is named q, and there is a standard R function named q(). Obviously there is a scoping issue that confuses allEffects() for a reason I don't yet understand.
Here's a simple example that reproduces this error:
---------- snip ------------
> library(lme4)
Loading required package: Matrix
Loading required package: Rcpp
> library(effects)
> fm1 <- lmer(angle ~ recipe * temperature + (1|recipe:replicate), cake)
> allEffects(fm1)
model: angle ~ recipe * temperature
recipe*temperature effect
temperature
recipe 175 185 195 205 215 225
A 29.13333 31.53333 30.80000 33.53333 38.66667 35.06667
B 26.86667 29.40000 31.73333 32.13333 34.46667 35.26667
C 27.93333 28.93333 31.73333 30.86667 34.40000 35.73333
> q <- cake
> fm1 <- lmer(angle ~ recipe * temperature + (1|recipe:replicate), data=q)
> allEffects(fm1)
Error in as.data.frame.default(data, optional = TRUE) :
cannot coerce class ""function"" to a data.frame
------------- snip -------------
Why, as you claim, you get the same error with plot(allEffects(modelqaaf)), where the data set is qaaf rather than q, is hard to understand, and perhaps you're mistaken.
I hope this helps,
John
------------------------------------------------
John Fox, Professor
McMaster University
Hamilton, Ontario, Canada
http://socserv.mcmaster.ca/jfox/
On Wed, 1 Jul 2015 15:40:48 +0100
Saudi Sadiq <ss1272 at york.ac.uk> wrote:
> Hi All,
>
> I have two datasets, vowels and qaaf, and both have 8 columns clarified as
> follows:
>
> 1. convergence: DV (whether participants succeeded to use CA (Cairene
> Arabic) or fail to do so; hence, they use MA (Minia Arabic)
>
> 2. speaker: 62 participants
>
> 3. lexical.item: as pronounced
>
> 4. style: careful and casual
>
> 5. gender: males and females
>
> 6. age: continues variable
>
> 7. residence: urbanite, migrant to town or villager
>
> 8. education: secondary or below, university or postgraduate
>
> The only difference between the two datasets is the number of items. With
> the vowels dataset, there are 1339 items; in the qaaf dataset there are
> 4064 items.
>
> The aim of the test done was to know which independent variable is more
> responsible for using CA forms. I used the lme4 package, function glmer.
>
> I ran the model:
>
> 1. modelvowels <- glmer(convergence ~ gender + age + residence +
> education + style+ (1|lexical.item) + (1|speaker), data=vowels,
> family='binomial')
>
> The message came on the screen:
>
> 2. Warning message:
>
> In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
>
> Model failed to converge with max|grad| = 0.00210845 (tol = 0.001,
> component 1)
>
> Then I ran the model after removing STYLE as follows:
>
> 3. modelvowels <- glmer(convergence ~ gender + age + residence +
> education + (1|lexical.item) + (1|speaker), data=vowels,
> family='binomial')
>
> This produced a result. Then, I ran
>
> 4. plot(allEffects(modelvowels))
>
>
>
> and this gave four charts (for the four independent variables: gender, age,
> residence and education).
>
> Then, I moved to the qaaf dataset (4064 items) and ran the same model
>
> 5. modelqaaf <- glmer(convergence ~ gender + age + residence +
> education + (1|lexical.item) + (1|speaker), data=qaaf,
> family='binomial')
>
> which gave results with the vowels dataset but there was a warning message
> this time
>
> 6. Warning message:
>
> In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
>
> Model failed to converge with max|grad| = 0.429623 (tol = 0.001, component 8)
>
> So, I removed one independent variable (residence) and ran this model again:
>
> 7. modelqaaf <- glmer(convergence ~ gender + age + education +
> (1|lexical.item) + (1|speaker), data=qaaf, family='binomial')
>
> This gave a result. I removed another independent variable (gender) after
> returning (residence) and ran the model:
>
> 8. modelqaaf1 <- glmer(convergence ~ residence + age + education +
> (1|lexical.item) + (1|speaker), data=q, family='binomial')
>
> This gave a result as well. Then, I tried to create some graphs using
>
> 9. plot(allEffects(modelqaaf)) and
>
> 10. plot(allEffects(modelqaaf1))
>
>
>
> but there was the same error for both
>
> 11. Error in as.data.frame.default(data, optional = TRUE) :
>
> cannot coerce class ""function"" to a data.frame
>
> Now, my questions:
>
> a. why 1 did not work, why 3 worked, why 5 did not work though it has
> the same four IVs of 3, why 7 and 8 worked with only three IVs, and
> why 9 and 10 did not work though they are like 4 which worked well.
>
>
>
> b. What are the packages that must be installed with, before or after
> the lme4 package?
>
>
>
> Best
>
> --
> Saudi Sadiq,
> Assistant Lecturer, English Department,
> Faculty of Al-Alsun,Minia University,
> Minia City, Egypt &
> PhD Student, Language and Linguistic Science Department,
> University of York, York, North Yorkshire, UK,
> YO10 5DD
> http://york.academia.edu/SaudiSadiq
> https://www.researchgate.net/profile/Saudi_Sadiq
> Certified Interpreter by Pearl Linguistics
>
> Forum for Arabic Linguistics conference ???? ???????
> 28-30th July 2015 - call for papers now open
> https://sites.google.com/a/york.ac.uk/fal2015/
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list