r - 当属性单独传递和在数据帧中传递时,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 个实例。
我似乎无法弄清楚为什么应用于同一组值的相同函数会给出不同的答案!谁能告诉我这里发生了什么?谢谢!
解决方案
这是因为使用complete.obs
参数,取决于您的 NA 在第 2-19 列中的其他变量中的位置,样本会发生变化。假设您有方向 1 和方向 7 的整个数据集,例如 n = 50,那么所有 50 个数据点都用于仅调用这两个变量的相关计算。如果在另一个变量中,您有 3 个 NA 和 n = 47,则通过调用整个数据框,在计算相关系数之前,您将为所有变量提供 n = 47 个数据点,因此方向 1 和 7 的值将发生变化。
推荐阅读
- redux - 我应该为 angular8 应用程序使用哪个状态管理库?
- ios - (Swift) 导航栏隐藏在 viewController 中
- rsa - 通过长文本部分加密 RSA
- vue.js - 超过一定数量时如何显示弹出窗口?(Vue.js 和 Boostrap)
- python - 你能用turtle.write 获取用户输入吗?
- validation - 如何在我的自定义标签助手中获得不显眼的验证标记
- flutter - 列项目未与中心对齐
- spring-mvc - 在单元测试期间跳过或模拟 SecurityUtils
- python - 插值复数矩阵
- ios - AVURLAsset 的 opus 文件的正确扩展名是什么?