An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121109/31954126/attachment.pl>
Simulate nested data
9 messages · Andrea Goijman, Sarah Goslee, Greg Snow
Hi Andrea, Without knowing what species is, I can't run your code as is, but try this: groups<-3 speciesgroups <- as.integer(runif(groups,1,10)) # I'd use sample(1:10, groups, replace=TRUE) p<-array(NA,dim=speciesgroups) Mostly you're trying to use c() on something that's already a vector. Sarah On Fri, Nov 9, 2012 at 2:16 PM, Andrea Goijman
<agoijman at cnia.inta.gov.ar> wrote:
I know this seems like a very easy question (and maye it is) but I've been trying to simulate nested data and been unsucessful so far.. I want to simulate a varying number of species within a group; and then create an array to store the results of my for-loop. For example: groups<-3 species$groups<-as.integer(runif(groups,1,10)) #species per functional group ###create arrays to store results p<-array(NA,dim=c(species$groups)) So, far this is not working... Thanks!
-- Sarah Goslee http://www.functionaldiversity.org
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121109/232f61a2/attachment.pl>
Andrea, I simply meant that I couldn't run your code assigning a value to species$groups because the code didn't include any information about creating the R object species. Thus, I changed the name of that R object to speciesgroups and altered your code so that it runs by removing the erroneous c(). Did you try my suggestion, and did or did it not help your problem? Sarah On Fri, Nov 9, 2012 at 2:37 PM, Andrea Goijman
<agoijman at cnia.inta.gov.ar> wrote:
Hi Sarah,
Maybe I expressed myself wrong, but so far, I don't have the species; I'm
just wanting to generate simulated data. For example, creating an unbalanced
(and random) number of species per group, and then run the for-loops
for example:
Group1: 3 species
Group2: 5 species
Group3: 8 species
then, I want to create an array "p" to be able to fill the following loop
for (g in 1:groups){
for (i in 1:species[g]){
p[i] <- rnorm(1, mu.p[g], tau.p[g])
}#species
}
Andrea
On Fri, Nov 9, 2012 at 2:26 PM, Sarah Goslee <sarah.goslee at gmail.com> wrote:
Hi Andrea, Without knowing what species is, I can't run your code as is, but try this: groups<-3 speciesgroups <- as.integer(runif(groups,1,10)) # I'd use sample(1:10, groups, replace=TRUE) p<-array(NA,dim=speciesgroups) Mostly you're trying to use c() on something that's already a vector. Sarah On Fri, Nov 9, 2012 at 2:16 PM, Andrea Goijman <agoijman at cnia.inta.gov.ar> wrote:
I know this seems like a very easy question (and maye it is) but I've been trying to simulate nested data and been unsucessful so far.. I want to simulate a varying number of species within a group; and then create an array to store the results of my for-loop. For example: groups<-3 species$groups<-as.integer(runif(groups,1,10)) #species per functional group ###create arrays to store results p<-array(NA,dim=c(species$groups)) So, far this is not working... Thanks!
Sarah Goslee http://www.functionaldiversity.org
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121109/3eef6284/attachment.pl>
Andrea, I don't understand what you want. Why don't you start over, and explain what the inputs are, and what your desired outputs are. Using your previous code: # pre-specified number of groups groups <- 3 # what is species? It needs to be defined before # we can assign a value to a component of it species <- ??? # randomly assign between 1 and 10 # species per functional group for each group # specified in the groups variable species$groups<-as.integer(runif(groups,1,10)) # original code to set up p # I assumed this was supposed to create an # array of groups dimension, but apparently # that isn't true p<-array(NA,dim=c(species$groups))
# you wrote:
# > I need to have a single value of p per species, and the total number of # > elements in p would be whatever number results from # > species(group1)+species(group2)+species(group3) # which suggests to me that you do not need an array at all, but # simply a vector of the length of the number of species: p <- rep(NA, sum(species$groups)) # but that isn't clear to me because I'm not sure what you # mean by species(group1), since there is no species() # function defined On Fri, Nov 9, 2012 at 2:49 PM, Andrea Goijman
<agoijman at cnia.inta.gov.ar> wrote:
Yes, I tried your suggestion, but it didn't help. It just creates a tri-dimentional array for p... and that is not what I want p per species (within groups) to be an unbalanced array... I need to have a single value of p per species, and the total number of elements in p would be whatever number results from species(group1)+species(group2)+species(group3) On Fri, Nov 9, 2012 at 2:40 PM, Sarah Goslee <sarah.goslee at gmail.com> wrote:
Andrea, I simply meant that I couldn't run your code assigning a value to species$groups because the code didn't include any information about creating the R object species. Thus, I changed the name of that R object to speciesgroups and altered your code so that it runs by removing the erroneous c(). Did you try my suggestion, and did or did it not help your problem? Sarah On Fri, Nov 9, 2012 at 2:37 PM, Andrea Goijman <agoijman at cnia.inta.gov.ar> wrote:
Hi Sarah,
Maybe I expressed myself wrong, but so far, I don't have the species;
I'm
just wanting to generate simulated data. For example, creating an
unbalanced
(and random) number of species per group, and then run the for-loops
for example:
Group1: 3 species
Group2: 5 species
Group3: 8 species
then, I want to create an array "p" to be able to fill the following
loop
for (g in 1:groups){
for (i in 1:species[g]){
p[i] <- rnorm(1, mu.p[g], tau.p[g])
}#species
}
Andrea
On Fri, Nov 9, 2012 at 2:26 PM, Sarah Goslee <sarah.goslee at gmail.com>
wrote:
Hi Andrea, Without knowing what species is, I can't run your code as is, but try this: groups<-3 speciesgroups <- as.integer(runif(groups,1,10)) # I'd use sample(1:10, groups, replace=TRUE) p<-array(NA,dim=speciesgroups) Mostly you're trying to use c() on something that's already a vector. Sarah On Fri, Nov 9, 2012 at 2:16 PM, Andrea Goijman <agoijman at cnia.inta.gov.ar> wrote:
I know this seems like a very easy question (and maye it is) but I've been trying to simulate nested data and been unsucessful so far.. I want to simulate a varying number of species within a group; and then create an array to store the results of my for-loop. For example: groups<-3 species$groups<-as.integer(runif(groups,1,10)) #species per functional group ###create arrays to store results p<-array(NA,dim=c(species$groups)) So, far this is not working... Thanks!
-- Sarah Goslee http://www.functionaldiversity.org
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121109/72ed552b/attachment.pl>
On Fri, Nov 9, 2012 at 3:12 PM, Andrea Goijman
<agoijman at cnia.inta.gov.ar> wrote:
Thanks Sarah, Ok, I'll start over... forget the functions that I wrote before and lets start from scratch. Suppose I want to simulate data; for example n species that belong to g groups. Lets say 10 species, where 4 belong to group 1, 3 to group 2, and the rest to group 3. I want to simulate those values... How would you do?
Okay. What do you know beforehand? That you have 10 species? That you have 3 groups? That 4 species belong to group 1? You don't really explain which are the inputs and which are the outputs, and what form either will take. Say you know just the first two: ngroups <- 3 nspecies <- 10 species.groups <- sample(seq(1, ngroups, by=1), nspecies, replace=TRUE) # gives nspecies assigned randomly to ngroups # I still don't know what p is supposed to be: a vector for # storing further simulations, one per species? p <- rep(NA, nspecies) # and for neatness: mysims <- data.frame(species = seq(1, nspecies, by = 10), groups = species.groups, p = p)
On Fri, Nov 9, 2012 at 2:59 PM, Sarah Goslee <sarah.goslee at gmail.com> wrote:
Andrea, I don't understand what you want. Why don't you start over, and explain what the inputs are, and what your desired outputs are. Using your previous code: # pre-specified number of groups groups <- 3 # what is species? It needs to be defined before # we can assign a value to a component of it species <- ??? # randomly assign between 1 and 10 # species per functional group for each group # specified in the groups variable species$groups<-as.integer(runif(groups,1,10)) # original code to set up p # I assumed this was supposed to create an # array of groups dimension, but apparently # that isn't true p<-array(NA,dim=c(species$groups)) # you wrote: # > I need to have a single value of p per species, and the total number of # > elements in p would be whatever number results from # > species(group1)+species(group2)+species(group3) # which suggests to me that you do not need an array at all, but # simply a vector of the length of the number of species: p <- rep(NA, sum(species$groups)) # but that isn't clear to me because I'm not sure what you # mean by species(group1), since there is no species() # function defined On Fri, Nov 9, 2012 at 2:49 PM, Andrea Goijman <agoijman at cnia.inta.gov.ar> wrote:
Yes, I tried your suggestion, but it didn't help. It just creates a tri-dimentional array for p... and that is not what I want p per species (within groups) to be an unbalanced array... I need to have a single value of p per species, and the total number of elements in p would be whatever number results from species(group1)+species(group2)+species(group3) On Fri, Nov 9, 2012 at 2:40 PM, Sarah Goslee <sarah.goslee at gmail.com> wrote:
Andrea, I simply meant that I couldn't run your code assigning a value to species$groups because the code didn't include any information about creating the R object species. Thus, I changed the name of that R object to speciesgroups and altered your code so that it runs by removing the erroneous c(). Did you try my suggestion, and did or did it not help your problem? Sarah On Fri, Nov 9, 2012 at 2:37 PM, Andrea Goijman <agoijman at cnia.inta.gov.ar> wrote:
Hi Sarah,
Maybe I expressed myself wrong, but so far, I don't have the species;
I'm
just wanting to generate simulated data. For example, creating an
unbalanced
(and random) number of species per group, and then run the for-loops
for example:
Group1: 3 species
Group2: 5 species
Group3: 8 species
then, I want to create an array "p" to be able to fill the following
loop
for (g in 1:groups){
for (i in 1:species[g]){
p[i] <- rnorm(1, mu.p[g], tau.p[g])
}#species
}
Andrea
On Fri, Nov 9, 2012 at 2:26 PM, Sarah Goslee <sarah.goslee at gmail.com>
wrote:
Hi Andrea, Without knowing what species is, I can't run your code as is, but try this: groups<-3 speciesgroups <- as.integer(runif(groups,1,10)) # I'd use sample(1:10, groups, replace=TRUE) p<-array(NA,dim=speciesgroups) Mostly you're trying to use c() on something that's already a vector. Sarah On Fri, Nov 9, 2012 at 2:16 PM, Andrea Goijman <agoijman at cnia.inta.gov.ar> wrote:
I know this seems like a very easy question (and maye it is) but I've been trying to simulate nested data and been unsucessful so far.. I want to simulate a varying number of species within a group; and then create an array to store the results of my for-loop. For example: groups<-3 species$groups<-as.integer(runif(groups,1,10)) #species per functional group ###create arrays to store results p<-array(NA,dim=c(species$groups)) So, far this is not working... Thanks!
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121109/fae52014/attachment.pl>