This just associates a significance value with your correlation coefficient, i.e. is it significantly different from 0 given the sample size
Checking How Good A Correlation Is
I'm working with a set of data and I've obtained a certain correlations (using pearson's correlation coefficient). Is there a R function or package that would determine how good a correlation is by permutation tests? Or is there any other way to do this?
The example data:
data A
structure(list(A = c(4.7671948292, 5.057230067, 5.3789958351,
6.1564088085, 4.8594252454, 5.8761895664, 4.4854758124, 4.7528916483,
4.4210848845, 3.9850111524), B = c(4.5852526479, 4.9673151031,
5.1601803995, 6.3082498288, 4.5796519129, 5.665788171, 4.2886052774,
4.4678455852, 4.4444468354, 3.8911975809)), .Names = c("A",
"B"), row.names = c("901_at", "902_at", "903_at",
"904_at", "905_at", "906_at", "907_at", "908_at",
"909_at", "910_s_at"), class = "data.frame")
data B
structure(list(A = c(5.5552465406, 5.8527484565, 8.3272537274,
6.4436035152, 5.597121724, 7.7741738479, 4.9931115346, 5.3852788212,
6.0292060458, 4.8351702985),B = c(5.6748698406, 6.8504588796,
9.4375062219, 7.6984745916, 5.7246927142, 9.0156741296, 4.8601744963,
5.4403609238, 6.842929093, 5.474543968)), .Names = c("A", "B"
), row.names = c("901_at", "902_at", "903_at", "904_at",
"905_at", "906_at", "907_at", "908_at", "909_at",
"910_s_at"), class = "data.frame")
The correlation was calculated as :
cor1<-cor(data A, data B)
How to do the permutation tests to validate the same?
• 3,451 views
•
link
2 answers
You could start with something like:
corperm = function(x,y,n) {
# n is the number of permutations
# x and y are the vectors to correlate
obs = abs(cor(x,y))
tmp = sapply(1:n,function(z) {abs(cor(sample(x,replace=TRUE),y))})
return(1-sum(obs>tmp)/n)
}
Usage is like corperm(A$A,B$B,1000). Note that this will likely give results very similar to cor.test and will be slower.
• 61 views
•
link
Hello!
I think you can use the function cor.test.
Example:
cor.test(A$A, B$A)
• 156 views
•
link
• 76 views
•
link
Log in to answer this question.
What exactly do you have in mind? You want to remove some data 1000 times and verify if the correlation still holds? You want to permute data between A and B randomly 1000 times? You want to permute all the data, some of the data? Why do you want to accomplish this? In order to see if the correlation is robust to small changes in the data? Otherwise, a correlation coefficient already tells you how good the correlation is.
Yes, I would like to permute all of the data to see if the correlation still holds and how good a correlation is when compared to a correlation between random permutations of the data
Cross-posted: http://stackoverflow.com/questions/18614720/determining-how-good-a-correlation-is-in-r