Dear varin sacha On Sun, May 19, 2019 at 5:14 PM varin sacha via R-help <r-help@r-project.org> wrote: > > Dear Boris, > > Great !!!! But what about Mark in your R code ? Don't we have to precise in > the R code that mark ranges between 1 to 6 (1 ; 1.5 ; 2 ; 2.5 ; 3 ; 3.5 ; 4 ; > 4.5 ; 5 ; 5.5 ; 6) ?
I think Boris is just setting up a framework for you. It is up to you to decide the actual values. :) You maybe want to create a MyData object, with the method Boris has shown, but filling the Mark field with random numbers. Cheers, Lei > > By the way, to fit a linear mixed model, I use lme4 package and then the lmer > function works with the variables like in this example here below : > > library(lme4) > mm=lmer(Mark ~Gender + (1 | School / Class), data=Dataset) > > With your R code, how can I write the lmer function to make it work ? > > Best, > S. > > > > > > > > Le dimanche 19 mai 2019 à 15:26:39 UTC+2, Boris Steipe > <boris.ste...@utoronto.ca> a écrit : > > > > > > Fair enough - there are additional assumptions needed, which I make as > follows: > - each class has the same size > - each teacher teaches the same number of classes > - the number of boys and girls is random within a class > - there are 60% girls (just for illustration that it does not have to be > equal) > > > To make the dependencies explicit, I define them so, and in a way that they > can't be inconsistent. > > nS <- 10 # Schools > nTpS <- 5 # Teachers per School > nCpT <- 2 # Classes per teacher > nPpC <- 20 # Pupils per class > nS * nTpS * nCpT * nPpC == 2000 # Validate > > > mySim <- data.frame(School = paste0("s", rep(1:nS, each = nTpS*nCpT*nPpC)), > Teacher = paste0("t", rep(1:(nTpS*nS), each = nCpT*nPpC)), > Class = paste0("c", rep(1:(nCpT*nTpS*nS), each = nPpC)), > Gender = sample(c("boy", "girl"), > (nS*nTpS*nCpT*nPpC), > prob = c(0.4, 0.6), > replace = TRUE), > Mark = numeric(nS*nTpS*nCpT*nPpC), > stringsAsFactors = FALSE) > > > Then you fill mySim$Mark with values from your linear mixed model ... > > mySim$Mark[i] <- simMarks(mySim[i]) # ... or something equivalent. > > > All good? > > Cheers, > Boris > > > > > On 2019-05-19, at 08:05, varin sacha <varinsa...@yahoo.fr> wrote: > > > > Many thanks to all of you for your responses. > > > > So, I will try to be clearer with a larger example. Te end of my mail is > > the more important to understand what I am trying to do. I am trying to > > simulate data to fit a linear mixed model (nested not crossed). More > > precisely, I would love to get at the end of the process, a table (.txt) > > with columns and rows. Column 1 and Rows will be the 2000 pupils and the > > columns the different variables : Column 2 = classes ; Column 3 = teachers, > > Column 4 = schools ; Column 5 = gender (boy or girl) ; Column 6 = mark in > > Frecnh > > > > Pupils are nested in classes, classes are nested in schools. The teacher > > are part of the process. > > > > I want to simulate a dataset with n=2000 pupils, 100 classes, 50 teachers > > and 10 schools. > > - Pupils n°1 to pupils n°2000 (p1, p2, p3, p4, ..., p2000) > > - Classes n°1 to classes n°100 (c1, c2, c3, c4,..., c100) > > - Teachers n°1 to teacher n°50 ( t1, t2, t3, t4, ..., t50) > > - Schools n°1 to chool n°10 (s1, s2, s3, s4, ..., s10) > > > > The nested structure is as followed : > > > > -- School 1 with teacher 1 to teacher 5 (t1, t2, t3, t4 and t5) with > > classes 1 to classes 10 (c1, c2, c3, c4, c5, c6, c7, c8,c9,c10), pupils n°1 > > to pupils n°200 (p1, p2, p3, p4,..., p200). > > > > -- School 2 with teacher 6 to teacher 10, with classes 11 to classes 20, > > pupils n°201 to pupils n°400 > > > > -- and so on > > > > The table (.txt) I would love to get at the end is the following : > > > > Class Teacher School gender Mark > > 1 c1 t1 s1 boy 5 > > 2 c1 t1 s1 boy 5.5 > > 3 c1 t1 s1 girl 4.5 > > 4 c1 t1 s1 girl 6 > > 5 c1 t1 s1 boy 3.5 > > 6 ... .... .... ..... ..... > > > > The first 20 rows with c1, with t1, with s1, gender (randomly slected) and > > mark (andomly selected) from 1 to 6 > > The rows 21 to 40 with c2 with t1 with s1 > > The rows 41 to 60 with c3 with t2 with s1 > > The rows 61 to 80 with c4 with t2 with s1 > > The rows 81 to 100 with c5 with t3 with s1 > > The rows 101 to 120 with c6 with t3 with s1 > > The rows 121 to 140 with c7 with t4 with s1 > > The rows 141 to 160 with c8 with t4 with s1 > > The rows 161 to 180 with c9 with t5 with s1 > > The rows 181 to 200 with c10 with t5 with s1 > > > > The rows 201 to 220 with c11 with t6 with s2 > > The rows 221 to 240 with c12 with t6 with s2 > > > > And so on... > > > > Is it possible to do that ? Or am I dreaming ? > > > > > > Le dimanche 19 mai 2019 à 10:45:43 UTC+2, Linus Chen > > <linus.l.c...@gmail.com> a écrit : > > > > > > > > > > > > Dear varin sacha, > > > > I think it will help us help you, if you give a clearer description of > > what exactly you want. > > > > I assume the situation is that you know what a data structure you > > want, but do not know > > how to conveniently create such structure. > > And that is where others can help you. > > So, please, describe the wanted data structure more thoroughly, > > ideally with example. > > > > Thanks, > > Lei > > > > On Sat, May 18, 2019 at 10:04 PM varin sacha via R-help > > <r-help@r-project.org> wrote: > >> > >> Dear Boris, > >> > >> Yes, top-down, no problem. Many thanks, but in your code did you not > >> forget "teacher" ? As a reminder teacher has to be nested with classes. I > >> mean the 50 pupils belonging to C1 must be with (teacher 1) T1, the 50 > >> pupils belonging to C2 with T2, the 50 pupils belonging to C3 with T3 and > >> so on. > >> > >> Best, > >> > >> > >> Le samedi 18 mai 2019 à 16:52:48 UTC+2, Boris Steipe > >> <boris.ste...@utoronto.ca> a écrit : > >> > >> > >> > >> > >> > >> Can you build your data top-down? > >> > >> > >> > >> schools <- paste("s", 1:6, sep="") > >> > >> classes <- character() > >> for (school in schools) { > >> classes <- c(classes, paste(school, paste("c", 1:5, sep=""), sep = ".")) > >> } > >> > >> pupils <- character() > >> for (class in classes) { > >> pupils <- c(pupils, paste(class, paste("p", 1:10, sep=""), sep = ".")) > >> } > >> > >> > >> > >> B. > >> > >> > >> > >>> On 2019-05-18, at 09:57, varin sacha via R-help <r-help@r-project.org> > >>> wrote: > >>> > >>> Dear R-Experts, > >>> > >>> In a data simulation, I would like a balanced distribution with a nested > >>> structure for classroom and teacher (not for school). I mean 50 pupils > >>> belonging to C1, 50 other pupils belonging to C2, 50 other pupils > >>> belonging to C3 and so on. Then I want the 50 pupils belonging to C1 with > >>> T1, the 50 pupils belonging to C2 with T2, the 50 pupils belonging to C3 > >>> with T3 and so on. The school don’t have to be nested, I just want a > >>> balanced distribution, I mean 60 pupils in S1, 60 other pupils in S2 and > >>> so on. > >>> Here below the reproducible example. > >>> Many thanks for your help. > >>> > >>> ############## > >>> set.seed(123) > >>> # Génération aléatoire des colonnes > >>> pupils<-1:300 > >>> classroom<-sample(c("C1","C2","C3","C4","C5","C6"),300,replace=T) > >>> teacher<-sample(c("T1","T2","T3","T4","T5","T6"),300,replace=T) > >>> school<-sample(c("S1","S2","S3","S4","S5"),300,replace=T) > >> > >>> ############## > >>> > >>> ______________________________________________ > >>> R-help@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. > > > >> > >> ______________________________________________ > >> R-help@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. > > ______________________________________________ > R-help@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. ______________________________________________ R-help@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.