Silvia Lomascolo
2009-May-05 15:52 UTC
[R] Sampling a matrix with different probability distributions
I need to sample a matrix according to different distributions, instead of
just randomly. Here is some code that will hopefully clarify what I need:
I have a matrix M of 1287 interactions between species in rows and species
in columns, according to their abundance:
pla<- c(10, 9, 6, 5, 3) #abundance of pla species
pol<- c(14, 10, 9, 4, 2) #abundance of pol species
M<-pla%*%t(pol) #matrix of 1287 interactions according to pla and pol
abundance
M
[,1] [,2] [,3] [,4] [,5]
[1,] 140 100 90 40 20
[2,] 126 90 81 36 18
[3,] 84 60 54 24 12
[4,] 70 50 45 20 10
[5,] 42 30 27 12 6
Thanks to help from people in this forum, I was able to randomly sample 800
interactions from matrix M and obtain a subset of the interactions in a
smaller matrix called reduced.M:
M.index <- 1:length(M)
reduced.M <- matrix(table( factor( sample(rep(M.index,M),800),
M.index)),nr=5)
reduced.M
[,1] [,2] [,3] [,4] [,5]
[1,] 77 62 56 25 15
[2,] 83 53 51 21 11
[3,] 57 34 28 18 10
[4,] 51 31 21 14 4
[5,] 27 21 19 6 5
Now I need to sample again, not randomly, but according to different
distributions. For example, I need to sample according to the abundance of
species pla, (pla vector written above). The result should be that I sample
my first row more intensely than my second row, and the last row should be
the least intensely sampled, in proportion to my row species abundance. In
the same token, I want to sample with a uniform distribution as well. How
do I do this?
Thanks, as usual! Silvia.
--
View this message in context:
http://www.nabble.com/Sampling-a-matrix-with-different-probability-distributions-tp23390324p23390324.html
Sent from the R help mailing list archive at Nabble.com.
Greg Snow
2009-May-05 16:57 UTC
[R] Sampling a matrix with different probability distributions
The sample function has a prob argument that can be used to sample with unequal probabilities. It sounds like you can just pass in the species abundance vector to prob and it will do what you want. -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.snow at imail.org 801.408.8111> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- > project.org] On Behalf Of Silvia Lomascolo > Sent: Tuesday, May 05, 2009 9:52 AM > To: r-help at r-project.org > Subject: [R] Sampling a matrix with different probability distributions > > > I need to sample a matrix according to different distributions, instead > of > just randomly. Here is some code that will hopefully clarify what I > need: > > I have a matrix M of 1287 interactions between species in rows and > species > in columns, according to their abundance: > > pla<- c(10, 9, 6, 5, 3) #abundance of pla species > pol<- c(14, 10, 9, 4, 2) #abundance of pol species > M<-pla%*%t(pol) #matrix of 1287 interactions according to pla and pol > abundance > M > [,1] [,2] [,3] [,4] [,5] > [1,] 140 100 90 40 20 > [2,] 126 90 81 36 18 > [3,] 84 60 54 24 12 > [4,] 70 50 45 20 10 > [5,] 42 30 27 12 6 > > Thanks to help from people in this forum, I was able to randomly sample > 800 > interactions from matrix M and obtain a subset of the interactions in a > smaller matrix called reduced.M: > > M.index <- 1:length(M) > reduced.M <- matrix(table( factor( sample(rep(M.index,M),800), > M.index)),nr=5) > reduced.M > > [,1] [,2] [,3] [,4] [,5] > [1,] 77 62 56 25 15 > [2,] 83 53 51 21 11 > [3,] 57 34 28 18 10 > [4,] 51 31 21 14 4 > [5,] 27 21 19 6 5 > > Now I need to sample again, not randomly, but according to different > distributions. For example, I need to sample according to the > abundance of > species pla, (pla vector written above). The result should be that I > sample > my first row more intensely than my second row, and the last row should > be > the least intensely sampled, in proportion to my row species abundance. > In > the same token, I want to sample with a uniform distribution as well. > How > do I do this? > > Thanks, as usual! Silvia. > -- > View this message in context: http://www.nabble.com/Sampling-a-matrix- > with-different-probability-distributions-tp23390324p23390324.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > 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.
Silvia Lomascolo
2009-May-05 17:37 UTC
[R] Sampling a matrix with different probability distributions
Greg Snow-2 wrote:> > The sample function has a prob argument that can be used to sample with > unequal probabilities. It sounds like you can just pass in the species > abundance vector to prob and it will do what you want. > > It might be that my question is even more basic than it sounds: I have > tried what you say, but I may just be writing it wrong as I get an error > message. I wrote: > > reduced.M <- matrix(table( factor( sample(rep(M.index,M),800), M.index > prob=pla)),nr=5) > > but I get and error message saying that the prob argument is "unused"". I > have also tried prob=unif, or directly prob=c(10, 9, 6, 5, 3), but I get > the same error message. Any hints as to how I am passing the prob argument > wrong? This is probably too basic... > > Thanks, Silvia. > -- > Gregory (Greg) L. Snow Ph.D. > Statistical Data Center > Intermountain Healthcare > greg.snow at imail.org > 801.408.8111 > > >> -----Original Message----- >> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- >> project.org] On Behalf Of Silvia Lomascolo >> Sent: Tuesday, May 05, 2009 9:52 AM >> To: r-help at r-project.org >> Subject: [R] Sampling a matrix with different probability distributions >> >> >> I need to sample a matrix according to different distributions, instead >> of >> just randomly. Here is some code that will hopefully clarify what I >> need: >> >> I have a matrix M of 1287 interactions between species in rows and >> species >> in columns, according to their abundance: >> >> pla<- c(10, 9, 6, 5, 3) #abundance of pla species >> pol<- c(14, 10, 9, 4, 2) #abundance of pol species >> M<-pla%*%t(pol) #matrix of 1287 interactions according to pla and pol >> abundance >> M >> [,1] [,2] [,3] [,4] [,5] >> [1,] 140 100 90 40 20 >> [2,] 126 90 81 36 18 >> [3,] 84 60 54 24 12 >> [4,] 70 50 45 20 10 >> [5,] 42 30 27 12 6 >> >> Thanks to help from people in this forum, I was able to randomly sample >> 800 >> interactions from matrix M and obtain a subset of the interactions in a >> smaller matrix called reduced.M: >> >> M.index <- 1:length(M) >> reduced.M <- matrix(table( factor( sample(rep(M.index,M),800), >> M.index)),nr=5) >> reduced.M >> >> [,1] [,2] [,3] [,4] [,5] >> [1,] 77 62 56 25 15 >> [2,] 83 53 51 21 11 >> [3,] 57 34 28 18 10 >> [4,] 51 31 21 14 4 >> [5,] 27 21 19 6 5 >> >> Now I need to sample again, not randomly, but according to different >> distributions. For example, I need to sample according to the >> abundance of >> species pla, (pla vector written above). The result should be that I >> sample >> my first row more intensely than my second row, and the last row should >> be >> the least intensely sampled, in proportion to my row species abundance. >> In >> the same token, I want to sample with a uniform distribution as well. >> How >> do I do this? >> >> Thanks, as usual! Silvia. >> -- >> View this message in context: http://www.nabble.com/Sampling-a-matrix- >> with-different-probability-distributions-tp23390324p23390324.html >> Sent from the R help mailing list archive at Nabble.com. >> >> ______________________________________________ >> R-help at r-project.org mailing list >> 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 at r-project.org mailing list > 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. > >-- View this message in context: http://www.nabble.com/Sampling-a-matrix-with-different-probability-distributions-tp23390324p23392352.html Sent from the R help mailing list archive at Nabble.com.