Aptech Store

Correlation coefficients: Pearson, Kendal, Spearmann

Hi, I need some coding for the computation of Pearson, Kendal and Spearmann coefficients in GAUSS

1 Answer



0





Hi,

The Pearson correlation can be computed using the GAUSS procedure corrxs. This procedure takes a single matrix and computes the observed correlation matrix. Consider this example, using the dataset skincancer2.xlsx:

// Load data
data = loadd("skincancer2.xlsx");
// Check correlations
print "Pearson's correlation matrix:";
corrxs(data[.,2]~data[.,3]);

The results read:

Pearson's correlation matrix:

 1.000 -0.825
-0.825  1.000 

To calculate Spearman's Rank Correlation, or \rho, I have created the GAUSS procedure spearman for you to use:

// Load data for Spearman's correlation
iq = {106, 86, 100, 101, 99, 103, 97, 113, 112, 110};
tv = {7, 0, 27, 50, 28, 29, 20, 12, 6, 17};
tmp = spearmans(iq, tv);
print "Spearmans rank correlation:" tmp;
proc (1) = spearmans(xi, yi);
local sorted_xi, rank_xi, rank_yi, d_i, d_i2;
sorted_xi = sortc(xi~yi, 1);
// Create rank according to xi
rank_xi = seqa(1, 1, rows(xi));
// Create rank according to yi
rank_yi = sortind(sorted_xi[.,2]);
// Create difference between ranks
d_i = rank_xi - rank_yi;
// Square the difference
d_i2 = d_i.^2;
retp(1 - (6*sumc(d_i2)/(rows(iq)*(rows(iq)^2-1))));
endp;

At this time, there is not a GAUSS procedure for computing the Kendall Rank Correlation. However, it is in progress and I will update this thread when one becomes available.

Eric

105

Your Answer

1 Answer

0


Hi,

The Pearson correlation can be computed using the GAUSS procedure corrxs. This procedure takes a single matrix and computes the observed correlation matrix. Consider this example, using the dataset skincancer2.xlsx:

// Load data
data = loadd("skincancer2.xlsx");
// Check correlations
print "Pearson's correlation matrix:";
corrxs(data[.,2]~data[.,3]);

The results read:

Pearson's correlation matrix:

 1.000 -0.825
-0.825  1.000 

To calculate Spearman's Rank Correlation, or \rho, I have created the GAUSS procedure spearman for you to use:

// Load data for Spearman's correlation
iq = {106, 86, 100, 101, 99, 103, 97, 113, 112, 110};
tv = {7, 0, 27, 50, 28, 29, 20, 12, 6, 17};
tmp = spearmans(iq, tv);
print "Spearmans rank correlation:" tmp;
proc (1) = spearmans(xi, yi);
local sorted_xi, rank_xi, rank_yi, d_i, d_i2;
sorted_xi = sortc(xi~yi, 1);
// Create rank according to xi
rank_xi = seqa(1, 1, rows(xi));
// Create rank according to yi
rank_yi = sortind(sorted_xi[.,2]);
// Create difference between ranks
d_i = rank_xi - rank_yi;
// Square the difference
d_i2 = d_i.^2;
retp(1 - (6*sumc(d_i2)/(rows(iq)*(rows(iq)^2-1))));
endp;

At this time, there is not a GAUSS procedure for computing the Kendall Rank Correlation. However, it is in progress and I will update this thread when one becomes available.


You must login to post answers.

Have a Specific Question?

Get a real answer from a real person

Need Support?

Get help from our friendly experts.