Monthly Archives: March 2019

A small food survey – Results

Late last year, we conducted a small (non-representative) food survey: Which food is most (un-)popular, are there different “food types”, or do food preferences correlate with traveling activities?

The results

Now, we present our findings. Most of the 60 participants in total were between 20 – 40 years old. A strikingly high fraction of more than 15 % indicated a vegan nutrition. The ratio between female and male participants was even. On average, the participants liked around 60 % of the prompted food items. (The links below are in German only, but the graphics speak for themselves!)

Wholemeal buns, oranges and chocolate were the most popular food items. Around 17 % had never eaten algae. For some of the prompted food items, positive preference changed to aversion. Noticeably, this change of mind was mainly indicated for vegetables, with olives leading the way. Overall, vegan participants were more open to the prompted food items than others.

Finally, there were certain connections between food preference and personal attributes, like favorite colors or visited continents. On the one hand, for example, ginger was particularly popular among people who have been to Northern America. On the other hand, non-wholemeal buns were unpopular among people travelling South America. For more results and infos, please click one of the adjacent links.

See you soon and best!

dqrng v0.1.0: breaking changes

A new version of dqrng has made it onto the CRAN servers. This version brings two breaking changes, hence the “larger than usual” change in version number:

  • An integer vector instead of a single int is used for seeding (Aaron Lun in #10)
    • Single integer seeds lead to a different RNG state than before.
    • dqrng::dqset_seed() expects a Rcpp::IntegerVector instead of an int
  • Support for Mersenne-Twister has been removed, Xoroshiro128+ is now the default.

The first change is motivated by the desire to provide more than 32 bits of randomness as seed to the RNG. With this possibility in place, the previously used scrambling of the single 32 bit integer did not make much sense anymore and was therefore removed. The new method generateSeedVectors() for generating a list of random int vectors from R’s RNG can be used to generate such seed vector.

The second change is related to a statement in R’s manual: Nor should the C++11 random number library be used …. I think that relates to the implementation-defined distributions and not the generators, but in general one should follow WRE by the letter. So std::mt19937_64 has to go, and unfortunately it cannot be replaced by boost::random::mt19937_64 due to a not-merged pull request. Instead of shipping a fixed version of MT I opted for removal since:

  • MT is known to fail certain statistical tests.
  • MT is slower than the other generators.
  • MT was the only generator that does not support multiple streams of random numbers necessary for parallel operations.

The other usage of random from C++11 was the default initialization, which used std::random_device. This is now unnecessary since the initial state of the default RNG is now based on R’s RNG, using the techniques developed for generateSeedVectors().