Pruebas de Estadística (Kolmogorov y T-test) con Python y Rpy2
-
09-12-2019 - |
Pregunta
Ejecuté algunos algoritmos y quería hacer algunos análisis estadísticos con los resultados.Tengo dos vectores con los promedios de la tasa de error.
Con R, usando la línea de abajo obtendría todo.
t.test(methodresults1,methodresults2,var.equal=FALSE,paired=FALSE,alternative="less")
Como uso Python, quería usar el proyecto Rpy2.
Intenté eso:
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]
No pude realizar ambas pruebas.
También descubrí que el problema con la prueba t está en la declaración var.equal y me da una * Error de sintaxis:La palabra clave no puede ser una expresión (, línea 1).
Pregunta adicional:¿Existe una mejor manera de trabajar con numpy y Rpy2?
Solución
Como dice: " SyntaxError: La palabra clave no puede ser una expresión (, línea 1). "
En Python, los símbolos no pueden contener el carácter ".".
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", ))})
Revisa el Documentación RPY2 sobre funciones para másDetalles.
Otros consejos
para realizar la prueba ks con python, en el caso de una prueba de dos muestras, puede
>>> from scipy.stats import ks_2samp
>>> import numpy as np
>>>
dónde x
, y
son dos nupmy.array
:
>>> ks_2samp(x, y)
(0.022999999999999909, 0.95189016804849658)
El primer valor son las estadísticas de la prueba y el segundo valor es el valor p.si el valor p es inferior a 95 (para un nivel de significancia del 5%), esto significa que no se puede rechazar la hipótesis nula de que las dos distribuciones muestrales son idénticas.
para ver una prueba ks de muestra, consulte, por ejemplo, aquí: http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kstest.html#scipy.stats.kstest
Esta prueba le permite probar la bondad del ajuste de su distribución empírica a una distribución de probabilidad determinada.