簡體   English   中英

使用Python和Rpy2進行統計測試(Kolmogorov和T檢驗)

[英]Statistics Tests (Kolmogorov and T-test) with Python and Rpy2

我已經運行了一些算法,並希望對結果進行一些統計分析。 我有兩個向量的錯誤率平均值。

使用R,使用下面的行,我將得到所有信息。

t.test(methodresults1,methodresults2,var.equal=FALSE,paired=FALSE,alternative="less")

由於我使用的是Python,因此我想使用Rpy2項目。

我嘗試過:

import rpy2.robjects as R

# methodresults1 and methodresults2 are numpy arrays.

# kolmogorov test
normality_res = R.r['ks.test'](R.FloatVector(methodresults1.tolist()),'pnorm',mean=R.FloatVector(methodresults1.mean().tolist()),sd=R.FloatVector(methodresults1.std().tolist())))

# t-test
res = R.r['t.test'](R.FloatVector(methodresults1.tolist()),R.FloatVector(methodresults2.tolist()),alternative='two.sided',var.equal=FALSE,paired=FALSE)

res.rx('p.value')[0][0]
res.rx('statistic')[0][0]
res.rx('parameter')[0][0]

我無法同時執行這兩項測試。

我還發現t檢驗的問題在於var.equal語句,它給了我* SyntaxError:關鍵字不能是表達式(第1行)。

額外的問題:是否有更好的方法來處理numpy和Rpy2?

如它所說:“ SyntaxError:關鍵字不能是表達式(第1行)。

在Python中,符號不能包含字符“。”。

from rpy2.robjects.packages import importr
from rpy2.robjects.vectors import StrVector
stats = importr("stats")
stats.t_test(methodresults1, methodresults2,
             **{'var.equal': False,
                'paired': False,
                'alternative': StrVector(("less", ))})

查看rpy2文檔中有關函數的更多信息。


使用python執行ks測試,如果有兩個樣本的測試,您可以

>>> from scipy.stats import ks_2samp
>>> import numpy as np
>>> 

其中xy是兩個nupmy.array

>>> ks_2samp(x, y)
(0.022999999999999909, 0.95189016804849658)

第一個值是測試統計量,第二個值是p值。 如果p值小於95(顯着性水平為5%),則意味着您不能拒絕兩個樣本分布相同的Null-Hypothese。

有關一個ks測試示例,請參見此處的示例: http : //docs.scipy.org/doc/scipy/reference/generation/scipy.stats.kstest.html#scipy.stats.kstest

該測試可讓您測試經驗分布與給定概率分布的擬合優度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM