R cor.测试:“有限观测不足”

vc6uscn9  于 2023-04-09  发布在  其他
关注(0)|答案(3)|浏览(438)

我目前正在尝试创建一个R函数来计算指定列与 Dataframe 的所有数值列的corr.test相关性。下面是我的代码:

#function returning only numeric columns
only_num <- function(dataframe)
{
  nums <- sapply(dataframe, is.numeric)
  dataframe[ , nums]
}

#function returning a one-variable function computing the cor.test correlation of the variable
#with the specified column

function_generator <- function(column)
  {
    function(x)
    {
      cor.test(x, column, na.action = na.omit)
    } 
  }

data_analysis <- function(dataframe, column)
  {
  DF <- only_num(dataframe)

  fonction_corr <- function_generator(column)

  sapply(DF, fonction_corr)

  }

data_analysis(40, 6, m, DF$Morphine)

当我在最后一行调用“data_analysis”时,我得到以下错误:
“cor.test.default(x,column,na.action=na.omit)中的错误:有限观测值不足”
它能代表什么?我应该改变什么?我有点卡住了...
谢谢。
克莱芒

b4wnujal

b4wnujal1#

“Not enough finite obervations”是cor.test在某些情况下返回的错误。如果你看一下cor.test.default源代码,你会看到:

OK <- complete.cases(x, y)
x <- x[OK]
y <- y[OK]
n <- length(x)

cor.test从你的向量中删除NA值[...]

if (method = "pearson") {
    if (n < 3L) 
        stop("not enough finite obervations")

[...]

else {
    if (n<2)
        stop("not enough finite obervations")

如果你的向量没有包含足够的非NA值(小于3),函数将返回错误。
在使用cor.test之前,让 Dataframe 中的所有列都包含足够的非NA值。
我希望这将是有用的。

ccrfmcuu

ccrfmcuu2#

我看不到'm'或'DF$Morphine'是什么,所以我创建了一个包含数字和非数字列的数据框。

# generate some data
set.seed(321)
mydf <- data.frame(A = rnorm(100), 
                   B = rexp(100, 1), 
                   C = runif(100), 
                   D = sample(letters, size=100, replace=TRUE))

我保留了您编写的函数,但调用data_analysis的方式不同

data_analysis(dataframe=mydf, column=mydf$C)

当我运行这个函数时,我得到了数据框中每一列的cor.test输出。

A                                      B                                     
statistic   -0.4153108                             -0.4669693                            
parameter   98                                     98                                    
p.value     0.6788223                              0.6415584                             
estimate    -0.04191585                            -0.04711863                           
null.value  0                                      0                                     
alternative "two.sided"                            "two.sided"                           
method      "Pearson's product-moment correlation" "Pearson's product-moment correlation"
data.name   "x and column"                         "x and column"                        
conf.int    Numeric,2                              Numeric,2                             
            C                                     
statistic   Inf                                   
parameter   98                                    
p.value     0                                     
estimate    1                                     
null.value  0                                     
alternative "two.sided"                           
method      "Pearson's product-moment correlation"
data.name   "x and column"                        
conf.int    Numeric,2
to94eoyn

to94eoyn3#

当我在ggplot中向aes调用添加颜色参数时,我遇到了这个问题,例如

ggplot(df, aes(x=x_var, y=y_var, color = my_group))

我相信发生的事情是stat_cor然后分别对每个组运行回归。如果你只是想要颜色而不改变回归,请将其添加到标记中,例如:

geom_point(aes(color = my_group)

相关问题