我有一个数据框,想要计算correlation(使用Spearman,数据是分类和排名),但仅适用于列的子集 . 我尝试了所有,但R的cor()函数只接受数字数据(x必须是数字,表示错误信息),即使使用了Spearman .
一种粗暴的方法是从数据框中删除非数字列 . 这不是那么优雅,对于速度我仍然不想计算所有列之间的相关性 .
我希望有一种方法可以简单地说“计算列x,y,z的相关性” . 列引用可以按编号或按名称进行 . 我想提供它们的灵活方式是通过矢量 .
任何建议表示赞赏 .
我有一个数据框,想要计算correlation(使用Spearman,数据是分类和排名),但仅适用于列的子集 . 我尝试了所有,但R的cor()函数只接受数字数据(x必须是数字,表示错误信息),即使使用了Spearman .
一种粗暴的方法是从数据框中删除非数字列 . 这不是那么优雅,对于速度我仍然不想计算所有列之间的相关性 .
我希望有一种方法可以简单地说“计算列x,y,z的相关性” . 列引用可以按编号或按名称进行 . 我想提供它们的灵活方式是通过矢量 .
任何建议表示赞赏 .
3 回答
如果您有一个数据框,其中某些列是数字的,而另一些是其他(字符或因子),并且您只想对数字列执行相关,则可以执行以下操作:
但
对于数值数据,您有解决方案 . 但你说,这是分类数据 . 然后生活变得有点复杂......
那么,首先:两个分类变量之间的关联量不是用Spearman等级相关来测量的,而是用卡方检验来衡量的 . 实际上这是逻辑 . 排名表示您的数据中有一些订单 . 现在告诉我哪个更大,黄色还是红色?我知道,有时R会对分类数据执行spearman等级相关 . 如果我编码黄色1和红色2,R会认为红色大于黄色 .
所以,忘记Spearman的分类数据 . 我'll demonstrate the chisq-test and how to choose columns using combn(). But you would benefit from a bit more time with Agresti'的书:http://www.amazon.com/Categorical-Analysis-Wiley-Probability-Statistics/dp/0471360937
然后你应该得到:
V1和V2表示它在哪些变量之间,“out”表示关联的p值 . 这里所有变量都是独立的 . 您可以期待,因为我随机创建了数据 .
通过查看Rattle生成的R脚本,我找到了一种更简单的方法 . 它看起来如下: