Một cách tiếp cận khác có thể kém chính xác hơn so với thông tin của Fisher, nhưng tôi nghĩ có thể trực quan hơn (và có thể đưa ra ý tưởng về ý nghĩa thực tế bên cạnh ý nghĩa thống kê) là thử nghiệm trực quan:
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
Có một triển khai này trong vis.test
hàm trong TeachingDemos
gói cho R. Một cách có thể để chạy nó cho ví dụ của bạn là:
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 )
Tất nhiên nếu dữ liệu thực của bạn không bình thường hoặc mối quan hệ không tuyến tính thì điều đó sẽ dễ dàng được chọn với đoạn mã trên. Nếu bạn muốn kiểm tra đồng thời những thứ đó, thì đoạn mã trên sẽ làm điều đó hoặc đoạn mã trên có thể được điều chỉnh để thể hiện tốt hơn bản chất của dữ liệu.