site sans réclame GNU/LinuxDebianÉcrireS'abonner

PSPP: prise en main

L

E logiciel pspp est une application de type GPL permettant l'analyse statistique de données, en reprenant le langage spss et permettant une sortie aux formats HTML, ASCII ou PostScript. Cette page issue de mes notes est écrite pour une prise en main rapide pour la personne qui a un besoin urgent d'un outil compatible avec SPSS. La tendance actuelle chez les statisticiens est plutôt d'utiliser R.

Détour par R

Si une base de données a été fournie sous format .dta, il vous faudra passer par l'application libre R, en installant le paquet r-base. L'application se lance avec R (majuscule) dans une console. Le prompt > apparaît.

help.start() lance la documentation dans le navigateur de l'environnement graphique. Sur un système Linux, la documentation html se trouve à l'adresse (ou similaire): /usr/share/R/doc/html/ ou /usr/share/R/doc/manual/.

Pour importer une base de données .dta de STATA, il faut utiliser la bibliothèque foreign, normalement installée avec r-base (sous le nom de paquetage r-cran-foreign). Les trois lignes qui suivent importe la librairie, assigne les données au format dta à une variable, puis sauvegarde la variable en fichier csv («comma separated values»), sauf que les valeurs seront séparées non par une virgule, mais par une tabulation.

> library(foreign)
> db=read.dta("votre_base.dta")
> write.table(db, file="votre_base.csv", row.names=TRUE, col.names=TRUE, sep="\t")

En GNU/Linux, le chemin est ~/, c'est-à-dire /home/toto pour l'utilisateur toto. Il faudra peut-être indiquer le chemin complet du fichier à importer s'il ne se trouve pas en /home/toto.

Il sera possible d'importer le fichier .csv dans pspp, puiis de le sauvegarder dans le format .sav.

Retour au PSPP

En GNU/Linux, le paquet à installer s'appelle pspp. L'application permet deux formes d'utilisation:

La syntaxe

Une commande complète se termine par un point ou une ligne vide. Pas de différence entre minuscules et majuscules, qu'il s'agisse des commandes, /paramètres, mots-clés, champ ou variables.

Pour une ligne de commentaire, commencer la ligne par l'étoile *. Commencer par COMMENT est également possible, mais le commentaire ne se terminera qu'avec une ligne vide.

ECHO permet la sortie d'une chaîne de caractères

Il est possible d'inclure un fichier dans un fichier de commandes avec

INCLUDE FILE=file-name.

Une seconde manière permet plus de flexibilité:

INSERT FILE=chemin/fichier ERROR=STOP CD=NO SYNTAX=BATCH.

CD=YES force le répertoire actuel à s'aligner sur le répertoire du chemin specified.
ERROR=STOP stoppe le fichier de commande si une erreur est rencontrée. Par defaut: ERROR=CONTINUE
SYNTAX=INTERACTIVE si le fichier est conforme aux conventions de la syntaxe interactive. Par défaut, SYNTAX=BATCH.

Les données

Certaines commandes ont des conséquences irréversibles: il est conseillé de garder une copie du fichier de données original dans un autre répertoire et de sauvegarder à chaque étape les fichiers modifiés (monde150812A.sav, monde150812B.sav, etc.). Je ne peux garantir l'absence d'erreur dans cette page; je vous garantis par ailleurs les approximations: prudence!

Pour charger un fichier, par exemple:

GET FILE=nom_du_fichier.sav
GET DATA /TYPE=GNM /FILE="chemin/fichier-gnumeric".
GET DATA /TYPE=PSQL /FILE="chemin/fichier-postgres".
GET DATA /TYPE=TXT /FILE="chemin/fichier-csv" /DELIMITERS=';'.

Pour un fichier de données délimitées avec une tabulation:

GET TRANSLATE FILE="auto4.txt" /TYPE=TAB /FIELDNAMES. LIST.

/FIELDNAMES suppose que le nom des variables se trouvent sur la première ligne.

Pour les fichiers .xls

GET TRANSLATE FILE="auto.xls" /TYPE=XLS /FIELDNAMES. LIST.

Pour inclure des données dans un fichier de syntaxe:

DATA LIST /X 1-2.
BEGIN DATA.
2
3
5
7
11
13
END DATA.

Sauvegarder

Pour sauvegarder le fichier:

