How to resample matrices to test for the robustness of their correlation

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

How to resample matrices to test for the robustness of their correlation

camilleislande
This post was updated on .
Hello
I have several populations where I have morphology and diet for each individual. I am interested in the correlation between diet and morphological distances. However the number of individuals in each population ranges from 22 to 80 individuals. I have looked at the correlation diet-morphology for each population and (not surprisingly) the correlation coefficientis is highly correlated with the number of individuals per population.

I would like to resample (without replacement) the populations with 60-80 individuals and get random samplings of  30 individuals (1000 times). I would like to get a correlation coefficient distribution against which to test the original value of the correlation.

I guess it is possible do this, however I have never written a script in R and I am not familiar with resampling techniques at all. Any help with coding will be greatly appreciated

Thank you
Reply | Threaded
Open this post in threaded view
|

Re: How to resample matrices to test for the robustness of their correlation

chuck.01
see:
?sample
library(vegan)
?rrarefy

not knowing your data structure, its hard to say.


camilleislande wrote

>
> Hello
> I have several populations where I have morphology and diet for each
> individual. I am interested in the correlation between diet and
> morphological distances. However the number of individuals in each
> population ranges from 22 to 80 individuals. I have looked at the
> correlation diet-morphology for each population and (not surprisingly) the
> correlation coefficientis is highly correlated with the number of
> individuals per population.
>
> I would like to resample (without replacement) the populations with 60-80
> individuals and get random samplings of  30 individuals (1000 times). I
> would like to get a correlation coefficient distribution against which to
> test the original value of the correlation.
>
> I guess it is possible do this, however I have never written a script in R
> and I am not familiar with resampling techniques at all. Any help with
> coding will be greatly appreciated
>
> Thank you
>


--
View this message in context: http://r.789695.n4.nabble.com/How-to-resample-matrices-to-test-for-the-robustness-of-their-correlation-tp4397915p4399189.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: How to resample matrices to test for the robustness of their correlation

camilleislande
Thank you Chuck,

Here is the head of my data set (tjornres):
       Fish.1 Fish.2  MORPHO      DIET
1         1      2        0.03768       0.1559250
2         1      3        0.05609       0.7897060
3         1      4        0.03934       0.4638010
4         1      5        0.03363       0.1200480
5         1      6        0.05629       0.4390760
6         1      8        0.08366       0.1866750
7         1      9        0.04892       0.0988235
8         1     10       0.04427       0.2637140

MORPHO and DIET refer to the morphological and diet distances between fish 1 and fish 2. My original data set has over 2400 pairs of fish. My goal  is to resample this dataste by selecting only 435.
I would like to do this 999 times and get a distribution of the correlation coefficients MORPHO~DIET.

I went on and wrote this code:

head(tjornres)

essayres = tjornres                  # copy of the data            
R = 999                                         # the number of replicates            
cor.values = numeric(R)         # store the data            
for (i in 1:R) {                              # loop
+ group1 = sample(essayres, size=435, replace=F)
+ group2 = sample(essayres, size=435, replace=F)
+ cor.values[i] = cor.test(group1,group2)$cor
+ }

I have a syntax error in this code.

Also if I run one resampling, sample(essayres, size=435, replace=F), I get this error message: Error in `[.data.frame`(x, .Internal(sample(length(x), size, replace,  : cannot take a sample larger than the population when 'replace = FALSE'.

Does anyone know why this code is not working? Are there any other ways to resample (without replacement) ?
Thank you for your help,