簡體   English   中英

如何告訴R從相關計算中刪除異常值?

[英]How do I tell R to remove the outlier from a correlation calculation?

在計算相關性時如何告訴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
...

等等,對於26行數據。 我試圖找到第一個和第二個數字的相關性。

確實讀過這個問題 ,但是,我只想刪除一個點,而不是一個百分點。 R中是否有命令執行此操作?

你不能用基本的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

我們用一個大的異常值“污染”一個點:

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

所以讓我們來贏取:

R> x <- robustHD::winsorize(x)
R> y <- robustHD::winsorize(y)
R> cor(x,y)
[1] 0.106519
R> 

而且我們又回到了一個不太相關的衡量標准。

如果對兩個向量應用相同的條件表達式,則可以排除該“點”。

cor( DF[2][ DF[2] > 100 ],   # items in 2nd column excluded based on their values
   DF[3][ DF[2] > 100 ] )  # items in 3rd col excluded based on the 2nd col values

在下面,我從假設(我在你的行之間閱讀)開始工作,你已經在視覺上確定了單個異常值(即,從圖中)。 根據您的有限數據集,可能很容易根據其值識別該點。 如果你有更多的數據點,你可以使用這樣的東西。

tmp <- qqnorm(bi$bias.index)
qqline(bi$bias.index)
(X <- identify(tmp, , labels=rownames(bi)))
qqnorm(bi$bias.index[-X])
qqline(bi$bias.index[-X])

請注意,我只是復制了自己的代碼,因為我無法使用您的示例代碼。 還要檢查?identify之前。

將所有數據放在數據框上是有意義的,因此更容易處理。 我總是喜歡通過在我的數據框中使用額外的列(在本例中為B)來跟蹤異常值。

df       <-  data.frame(A=c(1,2,3,4,5), B=c(T,T,T,F,T))

然后在進入好的分析之前過濾掉我不想要的數據。

myFilter <-  with(df, B==T)
df[myFilter, ]

這樣,您就不會忘記異常值,並且您可以根據需要管理它們。

編輯:

改進上面的答案,您還可以使用條件來定義異常值。

df  <-  data.frame(A=c(1,2,15,1,2))
df$B<-  with(df, A > 2)
subset(df, B == F)

你在這里得到了一些很好的信息,但它們似乎是更復雜問題的答案。 如果我錯了,請糾正我,但聽起來你只想手動刪除一個觀察。 指定其索引的否定將刪除它。

假設您的數據幀是A,列是V1和V2。

WithAus <- cor(A$V1,A$V2)
WithoutAus <- cor(A$V1[-1],a$V2[-1])

或者您可以刪除多個索引。 讓我們說1,5和20

ToRemove <- c(-1,-5,-20)
WithAus <- cor(A$V1,A$V2)
WithoutAus <- cor(A$V1[ToRemove],a$V2[ToRemove])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM