示例#1
0
def funcionprincipal(dato,variable,opciones):
    from rpy import r  #pylint: disable=import-error
    diccionario={"Descriptivo":{"Media":None,"Varianza":None,u"Desviación":None,"Mediana":None,"Moda":None,"Rango":None,u"Máximo":None,u"Mínimo":None,"Percentil":None,"Curtosis":None,u"Coeficiente de Asimetría":None}}
    lista=dato.query(str(variable))
    diccionario["Descriptivo"]["Variable"]=str(variable)
    diccionario["Descriptivo"][u"Número de casos"]=len(lista)
    if opciones.has_key("Media"): diccionario["Descriptivo"]["Media"]=r.mean(lista)
    if opciones.has_key("Varianza"): diccionario["Descriptivo"]["Varianza"]=r.var(lista)
    if opciones.has_key(u"Desviación"): diccionario["Descriptivo"][u"Desviación"]=r.sd(lista)
    if opciones.has_key("Mediana"): diccionario["Descriptivo"]["Mediana"]=r.median(lista)
    #http://cran.r-project.org/doc/contrib/Lemon-kickstart/kr_dstat.html
    #http://wiki.r-project.org/rwiki/doku.php?id=tips:stats-basic:modalvalue&s=modal
    if opciones.has_key("Moda"): diccionario["Descriptivo"]["Moda"]=__moda(lista)
    if opciones.has_key("Rango"): diccionario["Descriptivo"]["Rango"]=r.range(lista)
    if opciones.has_key(u"Máximo"): diccionario["Descriptivo"][u"Máximo"]=r.max(lista)
    if opciones.has_key(u"Mínimo"): diccionario["Descriptivo"][u"Mínimo"]=r.min(lista)
    if opciones.has_key("Percentil"): diccionario["Descriptivo"]["Percentil"]="TODO"
    if opciones.has_key("Curtosis"):
        r.require("e1071")
        diccionario["Descriptivo"]["Curtosis"]=r.kurtosis(lista)
    if opciones.has_key(u"Coeficiente de Asimetría"):
        r.require("e1071")
        diccionario["Descriptivo"][u"Coeficiente de Asimetría"]=r.skewness(lista)

    return diccionario
示例#2
0
def funcionprincipal(dato,variable,opciones):
    from rpy import r
    lista=dato.query(variable)
    num=len(lista)
    numcasos=len(list(r.table(lista)))
    total=0
    diccionario = {}
    diccionario["Ji cuadrado"] = {}
    #MEJOR CONDICION TODAVIA = Numero de valores/Numero de datos > 0.15
    #TODO: Cambiar por la "mejor condicion"
    if numcasos<30: 
        if opciones[u"Distribución"]=="Uniforme":
            distribucion=r.runif(numcasos,1./numcasos,1./numcasos)
        resultado=r.chisq_test(list(r.table(lista)),p=distribucion)
    else:
        rango=r.range(lista)
        limiteinferior=rango[0]-0 #TODO: Revisar precisión
        limitesuperior=rango[1]+0
        longitudrango=limitesuperior-limiteinferior
        numdivisiones=int(0.15*num)
        divisor=longitudrango/numdivisiones
        listaobtenida=[0 for x in range(numdivisiones)]
        for reg in lista:
            posicion=int(float(reg-limiteinferior-1)/divisor)
            if posicion>=numdivisiones: posicion=numdivisiones-1
            listaobtenida[posicion]+=1
        distribucion=r.runif(numdivisiones,1./numdivisiones,1./numdivisiones)
        resultado=r.chisq_test(listaobtenida,p=distribucion)

    diccionario["Ji cuadrado"]["Variable"] = str(variable)
    diccionario["Ji cuadrado"][u"Significación"]=resultado["p.value"]
    return diccionario
      pch=21, col='blue', bg='lightblue', type='o') 


# second plot
x = range(1,11)
y = [i**2 for i in x]
z = [i**3 for i in x]
r.plot(x, y, main='My second plot', xlab='x', ylab='y', type='l', col='blue')
r.lines(x, z, col='red') 

# cosine function, save to file
import math
r.png('cosine.png')
x = r.seq(0,50, by=0.1)
y = [math.cos(i) for i in x]
r.plot(x, y, main='COS(X)', xlab='x', ylab='cos(x)', type='l', col='blue')
r.dev_off() 

# histogram
x = range(10) + range(3,6) + range(5,10)
r.hist(x, main='A histogram', xlab='x', col='lightblue') 

# adust plotting area
from rpy import r
x = range(1,11)
y = [i**2 for i in x]
z = [i**3 for i in x]
r.plot(x, y, main='My second plot', xlab='x', ylab='y', type='l',
       col='blue', ylim=r.range(y,z))
r.lines(x, z, col='red')