【发布时间】:2014-04-30 08:15:08
【问题描述】:
我正在尝试使用 python 的 Rpy 模块计算统计参数 phi 系数、Cramer 的 V 和连续系数。在 R 中我可以这样做,但我在尝试在 python 中复制相同的内容时束手无策
Library(vcd)
data <- read.csv("test.csv")
assocstats(table(data$var_4, data$target)
Output
X^2 df P(> X^2)
Likelihood Ratio 113.28 1 0
Pearson 112.51 1 0
Phi-Coefficient : 0.15
Contingency Coeff.: 0.148
Cramer's V : 0.15
在python中的实现
from Rpy import r
# Already connected with mysql
q="Select var_4 , target from test"
cur.execute(q)
data=cur.fetchall()
ls1=[]
ls2=[]
for i in range(len(data)):
ls1.append(data[i][0])
ls2.append(data[i][1])
rpy.r.library("vcd")
rpy.r.assocstats(rpy.r.table(ls1,ls2))
错误:
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
rpy.r.assocstats(rpy.r.table(ls1,ls2))
RPy_RException: Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
我尝试的另一种方法是从 scipy 模块计算 phi sq,然后使用数学公式计算 cramer 的 v 等。但我打算在我的项目中大量使用 Rpy。我真的很感激你能指出上述方法中的问题。我想我无法在公式中以正确的格式传递输入 提前致谢
【问题讨论】: