0

我想在 python 中使用 RI 计算 p 值,我正在使用这个包 rpy2。我正在动态生成 count_a 和 count_b,并与它一起计算 p 值。当我运行脚本时,python 意外关闭,并收到以下错误消息:

“错误:'rho' 必须是一个不为 NULL 的环境:在启动期间在 C 级评估中检测到 - 警告消息:

中止陷阱:6"

数据如下:

 count_a  count_b

 94       107
 109      92
 90       89
 18       13

下面是我的代码:

import rpy2.robjects as R
out= open(args.outfile, 'w')
binom=R.r['binom.test'](c(count_a,count_b))
P_val=binom['p.value'][0][0]
out.write(str(count_a) + '\t' + str(count_b) + '\t' + str(P_val)
out.close()

有什么建议或选项可以在 python 中根据一对值计算 p 值吗?

计算 binom 对象:

Exact binomial test

数据:c(94L, 107L) 成功次数 = 94,试验次数 = 201,p 值 = 0.3974 备择
假设:成功的真实概率不等于 0.5 95% 置信区间:0.3971286 0.5391627
样本估计值:
成功概率
0.4676617

但是,在提取 p 值时,我收到此错误:

文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/rpy2/robjects/vectors.py”,第 233 行,在getitem res = super(Vector, self) 中。getitem (i) TypeError: 'str' 对象不能被解释为索引

4

2 回答 2

1

这个线程看来,早期版本的 rpy2 和 R 3.0.2 可能存在问题。看起来 R 3.0.2 的推荐版本至少是 rpy2-2.3.8。

于 2014-05-06T22:07:08.890 回答
0
The problem was binom.names is a  StrVector, and does not support index, however it can be     converted to a Python list easily enough,and then extract those values.

    my_vec = R.IntVector([count_a,count_b])
    binom=R.r['binom.test'](my_vec)
    names= binom.names
    names = list(names)
    P_val= binom[names.index('p.value')][0]

有关更多说明,请访问此博客http://telliott99.blogspot.com/2010/11/rpy-r-from-python-2.html

于 2014-05-07T17:45:10.657 回答