I only installed the binary lme4 for the R2.12.0. After I remove the lme4, I change to the R BLAS and reinstall the binary lme4. The results are always true now.
Hope this information is useful. Huang On Thu, Oct 21, 2010 at 11:11 PM, Marc Schwartz <marc_schwa...@me.com>wrote: > > On Oct 21, 2010, at 8:47 AM, Federico Calboli wrote: > > > Mark, > >> > >> To the extent that it may be helpful here and I can do more if need be, > I built 32 bit R 2.12.0 patched on Snow Leopard (10.6.4), using the R BLAS > rather than Apple's veclib. This is on an early 2009 17" MBP with a 2.93 Ghz > Core 2 Duo (MacBookPro5,2) and 4Gb of RAM. > >> > >> Based upon Doug's comment in this thread that the issue may be related > to the use of Apple's veclib BLAS, as opposed to R's reference BLAS, I ran > some tests. > >> > >> My config includes: > >> > >> --without-blas --without-lapack > >> > >> just to be sure that the above is the correct invocation, based upon > what I found online. > >> > >> Using this build, with all CRAN packages freshly installed using this > build, I ran the example used here with lme4 0.999375-35. I get: > >> > >> library(lme4) > >> y <- (1:20)*pi; x <- (1:20)^2;group <- gl(2,10) > >> M2. <- lmer (y ~ 1 + x + (1 + x | group)) > >> M2 <- lmer (y ~ x + ( x | group)) > >> > >>> identical(fixef(M2), fixef(M2.)) > >> [1] TRUE > >> > >> > >> > >> I then created a function so that I could use replicate() to run this > test a "larger" number of times: > >> > >> testlme4 <- function() > >> { > >> y <- (1:20)*pi; x <- (1:20)^2;group <- gl(2,10) > >> M2. <- lmer (y ~ 1 + x + (1 + x | group)) > >> M2 <- lmer (y ~ x + ( x | group)) > >> identical(fixef(M2), fixef(M2.)) > >> } > >> > >> > >> RES <- replicate(1000, testlme4()) > >> > >>> all(RES) > >> [1] TRUE > >> > >>> table(RES) > >> RES > >> TRUE > >> 1000 > >> > >> Does the example need to be run a "very large" number of times to be > sure that it does not fail, or is the above a reasonable indication that the > use of R's BLAS is a more appropriate default option for R on OSX? If I am > not mistaken (and somebody correct me if wrong), R's BLAS is the default on > Windows and Linux (from my recollections on Fedora). Why should OSX be > different in that regard? > > > > Thanks for the very informative post. I added R-Mac in my reply to see if > someone can come up with a response to your query. It would also be > interesting to know if it were possible to switch the OSX R binary to use > the R BLAS library. > >> > >> Also, as an aside to Federico, I use 32 bit R on OSX largely because I > have to interact with an Oracle server via RODBC. The only ODBC drivers > available for Oracle on OSX are 32 bit and they are not compatible with 64 > bit R. It would be rather cumbersome when running reports (via Sweave) to > first extract the data in 32 bit R and then switch to 64 bit R to run the > reports. I can run it all in a single step using 32 bit R. I also do not > have a need for the larger memory address space afforded by 64 bit R. > > > > I'm very primitive in any integration between R and anything else, so > much so that I abandoned Emacs (well integrated with R) for Vim (not as well > integrated). On the other hand I do need the greater memory address space of > R64. I understand my needs and habits are not universally shared, but, if > the *only* reason for using R32 vs R64 is the 20% speed difference, I'd use > R64 for running lme4. > > > > OK, so here is some more data. I wondered if my build using R's BLAS may > have possibly been a Type II error. So I re-built 32 bit R (same SVN > checkout code) using: > > --with-blas='-framework vecLib' --with-lapack > > I then completely removed my old R build (using R's BLAS) and the installed > CRAN packages. I re-installed R using the above configuration and then > cleanly re-installed the required CRAN packages. > > Here are the results: > > y <- (1:20)*pi; x <- (1:20)^2;group <- gl(2,10) > M2. <- lmer (y ~ 1 + x + (1 + x | group)) > M2 <- lmer (y ~ x + ( x | group)) > > > identical(fixef(M2), fixef(M2.)) > [1] FALSE > > testlme4 <- function() > { > y <- (1:20)*pi; x <- (1:20)^2;group <- gl(2,10) > M2. <- lmer (y ~ 1 + x + (1 + x | group)) > M2 <- lmer (y ~ x + ( x | group)) > identical(fixef(M2), fixef(M2.)) > } > > RES <- replicate(1000, testlme4()) > > > all(RES) > [1] FALSE > > > table(RES) > RES > FALSE TRUE > 496 504 > > So the test in question seems to fail with P(Failure) ~ 0.5 using Apple's > veclib BLAS. > > I should also note that all of my testing is from the CLI using the OSX > terminal. I do not use R.app. > > In response to Huang's reply, regarding his use of the shared lib approach, > I wonder if there is some other interaction going on, either in the BLAS > libs, or perhaps in the installed version of lme4, when one BLAS versus the > other is in use at the time of lme4 installation, since it is installed from > source on OSX. Note that I used a fully clean build of R and the required > CRAN packages for each set of tests. > > If there is some other testing that I can do, let me know. But the above > results with a clean build of R and lme4 each time, would seem to further > reinforce a reconsideration of the use of Apple's veclib BLAS as the default > for CRAN binary builds of R on OSX. > > Regards, > > Marc > > _______________________________________________ > r-sig-mixed-mod...@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models > [[alternative HTML version deleted]] _______________________________________________ R-SIG-Mac mailing list R-SIG-Mac@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-mac