簡體   English   中英

皮爾遜相關性和相關性的意義

[英]Pearson correlation and significance of the correlation

我有一個6行14列的數據框。 我通過以下方式計算皮爾遜相關性:

#read data
data1 <- read.csv("test.csv")

#calculate correlation 
pearson_coef <- cor(data1[sapply(data1, is.numeric)])

而且我得到正確的相關系數。 現在,我想獲得相關性的顯着性水平。 所以我用了:

significance <- cor.test(data1)

但是我得到這個錯誤:

Error in cor.test.default(data1) : 
  argument "y" is missing, with no default

我不明白是什么問題。 你可以幫幫我嗎?

此外,我想知道是否有可能獲得帶有Pearson相關系數和相關顯着性水平的輸出(唯一的數據幀)?

對不起,這個問題!

stats::cor.test接受兩個輸入xy ,它們是相同長度的數字向量 -請參見文檔?cor.test長和短,您不能將cor.test data.frame

要獲得所需的行為,您可以使用psych包及其corr.test()函數-嘗試以下操作:

# install.packages("psych")
library(psych)
corr.test(data1[sapply(data1, is.numeric)])

這將返回相關矩陣,樣本大小和p值矩陣。 根據您的示例,您可以使用以下代碼僅提取p值並將它們分配給significance

significance <- corr.test(data1[sapply(data1, is.numeric)])$p


注意:這會將調整因子應用於返回的p值 根據psych::corr.test的文檔:

“對於對稱矩陣,原始概率報告在對角線以下,並且相關性已針對對角線上方的多個比較進行了調整。如果x和ys不同,則默認值為調整多個測試的概率。”

您可以像這樣...通過使用adjust = "none"關閉p值調整...

corr.test(data1[sapply(data1, is.numeric)], adjust = "none")

...但是,在解釋此類結果時,請務必謹慎。 有關調整的p值的更多信息,請參見?p.adjust

cor.test有一個非常特定的輸入法。 假設您在數據xy有兩個變量:

cor.test(~ x + y, data)

會得到你想要的東西。

沒有可重現的示例,這會有些麻煩。 我將以虹膜數據集為例。 您的cor.test()調用無法正常運行的原因是,您需要指定要比較的變量。 查看?cor.test了解更多詳細信息。

但是,如果您想通過數據dplyr解決這個問題,我建議您使用dplyr軟件包。 首先,您需要了解如何從cor.test()對象提取值。 運行關聯:

iris.cor <- cor.test(iris$Petal.Width, iris$Petal.Length)

然后看一下數據框的結構:

str(iris.cor)

請注意,您可以像這樣從cor.test()對象提取值:

iris.cor$estimate
iris.cor$p.value

現在,如果要將這些值包含在數據框中,則有幾種方法可以做到這一點。 我更喜歡dplyr解決方案,但是有很多方法可以給這只貓蒙皮。

library(dplyr)

iris %>%
  summarise(coef=cor.test(Petal.Width, Petal.Length)$estimate,
            pval=cor.test(Petal.Width, Petal.Length)$p.value)

這具有易於添加cor.test()對象的其他元素或添加分組變量的優點:

iris %>%
  group_by(Species) %>%
  summarise(coef=cor.test(Petal.Width, Petal.Length)$estimate,
            pval=cor.test(Petal.Width, Petal.Length)$p.value)

歸根結底,R總是有幾種處理方法。 這是一個。

暫無
暫無

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

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