Інший підхід, який може бути менш точним, ніж трансформація Фішера, але, я думаю, міг би бути більш інтуїтивним (і міг би дати уявлення про практичне значення на додаток до статистичної значущості) - це візуальний тест:
Buja, A., Cook, D. Hofmann, H., Lawrence, M. Lee, E.-K., Swayne,
D.F and Wickham, H. (2009) Statistical Inference for exploratory
data analysis and model diagnostics Phil. Trans. R. Soc. A 2009
367, 4361-4383 doi: 10.1098/rsta.2009.0120
Існує реалізація цього в vis.testфункції в TeachingDemosпакеті для R. Один з можливих способів запустити його для вашого прикладу:
vt.scattercor <- function(x,y,r,...,orig=TRUE)
{
require('MASS')
par(mar=c(2.5,2.5,1,1)+0.1)
if(orig) {
plot(x,y, xlab="", ylab="", ...)
} else {
mu <- c(mean(x), mean(y))
var <- var( cbind(x,y) )
var[ rbind( 1:2, 2:1 ) ] <- r * sqrt(var[1,1]*var[2,2])
tmp <- mvrnorm( length(x), mu, var )
plot( tmp[,1], tmp[,2], xlab="", ylab="", ...)
}
}
test1 <- mvrnorm(100, c(0,0), rbind( c(1,.75), c(.75,1) ) )
test2 <- mvrnorm(100, c(0,0), rbind( c(1,.5), c(.5,1) ) )
vis.test( test1[,1], test1[,2], r=0.75, FUN=vt.scattercor )
vis.test( test2[,1], test2[,2], r=0.75, FUN=vt.scattercor )
Звичайно, якщо ваші реальні дані не є нормальними або відносини не є лінійними, то це буде легко підібрано за допомогою наведеного вище коду. Якщо ви хочете одночасно перевірити їх, тоді це зробить вищевказаний код, або вищезгаданий код міг би бути адаптований для кращого відображення характеру даних.