R

Premoniciones de Tirole sobre sobre el R Consortium

R

A J. Tirole tiene Nobel de economía. En 2002 escribió un artículo, Some Simple Economics of Open Source, en el que trataba de explicar desde un punto de vista económico y de organización industrial el porqué de esa rareza. Aparte de cuestiones como si sería extrapolable a otros sectores distintos del del desarrollo de software.

En la sección sobre la reacción de las compañías de software frente al fenómeno del software libre tiene un apartado titulado viviendo simbióticamente de [no con] un proyecto de código abierto que termina con la frase (mi traducción):

Comparaciones de tres grupos: pruebas vs modelos

Una pregunta reciente en r-help-es se refería a la comparación en R de las proporciones en tres grupos. Obviando algunas pequeñas complicaciones en el problema, la respuesta canónica podría ser esta:

total <- c(56, 49,51)
positivos <- c(14, 10, 17)
prop.test(tmp$positivos, tmp$positivos + tmp$negativos)

# 3-sample test for equality of proportions without continuity correction
#
# data:  tmp$positivos out of tmp$positivos + tmp$negativos
# X-squared = 2.2289, df = 2, p-value = 0.3281
# alternative hypothesis: two.sided
# sample estimates:
#   prop 1    prop 2    prop 3
# 0.2500000 0.2040816 0.3333333

Los grupos no parecen ser desiguales.

Análisis estadístico de respuestas ocultas en encuestas

A veces se hacen encuestas sobre temas sobre los que los encuestados son reticentes a revelar la verdad (p.e., ¿es Vd. un zombi?). Un procedimiento conocido para recabar tal tipo de información es el siguiente:

  • Se le invita al encuestado a tirar al aire una moneda con las caras etiquetadas con y no; la moneda no es una moneda porque tiene una probabidad conocida (y distinta del 50%) de caer en .
  • El encuestado responde sí si la respuesta a la pregunta y el resultado de la tirada de la moneda coinciden y no en caso contrario.

A partir de la proporción de respuestas positivas y conocida la probabilidad del de la moneda, $latex q$, es posible estimar la proporción $latex \theta$ de respuestas positivas a la pregunta de subyacente de interés en la muestra. Efectivamente, los síes tienen una distribución binomial $latex B(p) = B(q\theta + (1-q)(1-\theta))$ y, una vez estimado (por máxima verosimilitud) $latex \hat{p}$, puede despejarse $latex \hat{p}$ de $latex \hat{p} = q\hat{\theta} + (1-q)(1-\hat{\theta})$ para obtener

Por si os interesa el tema de la energía, las centrales, las emisiones, etc.

R

Esta entrada será del interés de a quien le atraigan dos temas bastante independientes entre sí:

  • La energía, las centrales eléctricas, sus emisiones, etc.
  • SPARQL

Allá va el código

library(SPARQL)
library(ggplot2)

queryString = "PREFIX a: <http://enipedia.tudelft.nl/wiki/>
PREFIX prop: <http://enipedia.tudelft.nl/wiki/Property:>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?plant ?name ?elec_capacity_MW ?lat ?lon ?operator
where {
?plant prop:Country a:Spain .
#get the name
#?plant rdfs:label ?name .
?plant prop:Generation_capacity_electrical_MW ?elec_capacity_MW .
#?plant prop:Operator ?operator .
?plant prop:Latitude ?lat .
?plant prop:Longitude ?lon .
}"


d <- SPARQL(url="http://enipedia.tudelft.nl/sparql",
            query=queryString, format='csv',
            extra='&format=text%2Fcsv')

ggplot(d$results, aes(x = lon, y = lat, size = elec_capacity_MW)) +
  geom_point()

y lo que genera, que es

¿En qué año era la el almacenamiento en disco tan caro como hoy en memoria?

R

La respuesta a sea pregunta, y siempre de acuerdo con los datos de John C. McCallum, la da

discos_vs_memoria

que hace corresponder a cada año del eje horizontal el correspondiente (en el vertical) aquel en el que el almacenamiento en disco venía a costar lo mismo (euros por MB) que el memoria en el primero.

Hoy vamos casi por 2000.

Me llama la atención que el crecimiento se esté ralentizando.

El código, por si alguien le encuentra alguna tara, es

Un poco más sobre el índice de poder de Banzhaf

R

En el año 2012 escribí esto, que incluye

El índice de Banzhaf para un determinado partido político mide su poder en términos del porcentaje de las posibles alianzas mínimas ganadoras en las que participa dentro de su universo total. Una alizanza es ganadora cuando reúne más de la mitad de los votos. Y es mínima cuando todos sus integrantes son necesarios para que sea ganadora; excluye, por ejemplo, la alianza trivial formada por todos los partidos.

Coaliciones de Banzhaf en el 20D

R

Usando código de una entrada anterior voy a medir el poder de cada partido político de acuerdo con Banzhaf tras las elecciones de diciembre de 2015.

escannos <- c(123, 90, 69, 40, 9, 8, 6, 2, 2, 1)
names(escannos) <- c( "pp", "psoe", "pod", "c's",
    "erc", "dl", "pnv", "iu", "bildu", "cc")
banzhaf(escannos)

da 14 coaliciones mínimas,

pp psoe
pp pod
pp c's erc dl
pp c's erc pnv
pp c's erc iu bildu
pp c's dl pnv
pp c's dl iu bildu cc
psoe pod c's
psoe pod erc dl
psoe pod erc pnv iu
psoe pod erc pnv bildu
psoe pod dl pnv iu bildu
psoe pod dl pnv iu cc
psoe pod dl pnv bildu cc

y un reparto de poder que queda de esta manera:

CRAN, r-devel, GitHub, Travis CI, pruebas automáticas y todo eso

R

Estoy harto. La gente de CRAN me devolvió (con errores) un paquete que trataba de subir. Había hecho el prescriptivo

R CMD check --as-cran etc.

y el log era una patena. Pero había un par de NOTES al pasar el test sobre la versión de desarrollo de R, r-devel. No solo hay que probar los paquetes en la versión que hay sino también en la que vendrá (tal y como está docuentado).

Pasando data.frames de R como tablas de pandas en Python usando rPython

R

Un usuario de rPython, David González Knowles, me ha facilitado su código para pasar una tabla, iris en este caso, de R a una tabla de pandas en Python usando mi paquete.

En R hay tablas de serie. En Python no. La librería pandas de Python implementa algo parecido a los data.frames. Solo que nada garantiza que un usuario de Python la tenga instalada. Por eso no hay un formato de destino claro y universal para las tablas de R a través de rPython. Y por eso, en Python, si se tiene pandas instalado, el usuario tiene que hacer algo, lo siguiente: