[R] correlation between two 2D point patterns?
Barry Rowlingson
b.rowlingson at lancaster.ac.uk
Sun Aug 30 15:12:55 CEST 2009
On Sun, Aug 30, 2009 at 10:46 AM, Bernardo Rangel
Tura<tura at centroin.com.br> wrote:
> On Sun, 2009-08-30 at 07:51 +0100, William Simpson wrote:
>> Suppose I have two sets of (x,y) points like this:
>>
>> x1<-runif(n=10)
>> y1<-runif(n=10)
>> A<-cbind(x1,y1)
>>
>> x2<-runif(n=10)
>> y2<-runif(n=10)
>> B<-cbind(x2,y2)
>>
>> I would like to measure how similar the two sets of points are.
>> Something like a correlation coefficient, where 0 means the two
>> patterns are unrelated, and 1 means they are identical. And in
>> addition I'd like to be able to assign a p-value to the calculated
>> statistic.
>>
>> cor(x1,x2)
>> cor(y1,y2)
>> gives two numbers instead of one.
>>
>> cor(A,B)
>> gives a correlation matrix
>>
>> I have looked a little at spatial statistics. I have seen methods
>> that, for each point, search in some neighbourhood around it and then
>> compute the correlation as a function of search radius. That is not
>> what I am looking for. I would like a single number that summarises
>> the strength of the relationship between the two patterns.
>>
>> I will do procrustes on the two point sets first, so that if A is just
>> a rotated, translated, scaled, reflected version of B the two patterns
>> will superimpose and the statistic I'm looking for will say there is
>> perfect correspondence.
>>
>> Thanks very much for any help in finding such a statistic and
>> calculating it using R.
>>
>> Bill
>
> Hi Bill,
>
> If your 2 points set is similar I expect your Euclidean distance is 0,
> so I suggest this script:
>
> dist<-sqrt((x1-x2)^2+(y1-y2)^2) # Euclidean distance
>
> t.test(dist) # test for mean equal 0
I'm not sure what you'd do for two sets of points - compute the sum of
all the distances from points in set 1 to the nearest point in set 2?
That'll be zero for identical patterns, but also zero if you have
superimposed points in set1 but not in set 2.
If rotation and scale and translation are of interest to you then
what you are doing is shape analysis. There's a package for that[1].
http://www.maths.nott.ac.uk/personal/ild/shapes/
Barry
[1] Not quite as catchy as 'there's an app for that'
More information about the R-help
mailing list