SAVE OUT="chemin/nom_de_fichier.sav".

On peut ajouter /COMPRESSED pour gagner de la place.

Statistiques

Souvenons-nous de la signification des différents concepts statistiques: il ne sert à rien de calculer la moyenne sur une variable à deux étiquettes (M/F) et une fréquence sur une variable réelle risque de renvoyer un très grand nombre de valeurs.

DESCRIPTIVES /VARIABLES=liste de variables

/VARIABLES=taille,poids les variables sont séparées par des virgules, ALL pour toutes. "/VARIABLES=" est optionnel: ALL ou la liste des variables peut suivre directement DESCRIPTIVES.

/STATISTICS accepte MEAN (moyenne arithmétique), STDDEV (écart-type), VARIANCE, MINIMUM, MAXIMUM, SUM, KURTOSIS, SESKEWNESS, SEKURTOSIS, SKEWNESS, RANGE, ou ALL pour tous. Si /STATISTICS n'est pas utilisé, a commande retourne MEAN, STDDEV, MINIMUM et MAXIMUM, ce qui équivaut à /STATISTICS=DEFAULT. «SE~» signifie «Standard Error». N'est valide que pour les variables réelles.

/SORT= permet d'ordonner les valeurs: NONE, MEAN, SEMEAN, STDDEV, VARIANCE, KURTOSIS, SKEWNESS, RANGE, MINIMUM, MAXIMUM, SUM, SESKEWNESS, SEKURTOSIS et NAME qui impose l'ordre alphabétique des noms de variable. Chacun de ces paramètres peut être suivi de (A) pour ascendant ou (D) pour descendant (inverse). Par défaut, la commande retourne /SORT=NONE.

Non traités: /SAVE, /MISSING et FORMAT.

FREQUENCIES /VARIABLES=liste de variables

/VARIABLES=ALL pour toutes les variables; pour en choisir certaines, les écrire séparées par des virgules. "/VARIABLES=" est optionnel: ALL ou la liste des variables peut suivre directement FREQUENCIES.

/STATISTICS accepte MODE, MEDIAN, MEAN (moyenne arithmétique), STDDEV (écart-type), VARIANCE, MINIMUM, MAXIMUM, SUM, KURTOSIS, SESKEWNESS, SEKURTOSIS, SKEWNESS, RANGE, ou ALL pour tous. Si /STATISTICS n'est pas utilisé, la commande retourne MEAN, STDDEV, MINIMUM et MAXIMUM, ce qui équivaut à /STATISTICS=DEFAULT. «SE~» signifie «Standard Error». N'est valide que pour les variables réelles.

/PERCENTILES=x,y,z ajoute aux précédents les valeurs aux percentiles choisis (de 0 à 100, 50 pour la médiane).

/NTILE=n affiche les percentiles tous les 100/n. /NTILES=10 affiche les déciles.

/FORMAT NOTABLE élimine la table des fréquences, LIMIT(n) l'élimine s'il y a plus de valeurs que n. AFREQ, DFREQ, AVALUE et DVALUE s'occupent de trier selon les fréquences ou les valeurs, en ordre direct (A~) ou inverse (D~). NOLABELS escamote les étiquettes, DOUBLE intercale une ligne vide entre les lignes du tableau de fréquences (non traités: STANDARD, CONDENSE, ONEPAGE).

/MISSING=INCLUDE devrait inclure les données manquantes (NSP/NRP) parmi les pourcentages des valeurs valides.

Non traités: PIECHART et HISTOGRAM pour lesquels les png générés n'ont pas été (très) lisibles (pspp 0.6.2).

CROSSTABS var1 BY var2 BY var3

Affiche un croisement de variables. CROSSTABS var1 BY var2 BY var3 n'est pas équivalent à CROSSTABS var1 BY var2,var3, cette dernière étant une façon plus compacte d'écrire et d'afficher les résultats de CROSSTABS var1 BY var2 et CROSSTABS var1 BY var3.

/CELLS permet de décider quel genre de résultats seront affichés. COUNT (par défaut), EXPECTED (% croisement des sommes par colonne et sommes par rangées: effectifs idéaux), RESIDUAL (COUNT - EXPECTED), SRESIDUAL (standardized residual), ASRESIDUAL (adjusted standardized residual), ROW (% distribués sur toute la rangée), COLUMN (% distribués sur toute la colonne), TOTAL (% distribués sur toutes les cellules); ALL donne tous ces paramètres; /CELLS sans autre spécification donne COUNT, ROW, COLUMN et TOTAL; NONE ne donne pas la tableau de croisement.

