如何告诉R从相关计算中删除异常值?

Bet*_*eth 5 r outliers correlation

在计算相关性时如何告诉R删除异常值?我从散点图中发现了一个潜在的异常值,并且我试图比较有和没有这个值的相关性.这是一个介绍统计课程; 我只是在玩这些数据来开始理解相关性和异常值.

我的数据如下:

"Australia" 35.2 31794.13
"Austria" 29.1 33699.6
"Canada" 32.6 33375.5
"CzechRepublic" 25.4 20538.5
"Denmark" 24.7 33972.62
...
Run Code Online (Sandbox Code Playgroud)

等等,对于26行数据.我试图找到第一个和第二个数字的相关性.

确实读过这个问题,但是,我只想删除一个点,而不是一个百分点.R中是否有命令执行此操作?

Dir*_*tel 6

你不能用基本cor()功能做到这一点,但你可以

  • 使用来自其中一个健壮统计数据包的相关函数,例如robCov()来自包鲁棒性

  • 使用一个winsorize()函数,例如来自robustHD,来处理你的数据

以下是第二种方法的快速示例:

R> set.seed(42)
R> x <- rnorm(100)
R> y <- rnorm(100)
R> cor(x,y)             # correlation of two unrelated series: almost zero
[1] 0.0312798
Run Code Online (Sandbox Code Playgroud)

我们用一个大的异常值"污染"一个点:

R> x[50] <- y[50] <- 10
R> cor(x,y)             # bigger correlation due to one bad data point
[1] 0.534996
Run Code Online (Sandbox Code Playgroud)

所以让我们来赢取:

R> x <- robustHD::winsorize(x)
R> y <- robustHD::winsorize(y)
R> cor(x,y)
[1] 0.106519
R> 
Run Code Online (Sandbox Code Playgroud)

而且我们又回到了一个不太相关的衡量标准.