You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

皮尔逊相关性分析中NA、NaN、-Inf***结果含义问询

Pearson相关性分析中常量变量异常结果的含义解析

问题描述

我正在开展Pearson相关性分析,部分结果表格未显示相关系数,而是出现“NA”“NaN”“-Inf***”。查询资料得知NaN表示变量间无相关性,因变量无变化。我的数据中sand、silt、clay为单值测量(所有观测值完全相同),其余变量为重复测量,仅这三个变量出现该异常结果,现咨询这三个结果含义是否一致。

所用代码及数据子集

# Library
library(tidyverse)
library(Hmisc)

# Data subset
dk1 <-structure(list(tc = c(1.38, 1.76, 1.36, 1.48, 1.25, 1.48),
                     soc = c(0.618, 0.951, 1.08, 1.11, 0.756, 1.38),
                     tn = c(0.104, 0.137, 0.11, 0.112, 0.112, 0.106),
                     sand = c(96, 96, 96, 96, 96, 96),
                     silt = c(2.5,2.5, 2.5, 2.5, 2.5, 2.5),
                     clay = c(1.6, 1.6, 1.6, 1.6, 1.6, 1.6),
                     ph = c(6.77, 7.25, 6.69, 7.14, 6.63, 7.18)),
                row.names = c("1","2", "3", "4", "5", "6"), class = "data.frame")
View(dk1)

# Correlation table
dk1corr <- rcorr(as.matrix(dk1), type = c("pearson"))
dk1corr

# Correlations coefficients and p value extract
ccr.dk1corr<-dk1corr$r
ccp.dk1corr<-dk1corr$P

解答

这三个异常结果的本质含义完全一致,都是因为sand、silt、clay是无变异的常量(所有观测值完全相同),导致Pearson相关系数无法正常计算。不同表现形式是rcorr函数处理除以0场景时的不同输出:

  • NaN:Pearson相关系数公式的分母是两个变量的标准差乘积,常量的标准差为0,导致分母为0,计算结果为NaN(Not a Number),直接表示无法得到有效相关系数。
  • NA:rcorr函数在部分场景下会用NA标记无法计算的相关系数,本质原因和NaN一致——变量无变异导致计算失效。
  • -Inf*:同样源于常量变量标准差为0引发的除以0操作,计算过程中产生负无穷;末尾的***是rcorr默认的显著性标记,但此处毫无意义,因为相关系数本身无效。

简言之,这三种输出都是“变量无变异,无法计算有效Pearson相关系数”的不同表述,没有本质区别。

内容的提问来源于stack exchange,提问作者MGB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:50:21