首页 > 解决方案 > 当属性单独传递和在数据帧中传递时,cor 函数给出不同的值

问题描述

我正在尝试使用 cor() 函数来查找数据框中不同属性之间的相关性。当我单独传递属性时,例如:

cor_or1_or7 = cor(plant_data$Orientation1, plant_data$Orientation7, 
                  method = "pearson", use = "complete.obs")

我得到plant_data$Orientation1 和plant_data$Orientation7 之间的相关性为-0.8696721

但是,当我传递包含所有属性的整个数据框时,我得到的同一对属性的值为 -0.89070093。

我用于将整个数据帧传递给 cor() 函数的代码:

correlation_table <- cor(plant_data[2:19], method = "pearson", use = "complete.obs")

数据框中共有 18 个属性和 724 个实例。

我似乎无法弄清楚为什么应用于同一组值的相同函数会给出不同的答案!谁能告诉我这里发生了什么?谢谢!

标签: rdataframecorrelation

解决方案


这是因为使用complete.obs参数,取决于您的 NA 在第 2-19 列中的其他变量中的位置,样本会发生变化。假设您有方向 1 和方向 7 的整个数据集,例如 n = 50,那么所有 50 个数据点都用于仅调用这两个变量的相关计算。如果在另一个变量中,您有 3 个 NA 和 n = 47,则通过调用整个数据框,在计算相关系数之前,您将为所有变量提供 n = 47 个数据点,因此方向 1 和 7 的值将发生变化。


推荐阅读