/MISSING= INCLUDE permet de comptabiliser les manquants dans le tableau croisé.

/STATISTICS= permet de tester. CHISQ (test du Χ²), PHI, CC (coefficient de contingence), LAMBDA, UC (coefficient d'incertitude), BTAU, CTAU, RISK, GAMMA, D, KAPPA, EAT, CORR; ALL les donne tous et NONE aucun; /STATISTICS sans paramètre donne CHISQ. (voir doc pour les bugs).

Non traité: /VARIABLES (integer mode) et le mode /MISSING=REPORT qui s'y réfère; /FORMAT qui semble ne pas fonctionner (pspp 0.6.2)

SPLIT FILE variable.

morcelle un fichier selon les valeurs de la variable précisée. L'exemple suivant donne les tableaux de la fréquence des classes d'âges, un par sexe.

SPLIT FILE sexe.
FREQUENCIES age.

SELECT IF condition.

Élimine les cas qui ne vérifient pas la condition, de façon irréversible si une sauvegarde du fichier est réalisée. TEMPORARY. désactive cette irréversibilité.

SELECT IF sexe=0.

TEMPORARY.

Précise que la commande qui suit n'a d'effet que temporairement. L'exemple suivant donne les fréquences à condition que la variable pays vaut 1:

TEMPORARY.
SELECT IF pays=1.
FREQUENCIES religion.

FILTER BY variable.

Suspend les cas pour lequels la variable précisée est 0 ou de valeur manquante. On peut fabriquer une telle variable avec COMPUTE, ou changer des valeurs d'une variable avec RECODE.

FILTER OFF. annule le filtre, ce qui n'est pas nécessaire si TEMPORARY. avait été placé avant FILTER BY variable.

N OF CASES n

Limite le nombre de cas au n premiers de la base de données.

WEIGHT BY ponderation.

Désigne la variable contenant l'éventuelle pondération: au lieu de valoir pour 1, chaque cas vaudra la valeur réelle indiquée dans la variable. WEIGHT OFF. annule cette façon de compter.

SELECT p FROM n.

SELECT p. sélectionne aléatoirement la proportion p (entre 0 et 1) parmi les cas disponibles.

SELECT p FROM n. sélectionne aléatoirement les cas selon trois possiblités:

SORT CASES BY var1, var2... (D).

Trie de façon irréversible une base de données (TEMPORARY n'a pas d'effet).

Conditions et boucles

Opérateurs relationnels

EQ égal à
NE non égal à
GT strictement plus grand
GE plus grand ou égal
LT strictement plus petit
LE plus petit ou égal

Opérateurs logiques

AND «et» logique
OR «ou» logique
NOT «négation» logique

IF condition variable=expression.

Assigne une expression à une variable si la condition est vérifiée.

Non traité: IF condition vector(index)=expression. ainsi que TEMPORARY (LAG) et LEAVE.

DO IF condition.

Les commandes seront exécutées si la condition est respectée.

ELSE IF condition. commande(s) (facultatif) permet des commande lors d'une autre condition.

ELSE commande(s) (facultatif) les commandes sont exécutées dans tous les autres cas.

END IF. nécessaire pour fermer la structure conditionnelle.

Non traité: l'effet de TEMPORARY. sur IF ou ELSE IF.

LOOP.

Boucle simple.

LOOP variable=debut TO fin BY incr. permet d'incrémenter une variable de debut à fin inclus (par défaut, l'incrémentation est de 1). variable doit être une variable numérique préexistante. si debut est plus grand que fin, l'incrémentation est de -1.

LOOP IF condition. La boucle ne commencera que si la condition est vraie. Si une incrémentation est utilisée en même temps que la condition, la condition dispose de la valeur de la variable incrémentée.

END LOOP IF condition. termine une boucle et peut recevoir une condition de sortie.

BREAK. peut également permettre de sortir d'une boucle LOOP, souvent dans une condition IF.

Si aucune condition de sortie n'est prévue, la boucle est exécutée MXLOOPS fois, à déterminer par SET.

Non traité: LEAVE et TEMPORARY (LAG).