2016-03-15 45 views
2

考慮下面的示例數據:減少的數據集的相關性與NA

a=c(NA,1,NA) 
b=c(1,2,4) 
c=c(0,1,0) 
d=c(1,2,4) 
df=data.frame(a,b,c,d) 

目的爲2列,其中NA應減少的相關性之間找到相關性。 NA意味着事件沒有發生。

有沒有辦法在關聯中使用NA,這樣它就會拉低相關的值?

> cor(df$a, df$b) 
[1] NA 

或者我應該看看其他一些數學函數嗎?

回答

0

我想,沒有簡單的解釋。 。必須使用NA刪除數據,並在列b,c,d中刪除與課程相關的數據。然後計算相關性。您可以檢查每個數據集(a,b,c,d)中的thera是否相應NA

在您的示例中,您可以使用b,c,d的所有組合計算相關性,但是如果要計算cor for cor a,b)你只能選擇a和b中沒有NA的行。也許當你計算這個COR(A,B)由(號碼在與NA行和b)所有行數的數據集分成

a=c(NA,1,NA) 
b=c(1,2,4) 
c=c(0,1,0) 
d=c(1,2,4) 
df=data.frame(a,b,c,d) 
2

是否有使用NA的方式乘以在相關性中,它會降低相關性的值?

這是一種使用NA值減少相關性的方法。爲了演示,我使用的是一些好的大小的不同數據。

a <- sort(ruinf(10)) 
b <- sort(ruinf(10)) 
## Sorting so that there is some good correlation between them. 
## Now making some values NA deliberately 
a[c(9,10)] <- NA 
cor(a[1:8],b[1:8]) 
## [1] 0.890465 #correlation value is high 

## Lets assign a to c and Fill NA values with something 
c <- a 
## using mean causes no change to numerator but increases denominator. 
c[is.na(a)] <- mean(a, na.rm=T)  cor(c,b) 
## [1] 0.6733387 

請注意,當您用均值替換所有NA項時,分子沒有變化,因爲在附加條件下乘以零。然而分母爲b增加了一些更多的值,以便相關值降低。此外,數據中的更多NA,相關性會下降。

2

這個問題沒有數學意義,因爲沒有發生的事件之間沒有相關性。沒有事件發生,相關性不能降低。除了轉換數據外,沒有其他功能可以執行此操作。

你可能喜歡的東西@Ujjwal Kumar還建議更換NA值,但是這僅僅是數據處理,而不是預定義的函數

看的心病?cor幫助文件和使用功能,如cor(df$a,df$b,use="pairwise.complete.obs"你可以看到NA值通常應被視爲在那裏他們只是刪除,並且對相關本身

?心病輸出

沒有影響,如果使用是「E非常重要「,NA將在概念上進行傳播,即,只要其貢獻觀測值之一爲NA,結果值就是NA。

如果使用「all.obs」,那麼缺少觀察值的存在會產生錯誤。如果使用「complete.obs」,那麼通過個案刪除來處理缺失的值(並且如果沒有完整的情況,則會給出錯誤)。

「na.or.complete」是一樣的,除非沒有完整的情況下,給NA。最後,如果使用的值是

「pairwise.complete.obs」,那麼使用這些變量的所有完整觀察對計算每對變量之間的相關性或協方差。這可能會導致協方差或相關矩陣不是半正定的,也可能導致NA條目,如果這對變量沒有完整的對。對於cov和var,「pairwise.complete.obs」僅適用於「pearson」方法。請注意,var(double(0),use = *)(相當於)給出了NA的用法=「所有」和「na.or.complete」,並在其他情況下給出錯誤。

+0

謝謝,我明白一個關聯不能與NA做出,但在我們的情況下,NA表示事件沒有發生。所以我希望這樣的事件降低相關性的價值。我不能使用0。 – user3243478

+1

再次,您不能降級關聯的值。你不是在尋找一個功能。您必須操縱非常混亂的數據,並且我沒有知道這一點的「最佳實踐」。 – TylerDurden