\documentclass[titlepage]{article}
\usepackage[english,francais]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{makeidx}
\makeindex
\title{\Huge \textbf{Introduction au logiciel PSPP~\it{version~0.4.0}
\bigskip
\begin{center}
\includegraphics[]{pspplogo.pdf}
\end{center}
}}
\author{\Large \textbf{Julie Séguéla}}
\date{}
\pagestyle{headings}
\begin{document}

\maketitle




\begin{verbatim}





\end{verbatim}
Merci à Joseph Saint Pierre, ingénieur au CICT, pour l'aide précieuse qu'il a apportée à la rédaction de cette documentation.
\begin{verbatim}































\end{verbatim}
\selectlanguage{english}

	\centerline{Copyright (C) 2006  Julie Séguéla, CICT.}

       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.2
       or any later version published by the Free Software Foundation;
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
       Texts.  A copy of the license is included in the section entitled 
	``GNU Free Documentation License''.

\selectlanguage{francais}

\newpage
\section*{Préambule}

L'objectif de cette documentation n'est pas de présenter de manière exhaustive les commandes du logiciel PSPP. Cette introduction au logiciel présente les commandes essentielles au traitement des gros fichiers de données issus d'enquêtes, dans l'optique d'une analyse ultérieure. Les commandes statistiques qui y sont décrites sont élémentaires, mais aussi fondamentales en tant que base de tout calcul statistique plus avancé.

\smallskip
Pour familiariser l'utilisateur au logiciel, de nombreux exemples simples illustrent les commandes. À la fin de la documentation, on peut trouver un exemple concret présentant une manière d'utiliser le logiciel dans une situation réelle.

\smallskip
 Les commandes qui ne sont pas décrites dans cette documentation peuvent être trouvées dans le manuel GNU PSPP à l'adresse suivante : \\ {\it http://www.gnu.org/software/pspp/manual/}.

\smallskip
PSPP est un logiciel libre en cours de développement. Lors de son utilisation, on rencontre donc quelques bugs qui toutefois n'altèrent pas son efficacité dans le domaine décrit ci-dessus. 




\newpage
\tableofcontents


\newpage
\section{\textsc{Présentation}}

\subsection{La philosophie des logiciels libres}
L'expression {\it logiciel libre} (en anglais {\it free software}), donnée par Richard Stallman, fait référence à quatre libertés pour les utilisateurs ayant acquis une version du logiciel, définies par la licence de ce logiciel :

\begin{itemize}
	\item Liberté 0 : La liberté d'exécuter le programme, pour tous les usages;
	\item Liberté 1 : La liberté d'étudier le fonctionnement du programme;
	\item Liberté 2 : La liberté de redistribuer des copies;
	\item Liberté 3 : La liberté d'améliorer le programme et de publier ses améliorations.
\end{itemize}

Le principe du logiciel libre est le suivant : si on se procure le code source du logiciel, on a le droit de le redistribuer, et on peut le modifier et l'adapter à ses besoins si on le veut. On doit aussi s'assurer que les personnes à qui on fait parvenir le logiciel connaissent ces droits. Enfin, si on apporte des améliorations au logiciel, on doit les rendre publiques.

Les logiciels libres sont protégés par des licences libres garantissant le respect des quatres libertés fondamentales. En 1983, Richard Stallman crée le projet GNU, qui a pour objectif de construire un Unix dont la totalité des sources seraient libres. Parallèlement, il fonde la {\it Free Software Foundation} et rédige avec l'aide d'un avocat la {\it licence publique générale GNU} ({\it GNU General Public License}). Cette licence, la plus connue et utilisée pour les logiciels libres, garantit que tout logiciel dérivé du logiciel protégé soit également placé sous la même licence, et soit donc libre. C'est ainsi qu'un cadre juridique a été créé, encourageant le développement du logiciel libre.

Attention, logiciel {\it libre} ne veut pas forcément dire {\it gratuit}. En effet, la commercialisation du logiciel n'est pas contraire aux libertés fondamentales.


\subsection{Présentation de PSPP}

PSPP, logiciel libre distribué sous les termes de la {\it GNU General
Public License}, est un outil pour l'analyse statistique des données
qui interprète les commandes du langage SPSS. PSPP peut lire et traiter les fichiers SPSS. 

La version la plus récente de PSPP, version 0.4.0, est incomplète, ce
qui rend le logiciel assez pauvre en termes de calcul statistique. PSPP peut donc être utilisé pour les statistiques élémentaires, la gestion et la manipulation des gros fichiers de
données. Par exemple, PSPP peut être utilisé pour transformer et
préparer pour l'étude des fichiers de type dépouillement d'enquêtes,
de sondages, etc.

Si on se place dans le cadre des logiciels libres, l'utilisation du logiciel {\it R} pour les calculs statistiques est compatible avec l'utilisation de PSPP, qui peut effectuer des opérations de gestion de données moins accessibles avec {\it R}. L'annexe~2, section~\ref{annexe}, page~\pageref{annexe}, explique comment travailler avec {\it R} sur des données traitées une première fois avec PSPP.

Une documentation sur PSPP est disponible sur le site du
{\it Projet GNU} à l'adresse
{\it http://www.gnu.org/software/pspp/manual/}.


\subsection{Comment installer PSPP ?}
PSPP est un logiciel qui fonctionne uniquement avec le système
UNIX. Avec le système d'exploitation Windows, une solution est
proposée dans la section 2 de ce paragraphe pour utiliser PSPP. On
peut se procurer le code source de PSPP dans un format compressé
sur le site {\it ftp://ftp.gnu.org/pub/gnu/pspp/}. Il ne faut pas oublier de
décompresser le code source avant de commencer l'installation de PSPP.

\subsubsection{Installer PSPP sous UNIX}

Pour installer PSPP, il faut suivre les étapes suivantes dans
l'ordre (seules les étapes indispensables sont énumérées ici, pour les
étapes optionnelles, consulter la documentation sur le site {\it http://www.gnu.org/software/pspp/manual/}) :
 \begin{enumerate}
\item Se placer dans le répertoire contenant le code source de PSPP.
\item Taper {\it ./configure} pour configurer le système
d'exploitation et le compilateur. Cette opération prend un certain
temps et pendant son déroulement, des messages précisant les
caractéristiques contrôlées apparaissent. 
 \item Taper {\it make} pour compiler.
 \item Taper {\it make check} pour lancer les tests
automatiques sur l'ensemble compilé. 
 \item Taper {\it make install}
pour installer le code binaire de PSPP, par défaut dans
{\it /usr/local/bin/}. Le répertoire {\it /usr/local/share/pspp/}
est créé et contient les fichiers dont PSPP a besoin au cours de
l'exécution. Cette étape entraine aussi l'installation de la
documentation dans le répertoire {\it /usr/local/info/}, mais
seulement si le répertoire existe déjà. 
 \end{enumerate}

\subsubsection{Comment faire avec Windows ?} 

Pour utiliser PSPP sous Windows, il faut installer {\it Cygwin}. {\it Cygwin} est un logiciel qui crée un environnement UNIX sous Windows et offre les utilitaires de GNU. Ainsi, il est possible d'utiliser les logiciels GNU et de porter la plupart des applications UNIX sous Windows. 

Pour installer {\it Cygwin}, on peut se rendre à l'adresse suivante : \\
{\it http://www.cygwin.com}. Attention, au cours du téléchargement, il faut spécifier les paquets à installer. Il est préférable de tout installer afin que Cygwin possède tous les utilitaires indispensables au fonctionnement de PSPP.

\newpage
\subsection{Les commandes UNIX indispensables}
Pour faciliter l'utilisation de PSPP, voici quelques commandes à retenir :
\begin{itemize}
\item \texttt{cd} {\it chemin\_d'accès} : positionne sur le répertoire désigné
\item \texttt{ls} {\it nom\_repertoire} : liste le contenu d'un répertoire (\texttt{-l} : avec informations détaillées)
\item \texttt{pwd} : affiche le répertoire courant
\item \texttt{mkdir} {\it nom\_repertoire} : crée un répertoire
\item \texttt{cp} {\it nom\_fichier nom\_copie} : copie un fichier dans le répertoire courant
\item \texttt{cp} {\it nom\_fichier chemin\_d'accès} : copie un fichier dans le répertoire désigné
\item \texttt{mv} {\it nom\_fichier/nom\_repertoire nouveau\_nom} : renomme un fichier ou un répertoire
\item \texttt{mv} {\it nom\_fichier/nom\_repertoire chemin\_d'accès} : déplace un fichier ou un répertoire dans le répertoire désigné
\item \texttt{ln} {\it nom\_fichier nouveau\_nom} : crée une nouvelle référence pour un fichier
\item \texttt{rm} {\it nom\_fichier/nom\_repertoire} : supprime la référence d'un fichier ou d'un répertoire
\item \texttt{grep} ``{\it expression}'' {\it nom\_fichier}(\texttt{>}{\it nom\_destination}) : affiche les lignes d'un fichier contenant l'expression (\texttt{-i} : majuscules et minuscules identiques ; \texttt{-n} : avec numéros de lignes ; \texttt{-v} : seulement les lignes ne contenant pas l'expression)
\item \texttt{head} {\it nom\_fichier}(\texttt{>}{\it nom\_destination}) : liste les premières lignes d'un fichier (\texttt{-n} : nombre de lignes affichées, 10 par défaut)

\item \texttt{tail} {\it nom\_fichier}(\texttt{>}{\it nom\_destination}) : liste les dernières lignes d'un fichier (\texttt{-n} : nombre de lignes affichées, 10 par défaut)

\item \texttt{wc} {\it nom\_fichier} : affiche le nombre de caractères ou mots ou lignes d'un fichier (\texttt{-c} : nombre de caractères ; \texttt{-w} : nombre de mots ; \texttt{-l} : nombre de lignes)

\end{itemize}

 \subsection{Comment utiliser PSPP ?}

PSPP peut fonctionner en {\it mode ligne}, mais les sections qui suivent présentent une utilisation plus pratique du logiciel.

\subsubsection{Créer un fichier syntaxe}
 On utilise un éditeur pour taper les commandes PSPP dans un fichier syntaxe. Pour ouvrir un fichier avec un éditeur, GNU Emacs par exemple, on tape la commande : 
\begin{verbatim} 
 emacs nom_fichier &
\end{verbatim} 
Avec X Window, le symbole '\texttt{\&}' permet de garder la main pour taper de nouvelles commandes dans le shell UNIX.

On peut utiliser un autre éditeur de texte mais GNU Emacs, créé par Richard Stallman, est l'éditeur de référence dans le monde du logiciel libre. En effet, GNU Emacs présente de nombreuses fonctionnalités qui facilitent la manipulation du texte (coloration syntaxique, commandes d'édition, macros, etc.). De plus, il est possible de partager la zone d'édition en plusieurs fenêtres, ce qui permet à l'utilisateur d'un logiciel d'afficher en même temps le fichier de commandes et le résultat de la compilation. 


\subsubsection{Exécuter un fichier syntaxe}
Pour exécuter un fichier syntaxe, on tape la commande :
\begin{verbatim}
 pspp nom_fichier
\end{verbatim}

Pour exécuter deux fichiers ou plus, on tape la commande :
\begin{verbatim}
 pspp fichier1 fichier2 ...
\end{verbatim}

Entre deux exécutions, le dictionnaire est effacé.
Pour que le dictionnaire ne soit pas effacé entre deux exécutions de fichiers, on tape la commande :
\begin{verbatim}
 pspp fichier1 + fichier2 ...
\end{verbatim}
Le symbole '\texttt{+}' permet de concaténer les deux fichiers qui sont alors exécutés comme un unique fichier.

\bigskip
Il existe un autre moyen d'exécuter un fichier syntaxe si le système d'exploitation le permet. Si PSPP est installé dans le répertoire {\it /usr/local/bin}, on tape la ligne suivante au début du fichier :
\begin{verbatim}
 #! /usr/local/bin/pspp
\end{verbatim}
Si PSPP est installé dans un autre répertoire, on remplace {\it /usr/local/bin} par le chemin d'accès au répertoire.

Ensuite, on tape la ligne suivante dans le shell UNIX :
\begin{verbatim}
 chmod +x nom_fichier
\end{verbatim}
Maintenant, on peut exécuter le fichier en tapant seulement son nom dans le shell UNIX.

Remarque : PSPP ignore toutes les lignes commençant par '\texttt{\#!}'.

 \subsubsection{Visualiser les résultats}
Les résultats obtenus suite à l'exécution d'un fichier sont écrits dans le fichier {\it pspp.list}. On peut visualiser les résultats avec la commande {\it less}, si le système d'exploitation le permet, ou avec d'autres outils comme {\it cat} ou {\it more}. On peut aussi voir les résultats en ouvrant le fichier {\it pspp.list} avec l'éditeur Emacs (en double fenêtre par exemple).

Attention, à chaque nouvelle exécution, le fichier {\it pspp.list} est écrasé par les nouveaux résultats. Pour conserver les derniers résultats obtenus, il faut renommer le fichier {\it pspp.list} en tapant la commande :
\begin{verbatim}
 mv pspp.list nom_fichier
\end{verbatim}

\subsubsection{Editer les résultats}
On peut éditer les résultats obtenus dans le fichier {\it pspp.list} avec Emacs pour les inclure dans un rapport ou une documentation, et éventuellement y apporter des modifications.


\newpage
\section{\textsc{Le langage}}
 Cette section a pour but de décrire les généralités du langage PSPP.

\subsection{Les identifiants}
\label{nom}
Les identifiants sont des noms qui spécifient des variables, des commandes, ou des sous-commandes. Le premier caractère d'un identifiant doit être une lettre, '\texttt{\#}', ou '\texttt{@}'. Les caractères suivants doivent être des lettres, des chiffres, ou l'un des caractères spéciaux suivants : '\texttt{. \_ \$ \# @}'.

Les identifiants peuvent avoir n'importe quelle longueur mais seulement les 64 premiers octets sont significatifs. Un nom écrit en majuscules ou en minuscules représente le même identifiant : \texttt{exemple}, \texttt{EXEMPLE}, \texttt{Exemple}, \texttt{ExEmPlE} sont différentes représentations du même identifiant. Certains identifiants sont réservés et ne peuvent être utilisés que dans certains contextes qui seront précisés ultérieurement. Voici la liste des identifiants réservés :
\begin{verbatim}
  ALL AND BY EQ GE GT LE LT NE NOT OR TO WITH
\end{verbatim}

\subsection{Les mots-clés}
Les mots-clés forment une sous-classe des identifiants.
Les noms des commandes et sous-commandes sont des mots-clés. Les mots-clés peuvent être abrégés par leurs trois (ou plus) premiers caractères, si l'abréviation n'est pas ambiguë. Par exemple : FREQ pour FREQUENCIES\index{FREQUENCIES}, ou DES pour DESCRIPTIVES\index{DESCRIPTIVES}. Les noms de variables peuvent être utilisés comme des mots-clés.

\subsection{Les nombres}
Les nombres sont exprimés en valeurs décimales. La partie décimale est séparée de la partie entière par un point (facultatif). Les nombres peuvent être exprimés en notation scientifique en ajoutant le symbole 'e' suivi d'un exposant en base 10. Ainsi, '\texttt{1.234e3}' représente la valeur '\texttt{1234}'. Les nombres négatifs sont précédés par le signe '\texttt{-}'. Attention, dans les situations où le symbole '\texttt{-}' est attendu, un nombre à première vue négatif est traité comme '\texttt{-}' suivi d'un nombre positif. Aucun espace vide n'est autorisé à l'intérieur d'un nombre, sauf entre le signe '\texttt{-}' et le nombre qui le suit. Voici quelques exemples de nombres : 
\begin{verbatim}
-2   3.14159   7e10  -.45   0.789   560.  3e-5
\end{verbatim}

\subsection{Les chaînes de caractères}
Les chaînes de caractères ({\it strings}) sont spécifiées entre deux apostrophes simples (\texttt{'}) ou doubles (\texttt{''}). Pour inclure dans la chaîne de caractères le type d'apostrophe utilisé, il faut le doubler : \texttt{'L''exemple'}. Dans les chaînes de caractères, les espaces vides et les majuscules sont significatifs.

Les chaînes de caractères peuvent être concaténées en utilisant le symbole '\texttt{+}'. Ainsi, \texttt{''ex'' + 'em' + 'ple'} est équivalent à \texttt{'exemple'}. Après concaténation, la longueur maximale d'une chaîne est de 255 caractères.

\subsection{Les signes de ponctuation et les opérateurs}

\begin{verbatim}
  , / = ( ) + - * ** < <= <> > >= ~= & | .
\end{verbatim}
Ces symboles peuvent apparaître dans la syntaxe des commandes mais le signe '.' est utilisé seulement pour marquer la fin d'une commande. 

\subsection{La structure des commandes}
Les commandes PSPP ont une structure commune. Une commande commence par un nom de commande, comme DATA LIST\index{DATA LIST} ou FREQUENCIES\index{FREQUENCIES}, qui peut être suivi d'une ou plusieurs sous-commandes. De même, ces dernières commencent par un nom de sous-commande et peuvent admettre une ou plusieurs spécifications. Le nom de la sous-commande est séparé de ses spécifications par un signe '\texttt{=}' ou par un espace vide. Les spécifications sont séparées les unes des autres par des virgules ou par des espaces vides. Chaque sous-commande est séparée de la suivante par le symbole '\texttt{/}'. Le moyen le plus commun de marquer la fin d'une commande est de terminer la ligne de commande avec un point. Par défaut, une ligne blanche peut aussi terminer la commande.

\subsection{Les observations manquantes}
\label{missing}
PSPP dispose d'un support spécial pour les valeurs numériques inconnues. Une valeur spéciale, appelée valeur {\it system-missing} et indiquant l'absence de valeur, est attribuée aux observations manquantes. Ainsi, ces dernières sont exclues de l'analyse des données.

La valeur {\it system-missing} n'existe que pour les valeurs numériques ; les chaînes de caractères sont toujours définies par une valeur, même s'il s'agit d'une suite d'espaces.

On peut assigner aux variables de type {\it numeric} ou {\it string} une valeur appelée valeur {\it user-missing}. Les valeurs {\it user-missing} sont traitées comme les valeurs {\it system-missing}, à savoir l'exclusion automatique des analyses. Les variables de type {\it string} de plus de 8 caractères ne peuvent pas avoir de valeur {\it user-missing}. 

  Pour plus de détails sur l'exclusion des valeurs manquantes, référez-vous aux sections décrivant les commandes statistiques.

\subsection{Les variables}

Les données sont stockées dans des variables dont les caractéristiques sont décrites dans les sections qui suivent. Le {\it dictionnaire} contient l'ensemble des variables et de leurs attributs.

\subsubsection{Les attributs des variables}
\label{variable}
\begin{itemize}
\item \textbf{Name} : c'est un identifiant, il doit être différent pour chaque variable. Le dernier caractère d'un nom de variable ne doit pas être '.' : si l'identifiant se trouve en fin de commande, le signe '.' sera interprété comme indiquant la fin de la commande. Le dernier caractère ne doit pas non plus être le symbole '\texttt{\_}' car de tels identifiants sont utilisés par certaines procédures de PSPP. Pour plus d'informations sur les identifiants, reportez-vous à la section~\ref{nom}, page~\pageref{nom}.
\item \textbf{Type} : numérique ({\it numeric}) ou chaîne de caractères ({\it string}).
\item \textbf{Width} : seulement pour les variables de type {\it string}. Les chaînes dont la longueur est inférieure ou égale à huit caractères sont appelées chaînes de caractères courtes ({\it short string variables}). Ces dernières peuvent être utilisées dans certaines procédures où les chaînes dont la longueur est supérieure à huit caractères ({\it long string variables}) ne sont pas admises.
\item \textbf{Position} : les variables sont rangées dans le dictionnaire dans un ordre particulier. Pour voir cet ordre, vous pouvez utiliser la commande\\
 {\it DISPLAY\index{DISPLAY}}, cf.~section~\ref{display}, page~\pageref{display}.
\item \textbf{Missing values} : cf.~section~\ref{missing}, page~\pageref{missing}.
\item \textbf{Variable label} : c'est une chaîne de caractères qui décrit la variable. Cf.~commande {\it VARIABLE LABELS\index{VARIABLE LABELS}}, section~\ref{labels}, page~\pageref{labels}.
\item \textbf{Value label} : c'est une chaîne de caractères associée à une valeur possible de la variable. Cf.~commande {\it VALUE LABELS\index{VALUE LABELS}}, section~\ref{value}, page~\pageref{value}.
\item \textbf{Print format} : affiche la largeur, le format, et pour les variables numériques, le nombre de chiffres dans la partie décimale. Cf.~commande {\it FORMATS\index{FORMATS}}, section~\ref{formats}, page~\pageref{formats}.
\item \textbf{Write format} : similaire à print format, mais utilisé par certaines commandes qui écrivent des fichiers binaires. Cf.~commande {\it FORMATS\index{FORMATS}}, section~\ref{formats}, page~\pageref{formats}.

\end{itemize}

\subsubsection{Les variables connues par PSPP}
Ces variables, dont les valeurs ne peuvent pas être modifiées, sont utilisables seulement dans les expressions :
\begin{itemize}
\item \texttt{\$CASENUM} : numéro de l'observation du moment.
\item \texttt{\$DATE} : date du jour (JJ MMM AA), en format A9.
\item \texttt{\$JDATE} : nombre de jour entre le 15 octobre 1582 et la date du jour.
\end{itemize}

Ces identifiants sont réservés et ne peuvent être utilisés que pour désigner les variables décrites ci-dessus.

\subsubsection{Lister des noms de variables}

Pour faire référence à un ensemble de variables, il faut écrire la liste des noms des variables, en les séparant avec un espace ou une virgule. Pour inclure dans la liste une suite de variables du dictionnaire, il faut écrire le nom de la première variable de la suite, puis '\texttt{TO}', puis le nom de la dernière variable. Ainsi, si le dictionnaire contient les variables suivantes dans cet ordre : NOM, PRENOM, AGE, TAILLE, POIDS, alors '\texttt{PRENOM TO TAILLE}' fait référence à la liste PRENOM, AGE, TAILLE.

'\texttt{TO}' peut aussi être utilisé pour définir une suite de variables ayant la même racine et finissant par des entiers consécutifs. Ainsi, '\texttt{X1 TO X5}' définit une suite de 5 variables : X1, X2, X3, X4, X5. '\texttt{EX008 TO EX011}' définit 4 variables : EX008, EX009, EX010,EX011. Les syntaxes '\texttt{EX001 TO EX4}', et '\texttt{EX5 TO EX1}' ne sont pas valides.

Exemple d'utilisation avec la commande DATA LIST\index{DATA LIST} :
\begin{verbatim}
DATA LIST TABLE /X01 TO X04 1-4 (1).
\end{verbatim}

\subsubsection{Spécifier des noms de fichiers}

Certaines commandes nécessitent la spécification d'un nom de fichier dans une sous-commande {\it FILE} ou {\it OUTFILE}. Par convention, les noms de fichiers sont spécifiés entre apostrophes comme des chaînes de caractères, mais ce n'est pas obligatoire. En revanche, comme pour les chaînes de caractères, les majuscules et minuscules sont significatives dans un nom de fichier.


\newpage
\section{\textsc{Entrer les données}}
 Une observation est un ensemble d'informations correspondant à une unité statistique (``individu'' ou ``cas''). Voici une manière de présenter un ensemble d'observations :

\bigskip
\begin{tabular}{c|c c c}

\textbf{observation} & \textbf{var1} & \textbf{var2} & \textbf{var3} \\
\hline
1 & info11 & info12 & info13 \\

2 & info21 & info22 & info23 \\

3 & info31 & info32 & info33 \\
\end{tabular}

\bigskip
 Cette section décrit les commandes qui permettent de définir des variables, et de lire et écrire des données.

\subsection{DATA LIST\index{DATA LIST}}
\label{data}
DATA LIST\index{DATA LIST} est la commande de lecture des données la plus fondamentale. Cette commande admet plusieurs formes qui sont décrites dans les sections qui suivent.

\subsubsection{DATA LIST FIXED\index{DATA LIST!DATA LIST FIXED}}
\label{fixed}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{DATA LIST [FIXED]}\\
 & \{TABLE,NOTABLE\}\\
 & FILE='filename'\\
 & RECORDS=record\_count\\
 & /var\_list start-end [format\_spec] (ou /var\_list (fortran\_spec)).

\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande DATA LIST FIXED\index{DATA LIST!DATA LIST FIXED} est utilisée pour lire des fichiers de données dont les valeurs sont situées à des positions fixes sur chaque ligne d'un enregistrement. Le mot-clé {\it FIXED} est facultatif.

\bigskip
La sous-commande {\it FILE} doit être utilisée si les données proviennent d'un fichier extérieur. Il faut préciser le nom du fichier source, qui peut être un fichier de type {\it handle} (cf. commande {\it FILE HANDLE\index{FILE HANDLE}}, section~\ref{handle}, page~\pageref{handle}).

Si la sous-commande {\it FILE} n'est pas utilisée, il faut alors spécifier les données à l'aide de la commande {\it BEGIN DATA\index{BEGIN DATA}}, cf.section~\ref{begin}, page~\pageref{begin}.

\bigskip
 Dans la plupart des fichiers, un enregistrement correspond à une ligne. Si ce n'est pas le cas, la sous-commande {\it RECORDS} permet de préciser le nombre de lignes occupées par un enregistrement. Cette sous-commande est facultative, DATA LIST\index{DATA LIST} permet le calcul du nombre de lignes par enregistrement à partir de la spécification des variables.

\bigskip
La commande DATA LIST\index{DATA LIST} peut retourner une table décrivant la manière dont le fichier de données est lu. Par défaut, la table est retournée ({\it TABLE}). Pour ne pas la retourner, on utilise la sous-commande {\it NOTABLE}.

\bigskip
La liste des variables vient en dernier. Si un enregistrement est composé de plusieurs lignes, la spécification des variables de chaque ligne doit commencer par un slash ('\texttt{/}'). Le nombre de variables à lire n'est pas limité.

La spécification des variables consiste en une liste de noms de variables suivis par leur localisation dans la ligne. Pour spécifier la localisation d'une variable dans une ligne, on peut utiliser le style colonne, ou le style {\it FORTRAN}. Avec le style colonne, on indique après le nom de la variable les numéros, séparés par un trait d'union, de la première et de la dernière colonne occupées par la variable. Ainsi, si une variable occupe les cinq premières colonnes, on écrit '\texttt{1-5}'. Par défaut, les variables sont considérées comme étant au format 'F' (format numérique standard). Pour utiliser un autre format pour une variable, il faut le préciser entre parenthèses après le nom et la localisation. Pour le format 'A' (format standard pour les chaînes de caractères), on écrit '\texttt{(A)}'. Un nombre entier peut être lu comme un nombre ayant une partie décimale à d chiffres si on écrit '\texttt{(d)}'. Par exemple, pour que la valeur '\texttt{35689}' soit interprétée comme la valeur '\texttt{35.689}', il faut mettre la notation '\texttt{(3)}'.

\bigskip
\textbf{Exemple 1}

\begin{verbatim}
DATA LIST
    FILE=exemple1
    /NOM 1-10 (A) PRENOM 12-21 (A) SEXE 23 AGE 25-27 TAILLE 29-31 (2).
\end{verbatim}

Cette commande définit les variables suivantes :
\begin{itemize}
\item NOM : une chaîne de 10 caractères, de la colonne 1 à la colonne 10 ;
\item PRENOM : une chaîne de 10 caractères, de la colonne 12 à la colonne 21 ;
\item SEXE : une variable numérique, dans la colonne 23 ;
\item AGE : une variable numérique, de la colonne 25 à la colonne 27 ;
\item TAILLE : une variable numérique, de la colonne 29 à la colonne 31. Les données concernant la taille sont entrées en centimètres et sont lues en mètres.
\end{itemize}

\bigskip
Les données lues se trouvent dans le fichier 'exemple1' :
\begin{verbatim}
Dupont     Pierre     1  24 183 
Durant     Sophie     2  32 168
Boyer      Danielle   2  42 163
\end{verbatim}

\newpage
La sortie est la suivante :
\begin{verbatim}
1.1 DATA LIST.  Reading 1 record from file exemple1.
+--------+------+-------+------+
|Variable|Record|Columns|Format|
#========#======#=======#======#
|NOM     |     1|  1- 10|A10   |
|PRENOM  |     1| 12- 21|A10   |
|SEXE    |     1| 23- 23|F1.0  |
|AGE     |     1| 25- 27|F3.0  |
|TAILLE  |     1| 29- 31|F3.2  |
+--------+------+-------+------+
\end{verbatim}


\textbf{Exemple 2}
\begin{verbatim}
DATA LIST
    FIL=exemple2
    REC=2
    /QUES01 TO QUES05 1-5
    /QUES06 TO QUES10 1-5.
\end{verbatim}

Cette commande définit les variables numériques QUES01, QUES02, QUES03, QUES04, QUES05 sur la première ligne de l'enregistrement, et les variables numériques QUES06, QUES07, QUES08, QUES09, QUES10 sur la deuxième ligne. 

\bigskip
Les données sont extraites du fichier 'exemple2' :
\begin{verbatim}
00001
22550
22244
88569
54662
57745
\end{verbatim}

La sortie est la suivante :
\begin{verbatim}
1.1 DATA LIST.  Reading 2 records from file exemple2.
+--------+------+-------+------+
|Variable|Record|Columns|Format|
#========#======#=======#======#
|QUES01  |     1|  1-  1|F1.0  |
|QUES02  |     1|  2-  2|F1.0  |
|QUES03  |     1|  3-  3|F1.0  |
|QUES04  |     1|  4-  4|F1.0  |
|QUES05  |     1|  5-  5|F1.0  |
|QUES06  |     2|  1-  1|F1.0  |
|QUES07  |     2|  2-  2|F1.0  |
|QUES08  |     2|  3-  3|F1.0  |
|QUES09  |     2|  4-  4|F1.0  |
|QUES10  |     2|  5-  5|F1.0  |
+--------+------+-------+------+
\end{verbatim}


\subsubsection{DATA LIST FREE\index{DATA LIST!DATA LIST FREE}}
\label{free}
\textbf{syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{DATA LIST FREE}\\
 & ('c1','c2',...)\\
 & \{NOTABLE,TABLE\}\\
 & FILE='filename'\\
 & /var\_list [format\_spec] (ou /var\_list *).

\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande DATA LIST FREE\index{DATA LIST!DATA LIST FREE} est utilisée pour lire des fichiers où les données sont écrites dans un format ``libre'', c'est-à-dire des fichiers où les données n'ont pas d'emplacement précis dans une ligne. De plus, le nombre de lignes pour un enregistrement n'est pas défini. En format libre, le fichier de données est structuré comme une série de caractères groupés, séparés par des espaces, des tabulations, des virgules ou des retours à la ligne. Un espace simple entre deux groupes de caractères est considéré comme n'appartenant à aucun groupe. Les suites d'espaces, tabulations et retours a la ligne sont équivalents à des espaces simples dans le rôle de séparation des groupes de caractères.

Des délimiteurs de groupes peuvent être spécifiés explicitement par l'utilisateur. Ces derniers doivent être des chaînes à un seul caractère. Immédiatement après le mot-clé FREE, il faut écrire la liste des nouveaux délimiteurs entre parenthèses, et séparés par des virgules. Si des délimiteurs sont explicitement spécifiés, seulement les caractères donnés et les retours à la ligne peuvent séparer les groupes.

\bigskip
Les sous-commandes {\it NOTABLE} et {\it TABLE} sont les mêmes que pour la commande {\it DATA LIST FIXED\index{DATA LIST!DATA LIST FIXED}} (cf.~section~\ref{fixed}, page~\pageref{fixed}). Par défaut, la sous-commande NOTABLE est active.

\bigskip
On définit les variables en écrivant la liste des noms des variables après un slash ('\texttt{/}'). Après chaque nom de variable, on peut spécifier le format (FORTRAN) de la variable entre parenthèses. Le symbole '\texttt{*}' peut être utilisé pour indiquer que toutes les variables qui précèdent sont au format '\texttt{F8.0}'. Si rien n'est spécifié après les noms de variables, le format par défaut est '\texttt{F8.0}'.

\bigskip
\textbf{Exemple1}
\begin{verbatim}
DATA LIST FREE ('>')
   TABLE
   FILE=exemple3
   /SEXE (A1) AGE (F2.0) TAILLE (F4.2).
\end{verbatim}

\newpage
Données du fichier 'exemple3' :
\begin{verbatim}
h>20>1.85>f>35>1.67>f>42>1.71>h>23>1.95>h>13>1.70>f>18>1.65
f>16>1.70>h>36>1.82>h>47
1.86>f>24>1.72>f>31>1.62>h>52>1.93   
\end{verbatim}

À partir des données ci-dessus, cette commande définit les variables suivantes : 
\begin{itemize}
\item SEXE : chaîne de un caractère ;
\item AGE : nombre entier à deux chiffres ;
\item TAILLE : nombre décimal à trois chiffres, dont deux après la virgule.
\end{itemize}
Les valeurs des variables sont séparées par le caractère '\texttt{>}'.

\bigskip
La sous-commande TABLE provoque la sortie suivante :
\begin{verbatim}
1.1 DATA LIST.  Reading free-form data from file exemple3.
+--------+------+
|Variable|Format|
#========#======#
|SEXE    |A1    |
|AGE     |F2.0  |
|TAILLE  |F4.2  |
+--------+------+
\end{verbatim}

\textbf{Exemple 2}

\begin{verbatim}
DATA LIST FREE 
   FILE=exemple3bis 
   /X1 TO X4.
\end{verbatim}


Données du fichier exemple3bis :
\begin{verbatim}
1 4  52 5  5  6 61 4 7 5 12 5 1 5
85 4 1   2 72 3   1 4 23 5
\end{verbatim}

Cet exemple illustre la lecture des données en format ``libre''. À partir des données ci-dessus, les variables X1, X2, X3 et X4 sont créées (elles prennent le format '\texttt{F8.0}'). À titre d'exemple, la variable X2 prend les valeurs \texttt{4 6 5 5 2 4}.

\subsubsection{DATA LIST LIST\index{DATA LIST!DATA LIST LIST}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{DATA LIST LIST}\\
 & ('c1','c2',...)\\
 & \{NOTABLE,TABLE\}\\
 & FILE='filename'\\
 & /var\_list [format\_spec] (ou /var\_list *).
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande DATA LIST LIST\index{DATA LIST!DATA LIST LIST} est équivalente à la commande {\it DATA LIST FREE\index{DATA LIST!DATA LIST FREE}} (cf.~section~\ref{free}, page~\pageref{free}). La seule différence est que chaque enregistrement doit correspondre à exactement une ligne.

\subsection{BEGIN DATA\index{BEGIN DATA}}
\label{begin}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{BEGIN DATA.}\\
 ...\\
\multicolumn{2}{l}{END DATA.}
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande BEGIN DATA\index{BEGIN DATA} est utilisée pour entrer des données ASCII dans un fichier syntaxe à exécuter avec PSPP. Cette commande doit être précédée par la commande {\it DATA LIST\index{DATA LIST}}, qui permet de définir au préalable les variables à lire (cf.~section~\ref{data}, page~\pageref{data}). L'utilisation de BEGIN DATA\index{BEGIN DATA} est compatible avec les trois commandes DATA LIST\index{DATA LIST}, les données tapées dans le fichier syntaxe sont lues comme les données d'un fichier input. Si la commande BEGIN DATA\index{BEGIN DATA} est utilisée, aucun fichier input ne doit être spécifié.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST LIST NOTABLE /SEXE (A1) AGE (F3) INFO1 TO INFO3 (F1).
BEGIN DATA.
   f  24 2  3 1
 h  37  1  1 2
  h  31  1  3  2
   f 43  3   3 1
END DATA.
\end{verbatim}


La commande BEGIN DATA\index{BEGIN DATA} définit quatre observations :

\bigskip
\begin{tabular}{c|c c c c c}

\textbf{observation} & \textbf{SEXE} & \textbf{AGE} & \textbf{INFO1} & \textbf{INFO2} & \textbf{INFO3} \\
\hline
1 & f & 24 & 2 & 3 & 1 \\

2 & h & 37 & 1 & 1 & 2 \\

3 & h & 31 & 1 & 3 & 2 \\

4 & f & 43 & 3 & 3 & 1 
\end{tabular}

\newpage
\subsection{FILE HANDLE\index{FILE HANDLE}}
\label{handle}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{FILE HANDLE handle\_name}\\
 & /NAME='filename'\\
 & /MODE=\{CHARACTER,IMAGE\}\\
 & /LRECL=rec\_length.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
On utilise la commande FILE HANDLE\index{FILE HANDLE} pour associer un identifiant ({\it handle name}) à un fichier. Dans les sous-commandes accédant à des fichiers, on peut ainsi spécifier un fichier en se référant à son nom de fichier handle. Comme les noms des fichiers texte peuvent être directement spécifiés dans ces sous-commandes, FILE HANDLE\index{FILE HANDLE} n'est nécessaire que pour les fichiers ne contenant pas des lignes de texte. Cependant, il peut être pratique d'utiliser la commande FILE HANDLE\index{FILE HANDLE} pour des fichiers textes car elle permet d'y faire référence de manière plus simple.

Un nom de fichier handle ne doit être utilisé que pour un seul fichier. Dans la ligne de commande, le nom de l'identifiant vient immédiatement après FILE HANDLE\index{FILE HANDLE}.

\bigskip
La seule sous-commande obligatoire est {\it NAME}. Elle permet de préciser le nom du fichier associé au fichier handle. Ici, les apostrophes sont obligatoires pour spécifier le nom du fichier.

\bigskip
La sous-commande {\it MODE} spécifie le type de fichier auquel on fait référence avec le fichier handle. Le mode par défaut est le mode {\it CHARACTER}, le fichier de données est ouvert en mode texte ANSI C, de telle sorte que chaque ligne de texte soit lue comme un enregistrement.

Le mode {\it IMAGE} est utilisé pour ouvrir des fichiers de données en mode binaire ANSI C, les enregistrements ont une longueur fixe. Si on choisit le mode IMAGE, il faut préciser la longueur des enregistrements avec la sous-commande {\it LRECL}. Par défaut, la longueur d'un enregistrement est de 1024 octets.

\bigskip
\textbf{Exemple}
\begin{verbatim}
FILE HANDLE EX5
   /NAME='exemple5'
   /MODE=CHARACTER.
DATA LIST FILE=EX5 /X1 TO X7 1-35.
\end{verbatim}

La commande FILE HANDLE\index{FILE HANDLE} définit EX5 comme le fichier handle du fichier 'exemple5'. La sous-commande MODE indique que le fichier contient des données en mode CHARACTER. La sous-commande FILE de la commande DATA LIST\index{DATA LIST} fait référence au fichier handle défini précédemment.

\newpage
\section{\textsc{Les sorties de données}}

\subsection{LIST\index{LIST}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{LIST}\\
 & [/VARIABLES=]var\_list\\
 & /CASES=FROM start\_index TO end\_index BY incr\_index\\
 & /FORMAT=\{UNNUMBERED,NUMBERED\}.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande LIST\index{LIST} affiche dans le fichier listing ({\it pspp.list}) les valeurs des variables spécifiées. La sous-commande {\it VARIABLES} indique la liste des variables dont les valeurs doivent être affichées (le mot-clé VARIABLES est facultatif). Si cette sous-commande n'est pas précisée, alors les valeurs de toutes les variables sont affichées.

\bigskip
La sous-commande {\it CASES} peut être utilisée pour préciser l'ensemble des observations à afficher. On écrit {\it FROM} et le numéro de la première observation à afficher, puis {\it TO} et le numéro de la dernière observation à afficher. {\it BY} indique le nombre d'observations à passer entre deux affichages. Si CASES n'est pas spécifiée, alors toutes les observations sont affichées.

\bigskip
La sous-commande {\it FORMAT} permet de modifier la sortie : {\it NUMBERED} affiche le numéro des observations. Par défaut, les numéros ne sont pas précisés ({\it UNNUMBERED}).

La première observation porte le numéro 1.


\bigskip
\textbf{Exemple}
\begin{verbatim}
DATA LIST LIST NOTABLE /SEXE (A1) AGE (F2) INFO1 TO INFO3 (F1).
BEGIN DATA.
f  24  2 3 1
   h  37 1 1 2
 h  31 1  3 2
f 43 3  3 1
 f    14 1  2 2
  h  50  2  3 3
 f  22  3 3 2
END DATA.
LIST SEXE AGE INFO3 /CASES=FROM 1 TO 7 BY 2 /FORMAT=NUMBERED. 
\end{verbatim}

On imprime une observation sur deux pour les variables SEXE, AGE et INFO3. Le numéro de ces observations est précisé à l'aide du mot-clé {\it NUMBERED}.

\newpage
On obtient la sortie suivante :
\begin{verbatim}
Case# SEXE AGE INFO3
----- ---- --- -----
    1    f  24     1 
    3    h  31     2 
    5    f  14     2 
    7    f  22     2 

\end{verbatim}
\subsection{PRINT\index{PRINT}}
\label{print}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{PRINT}\\
 & OUTFILE='filename'\\
 & RECORDS=n\_lines\\
 & \{NOTABLE,TABLE\}\\
 & /'string' [start-end]\\
 &  {\it ou} var\_list start-end [format\_spec]\\
 &  {\it ou} var\_list (fortran\_spec)\\
 &  {\it ou} var\_list *.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip

La commande PRINT\index{PRINT} affiche dans un fichier output les valeurs prises par les variables pour chaque observation. PRINT\index{PRINT} est exécutée lorsqu'une commande entraine l'analyse des données. Pour exécuter PRINT\index{PRINT} sans spécifier une telle commande, on fait suivre PRINT\index{PRINT} par la commande {\it EXECUTE\index{EXECUTE}}.

Toutes les sous-commandes sont optionnelles.

\bigskip
La sous-commande {\it OUTFILE} spécifie le fichier où la sortie est imprimée. On doit indiquer le nom du fichier, qui peut être un fichier {\it handle} (cf.~commande {\it FILE HANDLE\index{FILE HANDLE}}, section~\ref{handle}, page~\pageref{handle}). Si le fichier sortie n'est pas précisé, les valeurs sont affichées dans le fichier listing ({\it pspp.list}).

\bigskip
{\it RECORDS} indique le nombre de lignes affichées par observation.

\bigskip
{\it TABLE} entraine l'affichage dans le fichier listing d'un tableau décrivant ce qui est imprimé dans le fichier sortie. Par défaut, le tableau n'est pas affiché ({\it NOTABLE}).

\bigskip
Un enregistrement peut être affiché sur plusieurs lignes. On introduit chaque ligne d'un enregistrement avec un slash ('\texttt{/}'), suivi des noms des variables à afficher sur cette ligne.

Il est possible d'afficher des chaînes de caractères sur les lignes d'un enregistrement. On peut spécifier la position de ces chaînes de caractères en indiquant la colonne de départ et la colonne de fin.

Les variables à afficher peuvent être spécifiées de la même manière qu'elles le sont dans la commande DATA LIST FIXED\index{DATA LIST!DATA LIST FIXED}, cf.~section~\ref{fixed}, page~\pageref{fixed}. De plus, si la liste des variables est suivie par le symbole '\texttt{*}', les variables sont alors affichées avec le format du dictionnaire, et séparées par des espaces. Si la liste des variables est terminée par un slash ou un point, l'affichage est le même qu'avec le signe '\texttt{*}'.

\bigskip
\textbf{Exemple 1}
\begin{verbatim}
DATA LIST NOTABLE FILE=exemple6 /SEXE 1 (A) AGE 3-4 TAILLE 6-8 (2).
PRINT TABLE /SEXE TAILLE *.
EXECUTE.
\end{verbatim}

Données du fichier 'exemple6' :
\begin{verbatim}
h 20 185 
f 35 167 
f 42 171 
h 23 195 
h 13 170 
f 18 165 
f 16 170 
h 36 182 
\end{verbatim}

Cette commande entraine l'affichage d'un tableau descriptif et des valeurs prises par les variables SEXE et TAILLE. Cet affichage se fait dans le fichier listing. 

On obtient la sortie suivante :
\begin{verbatim}
1.1 PRINT.  Writing 1 record(s) to the listing file.
+--------+------+-------+------+
|Variable|Record|Columns|Format|
#========#======#=======#======#
|SEXE    |     1|  1-  1|A1    |
|TAILLE  |     1|  3-  6|F4.2  |
+--------+------+-------+------+
h 1.85 
f 1.67 
f 1.71 
h 1.95 
h 1.70 
f 1.65 
f 1.70 
h 1.82
\end{verbatim}


\textbf{Exemple 2}
\begin{verbatim}
DATA LIST NOTABLE /SEXE 1 (A) AGE 3-4 TAILLE 6-8 (2).
BEGIN DATA.
h 20 185 
f 35 167 
f 42 171 
h 23 195  
END DATA.
PRINT OUTFILE=exemple7 RECORDS=3 /SEXE 1 (A) /AGE 3-4 /TAILLE 6-9 (2).
EXECUTE.
\end{verbatim}

La sortie est imprimée dans le fichier 'exemple7'. Un enregistrement est composé de trois lignes.

La sortie obtenue est la suivante :
\begin{verbatim}
h
  20
     1.85
f
  35
     1.67
f
  42
     1.71
h
  23
     1.95
\end{verbatim}

\subsection{WRITE\index{WRITE}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{WRITE}\\
 & OUTFILE='filename'\\
 & RECORDS=n\_lines\\
 & \{NOTABLE,TABLE\}\\
 & /'string' [start-end]\\
 &  {\it ou} var\_list start-end [format\_spec]\\
 &  {\it ou} var\_list (fortran\_spec)\\
 &  {\it ou} var\_list *.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande WRITE\index{WRITE} permet d'écrire dans un fichier sortie des données binaires ou du texte. Cette commande est similaire à la commande PRINT\index{PRINT} (cf.~section~\ref{print}, page~\pageref{print}) au niveau syntaxe et utilisation. La principale différence entre ces deux commandes est que PRINT\index{PRINT} utilise des formats print ({\it print formats}), et WRITE\index{WRITE} des formats write ({\it write formats}).

WRITE\index{WRITE} est exécutée lorsqu'une commande entraine l'analyse des données. Pour exécuter WRITE\index{WRITE} sans spécifier une telle commande, on fait suivre WRITE\index{WRITE} par la commande {\it EXECUTE\index{EXECUTE}}.


Se référer à la commande {\it FILE HANDLE\index{FILE HANDLE}} (section~\ref{handle}, page~\pageref{handle}) pour des informations sur la manière de déclarer un fichier binaire.


\newpage
\section{\textsc{La manipulation des variables}}
\label{manip}
Cette section présente des commandes utiles pour la gestion des variables.

\subsection{DISPLAY\index{DISPLAY}}
\label{display}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{DISPLAY} \\
 & \{NAMES,INDEX,LABELS,VARIABLES,DICTIONARY\}\\
 & [var\_list].
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande DISPLAY\index{DISPLAY} affiche dans le fichier listing les informations demandées sur les variables du dictionnaire. On peut choisir de décrire seulement certaines variables en indiquant la liste de leurs noms à la fin de la ligne de commande.

\bigskip
Les variables sont affichées dans l'ordre où elles apparaissent dans le dictionnaire.

Un des mots-clés de la liste suivante peut être utilisé pour spécifier les informations à afficher :
\begin{itemize}
\item {\it NAMES} : les noms des variables sont affichés.
\item {\it INDEX} : les noms des variables et leurs positions dans le dictionnaire sont affichés.
\item {\it LABELS} : les noms des variables, les positions et les labels des variables (cf.~commande {\it VARIABLE LABELS\index{VARIABLE LABELS}}, section~\ref{labels}, page~\pageref{labels}) sont affichés.
\item {\it VARIABLES} : les noms des variables, les positions, les formats (cf.~commande {\it FORMATS\index{FORMATS}}, section~\ref{formats}, page~\pageref{formats}) et les valeurs manquantes (cf.~commande {\it MISSING VALUES\index{MISSING VALUES}}, section~\ref{miss}, page~\pageref{miss}) sont affichés.
\item {\it DICTIONARY} : les noms des variables, les positions, les formats, les valeurs manquantes, les labels des variables et les labels des valeurs (cf.~commande {\it VALUE LABELS\index{VALUE LABELS}}, section~\ref{value}, page~\pageref{value}) sont affichés.
\end{itemize}

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE
	 FILE=exemple8
	/NOM 1-10 (A) PRENOM 12-21 (A) SEXE 23 AGE 25-27 TAILLE 29-31 (2).
DISPLAY VARIABLES NOM TO SEXE TAILLE.
\end{verbatim}
\newpage
Cette commande affiche la description des variables NOM, PRENOM, SEXE et TAILLE. On obtient la sortie suivante :
\begin{verbatim}
1.1 DISPLAY.  
+--------+-------------------------------------------+--------+
|Variable|Description                                |Position|
#========#===========================================#========#
|NOM     |Format: A10                                |       1|
+--------+-------------------------------------------+--------+
|PRENOM  |Format: A10                                |       2|
+--------+-------------------------------------------+--------+
|SEXE    |Format: F1.0                               |       3|
+--------+-------------------------------------------+--------+
|TAILLE  |Format: F4.2                               |       5|
+--------+-------------------------------------------+--------+
\end{verbatim}

\subsection{VARIABLE LABELS\index{VARIABLE LABELS}}
\label{labels}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{VARIABLE LABELS} \\
 & var\_list 'var\_label'\\
 & [/var\_list 'var\_label']\\
 & ...\\
 & [/var\_list 'var\_label'].
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
VARIABLE LABELS\index{VARIABLE LABELS} associe un nom, qui peut avoir un rôle explicatif, à une ou plusieurs variables. Ce nom, appelé {\it label}, est affiché avec les résultats des analyses statistiques.

\bigskip
Pour donner un nom à un groupe de variables, on écrit la liste des variables que l'on fait suivre du nom, spécifié comme une chaîne de caractères. On peut donner des labels à plusieurs variables, ou groupes de variables, dans une même commande en séparant les listes de variables avec un slash ('\texttt{/}').

\bigskip
\textbf{Exemple}
\begin{verbatim}
DATA LIST LIST NOTABLE /INFO1 TO INFO3 *.
BEGIN DATA.
24 161 50
 37 170 55
  31 165 48
   43 183 75
END DATA.
VARIABLE LABELS INFO1 'Age' /INFO2 'Taille en cm' /INFO3 'Poids en kg'.
DISPLAY LABELS.
\end{verbatim}

\bigskip
On assigne des labels aux variables INFO1, INFO2 et INFO3. La commande DISPLAY\index{DISPLAY} affiche la sortie suivante dans le fichier listing :
\begin{verbatim}
1.1 DISPLAY.  
+--------+-------------------------------------------+--------+
|Variable|Label                                      |Position|
#========#===========================================#========#
|INFO1   |Age                                        |       1|
+--------+-------------------------------------------+--------+
|INFO2   |Taille en cm                               |       2|
+--------+-------------------------------------------+--------+
|INFO3   |Poids en kg                                |       3|
+--------+-------------------------------------------+--------+
\end{verbatim}

\subsection{VALUE LABELS\index{VALUE LABELS}}
\label{value}
\bigskip
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{VALUE LABELS} \\
 & /var\_list value 'label' [value 'label']...\\
 & /...
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
VALUE LABELS\index{VALUE LABELS} permet d'associer des ``étiquettes'' (ou labels) aux valeurs de variables numériques ou de type {\it short string} (cf.~section~\ref{variable}, page~\pageref{variable}). Les chaînes de caractères longues ne peuvent pas avoir de label.

\bigskip
Pour donner des labels à un ensemble de valeurs, il faut spécifier la liste des noms des variables dont les valeurs possibles sont les mêmes après un slash ('\texttt{/}'), suivie de la liste des valeurs et de leurs labels.

\bigskip
Si une valeur possède déjà un label, le nouveau label écrase l'ancien. On peut utiliser la commande {\it ADD VALUE LABELS\index{ADD VALUE LABELS}} (cf.~section~\ref{add}, page~\pageref{add}) pour ajouter un label sans effacer le label déjà existant.

\bigskip
\textbf{Exemple}
\begin{verbatim}
DATA LIST NOTABLE FILE=exemple10 /SEXE 1 CAT 4.
VARIABLE LABELS CAT 'Categorie socio-professionnelle'.
VALUE LABELS 
    /SEXE 0 'Homme' 1 'Femme' 
    /CAT 1 'Agriculteur' 2 'Artisan' 3 'Commercant' 4 'Chef d''entreprise' 
         5 'Profession liberale' 6 'Cadre' 7 'Profession intermediaire' 
         8 'Employe' 9 'Ouvrier'.
DISPLAY DICTIONARY.
\end{verbatim}

\newpage
On attribue le label 'Categorie socio-professionnelle' à la varible CAT. La commande VALUE LABELS\index{VALUE LABELS} explique les valeurs prises par les variables. La commande DISPLAY\index{DISPLAY} DICTIONARY donne la sortie suivante : 
\begin{verbatim}
1.1 DISPLAY.  
+--------+-----------------------------------------+--------+
|Variable|Description                              |Position|
#========#=========================================#========#
|SEXE    |Format: F1.0                             |       1|
|        +-----+-----------------------------------+        |
|        |    0|Homme                              |        |
|        |    1|Femme                              |        |
+--------+-----+-----------------------------------+--------+
|CAT     |Categorie socio-professionnelle          |       2|
|        |Format: F1.0                             |        |
|        +-----+-----------------------------------+        |
|        |    1|Agriculteur                        |        |
|        |    2|Artisan                            |        |
|        |    3|Commercant                         |        |
|        |    4|Chef d'entreprise                  |        |
|        |    5|Profession liberale                |        |
|        |    6|Cadre                              |        |
|        |    7|Profession intermediaire           |        |
|        |    8|Employe                            |        |
|        |    9|Ouvrier                            |        |
+--------+-----+-----------------------------------+--------+
\end{verbatim}

\subsection{ADD VALUE LABELS\index{ADD VALUE LABELS}}
\label{add}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{ADD VALUE LABELS} \\
 & /var\_list value 'label' [value 'label']...\\
 & /...
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
ADD VALUE LABELS\index{ADD VALUE LABELS} a la même syntaxe et le même rôle que VALUE LABELS\index{VALUE LABELS} (cf.~section~\ref{value}, page~\pageref{value}), la seule différence est que si un label existe déjà pour une valeur, le nouveau label n'efface pas l'ancien.

\bigskip
\textbf{Exemple}
\begin{verbatim}
DATA LIST FREE FILE=exemple11 /PAYS1 TO PAYS3 (A3).
ADD VALUE LABELS PAYS1 TO PAYS3
	'FRA' 'France' 'ESP' 'Espagne' 'ALL' 'Allemagne' 
	'ITA' 'Italie' 'POR' 'Portugal'.
\end{verbatim}

Données du fichier exemple11 :
\begin{verbatim}
FRA ITA POR
ESP FRA ESP ALL
ALL ITA 
\end{verbatim}

Les valeurs possibles pour les variables PAYS1, PAYS2 et PAYS3 sont 'FRA', 'ESP', 'ALL', 'ITA', et 'POR'. À chaque valeur est attribu\'e un label.

\subsection{RENAME VARIABLES\index{RENAME VARIABLES}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{RENAME VARIABLES} \\
 & (old\_names=new\_names) ...
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande RENAME VARIABLES\index{RENAME VARIABLES} permet de changer le nom d'une ou de plusieurs variables. Il faut sp\'ecifier entre parenth\`eses la liste des anciens noms et la liste des nouveaux noms, en les s\'eparant avec le signe '\texttt{=}'. À l'int\'erieur des parenth\`eses, il doit y avoir autant de noms anciens que de noms nouveaux. On peut sp\'ecifier plusieurs groupes de noms entre parenth\`eses.

RENAME VARIABLES\index{RENAME VARIABLES} prend effet imm\'ediatement.

\bigskip
\textbf{Exemple1}
\begin{verbatim}
DATA LIST
   FILE=exemple1 
   /NOM 1-10 (A) PRE 12-21 (A) SEX 23 AGE 25-27 TAI 29-31 (2).
RENAME VARIABLES (PRE SEX TAI=PRENOM SEXE TAILLE).
DISPLAY NAMES.
\end{verbatim}
\textbf{Exemple2}
\begin{verbatim}
DATA LIST
   FILE=exemple1 
   /NOM 1-10 (A) PRE 12-21 (A) SEX 23 AGE 25-27 TAI 29-31 (2).
RENAME VARIABLES (PRE=PRENOM) (SEX=SEXE) (TAI=TAILLE).
DISPLAY NAMES.
\end{verbatim}

Les deux exemples effectuent les m\^emes changements de noms de deux mani\`eres diff\'erentes. PRE devient PRENOM, SEX devient SEXE et TAI devient TAILLE.

\newpage
On obtient donc la m\^eme sortie pour les deux exemples :
\begin{verbatim}
1.1 DATA LIST.  Reading 1 record from file exemple1.
+--------+------+-------+------+
|Variable|Record|Columns|Format|
#========#======#=======#======#
|NOM     |     1|  1- 10|A10   |
|PRE     |     1| 12- 21|A10   |
|SEX     |     1| 23- 23|F1.0  |
|AGE     |     1| 25- 27|F3.0  |
|TAI     |     1| 29- 31|F3.2  |
+--------+------+-------+------+

Variable
---------
NOM
PRENOM
SEXE
AGE
TAILLE
\end{verbatim}

\subsection{MISSING VALUES\index{MISSING VALUES}}
\label{miss}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{MISSING VALUES} \\
 & var\_list (missing\_values).
\end{tabular}

\bigskip
\noindent
'missing\_values' peut prendre une des formes suivantes :

num1

num1, num2

num1, num2, num3

num1 THRU num2

num1 TRHU num2, num3

string1

string1, string2

string1, string2, string3

\bigskip
\textbf{Description}

\bigskip
La commande MISSING VALUES\index{MISSING VALUES} permet à l'utilisateur de déclarer des valeurs manquantes pour les variables numériques ou de type string à moins de huit caractères. Ainsi, ces valeurs déclarées manquantes sont exclues des analyses.

\bigskip
On spécifie une variable, ou une liste de variables, suivie de la liste des valeurs manquantes entre parenthèses. La liste des valeurs manquantes peut comprendre jusqu'à trois valeurs discrètes, ou une suite de valeurs numériques définie par le mot-clé {\it THRU} (qui peut être accompagnée d'une valeur numérique discrète).

Les mots-clés {\it LOWEST} et {\it HIGHEST}, dont les abréviations respectives sont {\it LO} et {\it HI}, peuvent être utilisés en combinaison avec THRU pour indiquer la valeur numérique la plus faible ou la plus élevée.

Cette commande prend effet immédiatement.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple14 /Q1 TO Q6 1-6.
MISSING VALUES Q1 TO Q3 (9) Q4 Q6 (5 THRU HI, 0).
DISPLAY VARIABLES.
\end{verbatim}

La valeur 9 est déclarée manquante pour les variables numériques Q1, Q2 et Q3. Pour les variables Q4 et Q6, les valeurs supérieures ou égales 5, ainsi que la valeur 0, sont déclarées manquantes.

DISPLAY\index{DISPLAY} VARIABLES permet d'afficher la sortie suivante :
\begin{verbatim}
1.1 DISPLAY.  
+--------+-------------------------------------------+--------+
|Variable|Description                                |Position|
#========#===========================================#========#
|Q1      |Format: F1.0                               |       1|
|        |Missing Values: 9                          |        |
+--------+-------------------------------------------+--------+
|Q2      |Format: F1.0                               |       2|
|        |Missing Values: 9                          |        |
+--------+-------------------------------------------+--------+
|Q3      |Format: F1.0                               |       3|
|        |Missing Values: 9                          |        |
+--------+-------------------------------------------+--------+
|Q4      |Format: F1.0                               |       4|
|        |Missing Values: 5 THRU HIGHEST; 0          |        |
+--------+-------------------------------------------+--------+
|Q5      |Format: F1.0                               |       5|
+--------+-------------------------------------------+--------+
|Q6      |Format: F1.0                               |       6|
|        |Missing Values: 5 THRU HIGHEST; 0          |        |
+--------+-------------------------------------------+--------+
\end{verbatim}

\subsection{NUMERIC\index{NUMERIC}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{NUMERIC} \\
 & /var\_list [(format\_spec)]\\
 & /...
\end{tabular}

\bigskip

\textbf{Description}

\bigskip
NUMERIC\index{NUMERIC} permet de déclarer de nouvelles variables numériques, avec la possibilité de spécifier leurs formats. Ces nouvelles variables peuvent ensuite être utilisées par certaines commandes sans qu'une valeur ne leur soit attribuée.

Les variables créées avec NUMERIC\index{NUMERIC} sont initialisées à une valeur appelée {\it system-missing value} (cf.~section~\ref{missing}, page~\pageref{missing}).

\bigskip
On spécifie la liste des nouvelles variables numériques après un slash ('\texttt{/}'). On peut préciser le format des variables en donnant le format FORTRAN entre parenthèses après la liste des noms. Par défaut, le format est \texttt{F8.2}.

Si on précise le format, les variables ayant des formats différents sont séparées par un slash.

\bigskip

\textbf{Exemple}

\begin{verbatim}
NUMERIC X1 X2 (F5.1) /X3 TO X6 (F3).
\end{verbatim}

On crée les variables numériques X1, X2 au format \texttt{F5.1}, et X3, X4, X5, X6 au format \texttt{F3.0}.

\subsection{STRING\index{STRING}}
\label{string}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{STRING} \\
 & /var\_list (format\_spec)\\
 & /...
\end{tabular}

\bigskip

\textbf{Description}

\bigskip
STRING\index{STRING} crée une nouvelle variable de type string à utiliser pour les transformations de données. 

Les variables créées sont initialisées à un ensemble d'espaces.

\bigskip
Il faut spécifier après un slash ('\texttt{/}') les noms des variables de type string à créer et leur format entre parenthèses. Pour créer des variables de formats différents, on sépare deux groupes avec un slash. 

\bigskip
\textbf{Exemple}
\begin{verbatim}
STRING NOM (A20) /PRENOM1 TO PRENOM3 (A10).
\end{verbatim}

STRING\index{STRING} déclare la variable NOM au format A20 et les variables PRENOM1, PRENOM2, PRENOM3 au format \texttt{A10}.

\subsection{FORMATS\index{FORMATS}}
\label{formats}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{FORMATS} \\
 & var\_list (format\_spec) ...
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande FORMATS\index{FORMATS} change les formats {\it print} et {\it write} des variables numériques spécifiées.

\bigskip
On spécifie une liste de variables suivie du nouveau format entre parenthèses.

Les listes de variables correspondant à des formats différents sont séparées par un espace vide.

Pour changer seulement les formats print ou les formats write, on utilise respectivement les commandes {\it PRINT FORMATS\index{PRINT FORMATS}} et {\it WRITE FORMATS\index{WRITE FORMATS}}, avec une syntaxe identique à celle de la commande FORMATS\index{FORMATS}.

La commande FORMATS\index{FORMATS} prend effet immédiatement.

\bigskip
\textbf{Exemple}
\begin{verbatim}
FORMATS V1 TO V5 (F5.2) V6 (F3).
\end{verbatim}

Le format des variables V1, V2, V3, V4, V5 devient \texttt{F5.2}, et le format de V6 devient \texttt{F3}.

\newpage
\section{\textsc{La transformation des données}}
\label{trans}
Cette section décrit les commandes essentielles pour la manipulation et la préparation des données aux analyses ultérieures.

\subsection{COMPUTE\index{COMPUTE}}
\label{compute}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{COMPUTE} \\
 & variable=expression.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
COMPUTE\index{COMPUTE} crée une variable numérique ou modifie la valeur d'une variable numérique ou de type string. Pour chaque observation, la valeur de l'expression à droite du signe '\texttt{=}' est assignée à la variable spécifiée à gauche. Contrairement aux variables de type string, les variables numériques n'ont pas besoin d'être déclarées avant d'être spécifiées dans la commande COMPUTE\index{COMPUTE}. Lorsque COMPUTE\index{COMPUTE} crée une variable, celle-ci prend le format \texttt{F8.2}.

L'expression à droite du signe égal peut faire appel à toutes les expressions mathématiques offertes par PSPP. Pour plus d'informations sur les fonctions mathématiques proposées, voir {\it LES EXPRESSIONS MATHEMATIQUES}, section~\ref{math}, page~\pageref{math}.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE /X1 1-3.
BEGIN DATA.
635
210
150
323
END DATA.
COMPUTE X2=X1*2.
COMPUTE X1=X1/2.
FORMATS X2 (F4) X1 (F5.1).
LIST.
\end{verbatim}

Pour chaque valeur de X1, on calcule la valeur prise par X2, nouvelle variable qui correspond au double de X1. Les nouvelles valeurs de la variable X1 sont les anciennes valeurs divisées par 2. On spécifie ensuite un nouveau format pour ces deux variables.

\newpage
LIST\index{LIST} entraine la sortie suivante :
\begin{verbatim}
   X1   X2
----- ----
317.5 1270 
105.0  420 
 75.0  300 
161.5  646 
\end{verbatim}

\subsection{COUNT\index{COUNT}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{COUNT} \\
 & var\_name=var\_list(value...)\\
 & /...
\end{tabular}

\bigskip
\noindent
'value...' est un ensemble de valeurs qui peuvent prendre les formes suivantes :

number

string

num1 THRU num2

MISSING

SYSMIS

\bigskip
\noindent
'num1' et 'num2' peuvent être remplacés respectivement par {\it LOWEST} (ou {\it LO}) et {\it HIGHEST} (ou {\it HI}), pour désigner la valeur la plus faible et la valeur la plus élevée.

\bigskip
\textbf{Description}

\bigskip
COUNT\index{COUNT} crée une variable numérique qui compte pour chaque observation le nombre d'apparitions d'une ou plusieurs valeurs parmi une liste de variables. La variable ainsi créée est appelée variable {\it cible}.

Les variables cibles sont définies au format \texttt{F8.2} et sont initialisées à 0.

\bigskip
Les variables servant au comptage des valeurs sont appelées variables tests. Les variables numériques et les chaînes de caractères, courtes et longues, peuvent être des variables tests. 

Les valeurs manquantes définies par l'utilisateur ({\it user-missing values}, cf.~commande {\it MISSING VALUES\index{MISSING VALUES}}, section~\ref{miss}, page~\pageref{miss}) qui apparaissent dans les variables tests sont traitées comme les autres valeurs. Si ces valeurs manquantes sont spécifiées comme des valeurs recherchées, elles sont comptées comme les autres valeurs.

\bigskip
On doit spécifier la variable cible, suivie d'un signe égal ('\texttt{=}'), puis la liste des variables tests, suivie de l'ensemble des valeurs à compter entre parenthèses.

Pour séparer les spécifications des variables cibles, on utilise un slash ('\texttt{/}').

\bigskip
Le mot-clé {\it SYSMIS} est utilisé pour compter les valeurs {\it system-missing} (cf.~section~\ref{missing}, page~\pageref{missing}) des variables numériques.

Le mot-clé {\it MISSING} permet de compter à la fois les valeurs {\it system-missing} et {\it user-missing}.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE /X1 TO X5 1-10.
BEGIN DATA.
 1-120  13
20-3-54220  
1520-6-314
END DATA.
MISSING VALUES X1 TO X5 (LO THRU 0).
COUNT Y1=X1 TO X5(LO THRU 0) /Y2=X1 TO X5(20).
FORMATS Y1 Y2 (F2).
LIST.
\end{verbatim}

Les valeurs négatives et la valeur 0 sont déclarées manquantes pour toutes les variables avec la commande MISSING VALUES\index{MISSING VALUES}. Ces valeurs manquantes sont comptées avec la commande COUNT\index{COUNT} et le résultat est transféré dans la variable Y1. De même, la valeur 20 est comptée et le résultat transféré dans la variable Y2.

FORMATS\index{FORMATS} permet de modifier le format des variables Y1 et Y2 : initialement \texttt{F8.2}, le format devient \texttt{F2}.

Enfin, LIST\index{LIST} affiche les valeurs de toutes les variables :
\begin{verbatim}
X1 X2 X3 X4 X5 Y1 Y2
-- -- -- -- -- -- --
 1 -1 20  . 13  1  1 
20 -3 -5 42 20  2  2 
15 20 -6 -3 14  2  1 
\end{verbatim}

\subsection{RECODE\index{RECODE}}
\label{recode}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{RECODE} \\
 & var\_list (value\_list=dest\_value)... [INTO var\_list]\\
 & /...
\end{tabular}

\newpage
\noindent
'value\_list' peut prendre une des formes suivantes : 

number

string

num1 THRU num2

MISSING

SYSMIS

ELSE

\bigskip
\noindent
'num1' et 'num2' peuvent être remplacés respectivement par {\it LOWEST} (ou {\it LO}) et {\it HIGHEST} (ou {\it HI}), pour désigner la valeur la plus faible et la valeur la plus élevée.

\bigskip
\noindent
'dest\_value' peut prendre une des formes suivantes : 

number

string

SYSMIS

COPY

\bigskip
\textbf{Description}

\bigskip
La commande RECODE\index{RECODE} est utilisée pour modifier, arranger les valeurs d'une liste de variables. Le recodage des données se fait de la manière suivante : on spécifie d'abord la liste des variables concernées par le changement, puis entre parenthèses les valeurs d'origine que l'on va modifier, suivies de la nouvelle valeur qui leur est assignée. Les anciennes valeurs sont séparées des nouvelles par un signe égal ('\texttt{=}'). Pour une même liste de variables, plusieurs nouvelles valeurs peuvent être données. Les différents recodages sont séparés par un slash ('\texttt{/}').

\bigskip
Le mot-clé {\it INTO} est utilisé pour copier les nouvelles données dans de nouvelles variables. Il doit y avoir autant de variables d'origine que de nouvelles variables. Les nouvelles variables de type string doivent être déclarées au préalable (avec la commande {\it STRING\index{STRING}}, par exemple), alors que les nouvelles variables numériques peuvent être créées par la commande.

Quand INTO n'est pas spécifié, les variables d'origine doivent être du même type que les nouvelles variables. Dans la cas contraire, les variables de type string peuvent être recodées en variables numériques et inversement.

\bigskip
Le mot-clé {\it MISSING} fait référence aux valeurs {\it user-missing} et {\it system-missing} et peut être utilisé seulement dans la liste des valeurs d'origine.

Le mot-clé {\it SYSMIS} fait référence aux valeurs {\it system-missing} uniquement et peut être utilisé comme une valeur d'origine ou comme une nouvelle valeur.

\bigskip
{\it ELSE} représente toutes les valeurs d'origine auxquelles on n'a pas attribué de nouvelles valeurs. 

{\it COPY} copie les valeurs d'origine dans les nouvelles valeurs sans les recoder.

\newpage
\textbf{Exemple 1}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple21 /SEXE 1-5 (A).
RECODE SEXE ('homme'=1) ('femme'=2) (ELSE=SYSMIS) INTO NUMSEXE.
FORMATS NUMSEXE (F1).
LIST.
\end{verbatim}

La variable SEXE de type string est recodée en une variable numérique appelée NUMSEXE dont le format est définit avec la commande FORMATS\index{FORMATS}. Les valeurs 'homme' et 'femme' deviennent respectivement les valeurs 1 et 2. Toutes les valeurs autres que 'homme' et 'femme' deviennent {\it system-missing}.

LIST\index{LIST} affiche les valeurs des variables SEXE et NUMSEXE :
\begin{verbatim}
 SEXE NUMSEXE
----- -------
homme       1 
femme       2 
toto        . 
femme       2 
homme       1 
tutu        . 
homme       1 
femme       2 
\end{verbatim}

\bigskip
\textbf{Exemple 2}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple22 /X1 TO X3 1-3.
RECODE X1 TO X3 (1 THRU 4 = 1) (6 THRU 9 = 2) (ELSE=COPY) INTO Y1 TO Y3.
FORMATS Y1 TO Y3 (F1).
LIST.
\end{verbatim}

Les variables X1, X2 et X3 sont recodées en Y1, Y2 et Y3. Les valeurs 1, 2, 3, 4 deviennent la valeur 1 ; les valeurs 6, 7, 8, 9 deviennent la valeur 2 ; les autres valeurs sont inchangées. 

On obtient la sortie suivante :

\begin{verbatim}
X1 X2 X3 Y1 Y2 Y3
-- -- -- -- -- --
 1  1  5  1  1  5 
 2  4  6  1  1  2 
 9  8  8  2  2  2 
 0  1  0  0  1  0 
 2  5  5  1  5  5 
\end{verbatim}

\newpage
\subsection{AUTORECODE\index{AUTORECODE}} 

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{AUTORECODE} \\
 & VARIABLES=var\_list INTO dest\_vars\\
 & /DESCENDING.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip

La commande AUTORECODE transforme les valeurs prises par une variable, numérique ou string, en entiers consécutifs, et crée une variable numérique avec ces nouvelles valeurs. Le recodage se fait dans l'ordre ascendant pour les variables numériques, et dans l'ordre alphabétique pour les chaînes de caractères.

Cette commande est similaire à la commande {\it RECODE\index{RECODE}} (cf.~section~\ref{recode}, page~\pageref{recode}), mais le recodage des valeurs se fait de manière automatique. 

\bigskip
Le mot-clé {\it VARIABLES} est obligatoire et suivi d'un signe égal ('\texttt{=}'). Il doit y avoir autant de variables d'origine que de variables recodées.

\bigskip
Il est possible de changer l'ordre de recodage en utilisant {\it DESCENDING} : le recodage des valeurs se fait alors dans l'ordre descendant.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE /COULEUR 1-10 (A).
BEGIN DATA.
rouge
bleu
vert
orange
jaune
violet
END DATA.
AUTORECODE VARIABLES=COULEUR INTO NUMCOUL /DESCENDING.
FORMATS NUMCOUL (F1).
LIST.
\end{verbatim}

Les couleurs sont transformées en nombres consécutifs dans la nouvelle variable NUMCOUL. Le recodage se fait dans l'ordre inverse de l'ordre alphabétique.

\newpage
On obtient la sortie suivante :

\begin{verbatim}

   COULEUR NUMCOUL
---------- -------
rouge            3 
bleu             6 
vert             2 
orange           4 
jaune            5 
violet           1 
\end{verbatim}


\subsection{IF\index{IF}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{IF} \\
 & condition variable=expression.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
IF\index{IF} assigne la valeur d'une expression à une variable si la condition spécifiée est vérifiée. Cette condition est définie par une expression qui renvoie une valeur de type booléen (cf.~{\it Les booléens}, section~\ref{booleen}, page~\pageref{booleen}). Si la valeur renvoyée est 'VRAI', la condition est satisfaite, et la valeur de la deuxième expression est calculée et assignée à la variable cible. Si la valeur renvoyée est 'FAUX' ou 'missing', la condition n'est pas satisfaite, et la variable cible n'est pas modifiée.

La commande IF\index{IF} permet d'assigner des valeurs aux variables numériques et de type string. Les variables de type string doivent être déclarées (avec la commande {\it STRING\index{STRING}}, par exemple) avant qu'une valeur ne leur soit assignée avec IF\index{IF}. Les types de la variable cible et de l'expression doivent être les mêmes.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE /SEXE 1 AGE 3-4.
BEGIN DATA.
1 35
2 14
2 25
1 16
2 36
END DATA.
STRING GROUPE (A10).
IF (SEXE=1 AND AGE>18) GROUPE='Homme'.
IF (SEXE=2 AND AGE>18) GROUPE='Femme'.
LIST.
\end{verbatim}

La première étape est de déclarer la nouvelle variable GROUPE de type string à l'aide de la commande STRING\index{STRING} (cf.~section~\ref{string}, page~\pageref{string}). Pour chaque observation, on vérifie si la condition spécifiée est satisfaite. Si elle l'est, on assigne une valeur à la variable GROUPE pour cette observation. 

LIST\index{LIST} affiche les valeurs des variables SEXE, AGE et GROUPE :

\begin{verbatim}
SEXE AGE     GROUPE
---- --- ----------
   1  35 Homme      
   2  14            
   2  25 Femme      
   1  16            
   2  36 Femme      
\end{verbatim}

\subsection{SORT CASES\index{SORT CASES}}
\label{sort}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{SORT CASES} \\
 & BY var\_list.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
SORT CASES\index{SORT CASES} permet de réordonner les observations en fonction des valeurs d'une ou plusieurs variables. Par défaut, les valeurs sont rangées dans l'ordre ascendant (ou alphabétique pour les chaînes de caractères). Il est possible de préciser l'ordre souhaité en spécifiant {\it (A)}, ou {\it (UP)}, pour ascendant, et {\it (D)}, ou {\it (DOWN)}, pour descendant.


\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple25 /NOM (A10) PRENOM (A10) AGE (F2).
SORT CASES BY NOM (A) PRENOM (A).
LIST.
\end{verbatim}

Les valeurs de la variable NOM sont rangées dans l'ordre alphabétique. Si deux noms sont identiques, les valeurs de la variable PRENOM sont aussi rangées dans l'ordre alphabétique.

La sortie est la suivante :

\begin{verbatim}
       NOM     PRENOM AGE
---------- ---------- ---
Dupont     Bernard     42 
Dupont     Pierre      23 
Dupont     Sophie      32 
Lambert    Danielle    52 
Martin     Romain      41 
\end{verbatim}



\subsection{FLIP\index{FLIP}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{FLIP} \\
 & /VARIABLES=var\_list \\
 & /NEWNAMES=var\_name.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
Dans la structure habituelle de PSPP, les colonnes représentent les variables et les lignes les observations. Si un fichier est organisé de sorte que les lignes représentent les variables et les colonnes les observations, il faut transposer les lignes et les colonnes avec la commande FLIP\index{FLIP}.

\bigskip
Toutes les variables transposées sont numériques. FLIP\index{FLIP} assigne aux variables de type string la valeur {\it system-missing}.

\bigskip
Les sous-commandes ne sont pas obligatoires. La sous-commande {\it VARIABLES} sélectionne les variables à transformer en observations. Si cette sous-commande n'est pas spécifiée, toutes les variables sont transposées.

La sous-commande {\it NEWNAMES} spécifie la variable dont les valeurs vont être utilisées pour les noms des nouvelles variables. Les noms des variables originales deviennent les valeurs d'une nouvelle variable appelée CASE\_LBL. Si NEWNAMES n'est pas spécifiée, les nouvelles variables créées par FLIP\index{FLIP} sont appelées VAR000, VAR001, ..., VAR999, VAR1000, etc.

\bigskip
\textbf{Exemple1}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple26 
   /X1 (A6) X2 (F7.2) X3 (F7.2) X4 (F7.2) X5 (F7.2).
LIST.
FLIP.
LIST.
\end{verbatim}

FLIP\index{FLIP} entraine la transposition de toutes les variables.
La sortie obtenue présente l'organisation initiale des données (première commande LIST\index{LIST}) et le résultat de la transposition (deuxième commande LIST) :

\begin{verbatim}

    X1       X2       X3       X4       X5
------ -------- -------- -------- --------
annee   1999.00  2000.00  2001.00  2002.00 
prix      24.25    26.50    30.15    28.45 
hausse      .       9.28    13.77    -5.64 




CASE_LBL   VAR000   VAR001   VAR002 
-------- -------- -------- -------- 
X1            .        .        .     
X2        1999.00    24.25      .       
X3        2000.00    26.50     9.28      
X4        2001.00    30.15    13.77      
X5        2002.00    28.45    -5.64    
\end{verbatim} 

Les chaînes de caractères deviennent {\it system-missing} car la sous-commande NEWNAMES n'est pas spécifiée.


\bigskip
\textbf{Exemple2}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple26 
   /X1 (A6) X2 (F7.2) X3 (F7.2) X4 (F7.2) X5 (F7.2).
LIST.
FLIP 
   /VARIABLES=X1 X3 X4 X5 
   /NEWNAMES=X1.
LIST.
\end{verbatim}


L'exemple est le même que le précedent mais la variable X1 sert à nommer les nouvelles variables et la variable X2 est exclue de la transposition. La sortie est la suivante :

\begin{verbatim}
    X1       X2       X3       X4       X5
------ -------- -------- -------- --------
annee   1999.00  2000.00  2001.00  2002.00 
prix      24.25    26.50    30.15    28.45 
hausse      .       9.28    13.77    -5.64 

CASE_LBL    ANNEE     PRIX   HAUSSE
-------- -------- -------- --------
X3        2000.00    26.50     9.28 
X4        2001.00    30.15    13.77 
X5        2002.00    28.45    -5.64 
\end{verbatim}


\newpage
\subsection{AGGREGATE\index{AGGREGATE}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{AGGREGATE} \\
 & OUTFILE=\{*,'filename'\}\\
 & /PRESORTED\\
 & /MISSING=COLUMNWISE\\
 & /BREAK=var\_list\\
 & /agg\_var['label']...=function(var[,var,...],args)\\
 & /...
\end{tabular}

\bigskip
AGGREGATE\index{AGGREGATE} permet d'agréger un ensemble d'observations ayant la même valeur pour la (ou les) variable(s) spécifiée(s) dans la sous-commande {\it BREAK}. Ainsi, les gros fichiers de données sont transformés en fichiers plus compacts, et donc plus facilement analysables.

\bigskip
La sous-commande {\it OUTFILE} est obligatoire et doit être spécifiée en premier. Elle est utilisée pour préciser le nom du fichier {\it système} (fichier binaire propre au logiciel) où sont écrites les observations agrégées. Le fichier système peut être spécifié comme un fichier de type {\it handle} (cf.~commande {\it FILE HANDLE\index{FILE HANDLE}}, section~\ref{handle}, page~\pageref{handle}). Pour que les données agrégées remplacent les données du fichier en cours de traitement, on utilise le symbole '\texttt{*}'.

\bigskip
Une ou plusieurs variables doivent être spécifiées dans la sous-commande {\it BREAK}. Ce sont les valeurs de ces variables qui vont déterminer les groupes d'observations à agréger. Toutes les observations ayant la même valeur pour les variables {\it break} sont regroupées en une seule observation. 

\bigskip
Si le fichier de données qui va être agrégé est déjà ordonné en fonction des valeurs des variables {\it break} (c'est-à-dire que les observations ayant les mêmes valeurs pour ces variables se suivent dans le fichier), {\it PRESORTED} peut être spécifié pour éviter d'allonger inutilement le temps d'exécution.

\bigskip
Les variables agrégées sont calculées à partir des fonctions d'agrégation spécifiées par l'utilisateur. Il faut spécifier après un slash ('\texttt{/}') la liste des variables agrégées qui sont calculées à partir de la même fonction.  Il doit y avoir autant de variables agrégées que de variables servant d'arguments à la fonction d'agrégation. On peut donner un label à une variable en le spécifiant entre apostrophes immédiatement après son nom. Un signe égal ('\texttt{=}') sépare les variables agrégées de la fonction d'agrégation. Les variables agrégées calculées à partir de fonctions différentes sont séparées par un slash ('\texttt{/}').

\bigskip
Par défaut, les valeurs des variables agrégées sont calculées si les variables-arguments ont au moins une valeur non-manquante dans le groupe. On spécifie {\it MISSING=COLUMNWISE} pour que la valeur d'une variable agrégée soit déclarée manquante pour un groupe dès qu'une valeur de ce groupe est manquante pour la variable-argument de la fonction d'agrégation.

\bigskip
Voici la liste des fonctions d'agrégation disponibles : 
\begin{itemize}
\item \texttt{MIN(var\_name)} : renvoie la valeur {\it minimum} de la variable spécifiée.
\item \texttt{MAX(var\_name)} : renvoie la valeur {\it maximum} de la variable spécifiée.
\item \texttt{SUM(var\_name)} : renvoie la {\it somme} des valeurs de la variable spécifiée, seulement pour les variables numériques  (format par défaut : \texttt{F8.2}).
\item \texttt{MEAN(var\_name)} : renvoie la {\it moyenne} des valeurs de la variable spécifiée, seulement pour les variables numériques (format par défaut : \texttt{F8.2}).
\item \texttt{SD(var\_name)} : renvoie l'{\it écart-type} des valeurs de la variable spécifiée, seulement pour les variables numériques (format par défaut : \texttt{F8.2}).
\item \texttt{N} : pour chaque groupe, renvoie le {\it nombre d'observations} qui ont été {\it agrégées}. Si on n'a pas attribué un poids particulier aux observations (cf.~commande {\it WEIGHT\index{WEIGHT}}, section~\ref{weight}, page~\pageref{weight}), le format par défaut est \texttt{F7.0}. Dans le cas contraire, le format par défaut est \texttt{F8.2}.
\item \texttt{NU} : pour chaque groupe, renvoie le {\it nombre d'observations} qui ont été {\it agrégées}. Contrairement à \texttt{N}, cette fonction ne tient pas compte des poids qui ont été attribués aux observations (poids égal à 1 pour chaque observation). Le format par défaut est \texttt{F7.0}.
\item \texttt{FGT(var\_name,value)} : renvoie la {\it part} des valeurs {\it supérieures} à la constante spécifiée (format par défaut : \texttt{F5.3}).
\item \texttt{FLT(var\_name,value)} : renvoie la {\it part} des valeurs {\it inférieures} à la constante spécifiée (format par défaut : \texttt{F5.3}).
\item \texttt{FIN(var\_name,low,high)} : renvoie la {\it part} des valeurs à l'{\it intérieur} de l'intervalle spécifié (format par défaut : \texttt{F5.3}).
\item \texttt{FOUT(var\_name,low,high)} : renvoie la {\it part} des valeurs à l'{\it extérieur} de l'intervalle spécifié (format par défaut : \texttt{F5.3}).
\item \texttt{PGT(var\_name,value)} : renvoie le {\it pourcentage} de valeurs {\it supérieures} à la constante spécifiée (format par défaut : \texttt{F5.1}).
\item \texttt{PLT(var\_name,value)} : renvoie le {\it pourcentage} de valeurs {\it inférieures} à la constante spécifiée (format par défaut : \texttt{F5.1}).
\item \texttt{FIN(var\_name,low,high)} : renvoie le {\it pourcentage} de valeurs à l'{\it intérieur} de l'intervalle spécifié (format par défaut : \texttt{F5.1}).
\item \texttt{FOUT(var\_name,low,high)} : renvoie le {\it pourcentage} de valeurs à l'{\it extérieur} de l'intervalle spécifié (format par défaut : \texttt{F5.1}).
\item \texttt{FIRST(var\_name)} : renvoie la {\it première} valeur {\it non-manquante} pour chaque groupe.
\item \texttt{LAST(var\_name)} : renvoie la {\it dernière} valeur {\it non-manquante} pour chaque groupe.
\item \texttt{N(var\_name)} : renvoie le {\it nombre} de valeurs {\it non-manquantes} pour chaque groupe. Si on n'a pas attribué un poids particulier aux observations, le format par défaut est \texttt{F7.0}. Dans le cas contraire, le format par défaut est \texttt{F8.2}.
\item \texttt{NU(var\_name)} : renvoie le {\it nombre} de valeurs {\it non-manquantes} pour chaque groupe. Contrairement à \texttt{N(var\_name)}, cette fonction ne tient pas compte des poids qui ont été attribués aux observations (poids égal à 1 pour chaque observation). Le format par défaut est \texttt{F7.0}.
\item \texttt{NMISS(var\_name)} : renvoie le {\it nombre} de valeurs {\it manquantes} pour chaque groupe. Si on n'a pas attribué un poids particulier aux observations, le format par défaut est \texttt{F7.0}. Dans le cas contraire, le format par défaut est \texttt{F8.2}.
\item \texttt{NUMISS(var\_name)} : renvoie le {\it nombre} de valeurs {\it manquantes} pour chaque groupe. Contrairement à \texttt{NMISS(var\_name)}, cette fonction ne tient pas compte des poids qui ont été attribués aux observations (poids égal à 1 pour chaque observation). Le format par défaut est \texttt{F7.0}.
\end{itemize}

\bigskip
Ces fonctions d'agrégation excluent des calculs les valeurs déclarées {\it user-missing}. Pour inclure ces dernières dans les calculs, il faut mettre un point ('\texttt{.}') après le nom de la fonction (exemple : \texttt{SUM.(var\_name)}).

\bigskip
\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST FILE=donnees90 /DEP 1-2 (A) POP 8-16.
VARIABLE LABELS DEP "numero de departement" 
                POP "nombre d'habitants de la commune"
AGGREGATE OUTFILE=* 
  /PRESORTED 
  /BREAK=DEP
  /NOMBRE "nombre de communes du departement"=N  
  /POPULATION "nombre d'habitants du departement"=SUM(POP) 
  /PGV "nombre d'habitants de la plus grande ville du departement"=MAX(POP)
  /PPC "nombre d'habitants de la plus petite commune du departement"=MIN(POP).
WRITE OUTFILE=aggreg90
   /DEP 1-2 (A)  POPULATION 4-12 PGV 14-22 PPC 24-32  NOMBRE 44-46.
EXECUTE.

\end{verbatim}

Le fichier 'donnees90', qui comporte 36137 lignes, présente les données \mbox{INSEE} du recensement de la population française de 1990. Chaque ligne est composée par quatre informations décrivant une commune : le code INSEE, le nombre d'habitants, la densité et le nom de la commune.

\newpage
Pour donner un aperçu du fichier 'donnees90', voici quelques lignes (non consécutives) qui en sont extraites :

\begin{verbatim}
06003        300       6        Andon                                         
06004      70005    2644        Antibes                                       
06005        123       7        Ascros                                        
06006       1496     158        Aspremont      
29301        214      47        Trézilidé
2A001       1726     146        Afa                                           
2A004      58949     719        Ajaccio  
31555     358688    3032        Toulouse                                      
31557      16669     917        Tournefeuille                                 
31556        305      25        Tourreilles (Les)          
\end{verbatim}

\bigskip
 Pour chaque commune, on retient avec la commande DATA LIST\index{DATA LIST} le numéro du département (DEP), donné par les deux premiers caractères du code INSEE, et le nombre d'habitants (POP). Seulement les informations utiles au calcul des nouvelles variables sont lues avec DATA LIST\index{DATA LIST}.

On agrège les observations par département et on définit quatre nouvelles variables explicitées par leurs labels : NOMBRE, POPULATION, PGV et PPC. Les nouvelles observations sont écrites dans le fichier 'aggreg90' avec la commande WRITE\index{WRITE}. Ce nouveau fichier comporte 95 lignes.


Voici un extrait du fichier 'aggreg90' obtenu suite à l'agrégation des données (les lignes se suivent dans le fichier) :

\begin{verbatim}
29    838687    147956        84           283
2A    118808     58949        25           124
2B    131563     37845         9           236
30    585049    128471        23           353
31    925962    358688         6           588
32    174587     23136         0           463
\end{verbatim}


\newpage
\section{\textsc{La sélection des données pour l'analyse}}
\label{selec}
Cette section décrit les commandes permettant de sélectionner des enregistrements de données pour l'analyse.

\subsection{PROCESS IF\index{PROCESS IF}}
\label{process}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{PROCESS IF} \\
 & expression.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande PROCESS IF\index{PROCESS IF} permet d'exclure de la prochaine analyse des données certaines observations. 

Les observations sont sélectionnées en fonction des valeurs de l'expression spécifiée. Cette expression retourne une valeur de type booléen pour chaque observation (cf.~LES EXPRESSIONS MATHEMATIQUES, section~\ref{math}, page~\pageref{math}). Si elle retourne 'vrai', l'observation sera analysée ; dans le cas contraire ('faux' ou 'missing'), l'observation sera exclue de la prochaine analyse.

\bigskip
L'exécution de la commande {\it TEMPORARY\index{TEMPORARY}} (cf.~section~\ref{temp}, page~\pageref{temp}), puis de la commande {\it SELECT IF\index{SELECT IF}} (cf.~section~\ref{select}, page~\pageref{select}), produit les mêmes effets que ceux de la commande PROCESS IF\index{PROCESS IF}.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple28 /SEXE (A5) AGE (F3).
PROCESS IF (SEXE="homme") AND (AGE GT 40).
DESCRIPTIVES AGE.
DESCRIPTIVES AGE.
\end{verbatim}

PROCESS IF\index{PROCESS IF} sélectionne les observations pour lesquelles SEXE a la valeur ``homme'' et AGE une valeur supérieure à 40. Cette sélection s'applique à la première commande DESCRIPTIVES\index{DESCRIPTIVES}. En effet, la deuxième commande DESCRIPTIVES\index{DESCRIPTIVES} retourne les statistiques concernant toutes les observations. 


Voici, la sortie obtenue dans le fichier listing :

\begin{verbatim}
1.1 DESCRIPTIVES.  Valid cases = 2; cases with missing value(s) = 0.
+--------#-+------+-------+-------+-------+
|Variable#N| Mean |Std Dev|Minimum|Maximum|
#========#=#======#=======#=======#=======#
|AGE     #2|49.000|  9.899| 42.000| 56.000|
+--------#-+------+-------+-------+-------+



2.1 DESCRIPTIVES.  Valid cases = 11; cases with missing value(s) = 0.
+--------#--+------+-------+-------+-------+
|Variable# N| Mean |Std Dev|Minimum|Maximum|
#========#==#======#=======#=======#=======#
|AGE     #11|31.273| 12.993| 14.000| 56.000|
+--------#--+------+-------+-------+-------+
\end{verbatim}

\subsection{SELECT IF\index{SELECT IF}}
\label{select}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{SELECT IF} \\
 & expression.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande SELECT IF\index{SELECT IF} est similaire à la commande PROCESS IF\index{PROCESS IF} (cf.~section~\ref{process}, page~\pageref{process}) mais à la différence de celle-ci, SELECT IF\index{SELECT IF} sélectionne les observations pour les analyses de manière définitive.

L'expression spécifiée est évaluée pour chaque observation. Si la valeur retournée est 'vrai', l'observation sera analysée ; si la valeur est 'faux' ou 'missing', l'observation est exclue définitivement des analyses.

\bigskip
Si la commande SELECT IF\index{SELECT IF} est spécifiée après {\it TEMPORARY\index{TEMPORARY}} (cf.~section~\ref{temp}, page~\pageref{temp}), la sélection des observations devient temporaire.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple28 /SEXE (A5) AGE (F3).
SELECT IF NOT (AGE > 25).
DESCR AGE.
FREQ /VAR=AGE.
\end{verbatim}

Les observations pour lesquelles la variable AGE prend une valeur inférieure ou égale à 25 sont sélectionnées pour l'analyse des données. Les commandes DESCRIPTIVES\index{DESCRIPTIVES} et FREQUENCIES\index{FREQUENCIES} analysent les mêmes données.

Voici, la sortie obtenue dans le fichier listing :

\begin{verbatim}
1.1 DESCRIPTIVES.  Valid cases = 5; cases with missing value(s) = 0.
+--------#-+------+-------+-------+-------+
|Variable#N| Mean |Std Dev|Minimum|Maximum|
#========#=#======#=======#=======#=======#
|AGE     #5|20.000|  5.292| 14.000| 25.000|
+--------#-+------+-------+-------+-------+



2.1 FREQUENCIES.  AGE: 
+-----------+--------+---------+--------+--------+--------+
|           |        |         |        |  Valid |   Cum  |
|Value Label|  Value |Frequency| Percent| Percent| Percent|
#===========#========#=========#========#========#========#
|           |      14|        1|    20.0|    20.0|    20.0|
|           |      15|        1|    20.0|    20.0|    40.0|
|           |      21|        1|    20.0|    20.0|    60.0|
|           |      25|        2|    40.0|    40.0|   100.0|
#===========#========#=========#========#========#========#
|               Total|        5|   100.0|   100.0|        |
+--------------------+---------+--------+--------+--------+

+---------------+------+
|N       Valid  |     5|
|        Missing|     0|
|Mean           |20.000|
|Std Dev        | 5.292|
|Minimum        |14.000|
|Maximum        |25.000|
+---------------+------+
\end{verbatim}

\subsection{TEMPORARY\index{TEMPORARY}}
\label{temp}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{TEMPORARY.}
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande TEMPORARY\index{TEMPORARY} est utilisée pour que les effets d'une ou plusieurs transformations soient temporaires. Les commandes effectuant des transformations, sur les données ou les variables, spécifiées après TEMPORARY\index{TEMPORARY} affectent seulement la première analyse qui suit.

\bigskip
TEMPORARY\index{TEMPORARY} peut s'appliquer aux commandes suivantes :
\begin{itemize}
\item COMPUTE\index{COMPUTE}, COUNT\index{COUNT}, RECODE\index{RECODE}, IF\index{IF} (cf.~Transformation des données, section~\ref{trans}, page~\pageref{trans})
\item FORMATS\index{FORMATS}, PRINT FORMATS\index{PRINT FORMATS}, WRITE FORMATS\index{WRITE FORMATS} (cf.~commande FORMATS\index{FORMATS}, section~\ref{formats}, page~\pageref{formats})
\item SELECT IF\index{SELECT IF}, SAMPLE\index{SAMPLE}, WEIGHT\index{WEIGHT}, SPLIT FILE\index{SPLIT FILE} (cf.~Sélection des données pour l'analyse, section~\ref{selec}, page~\pageref{selec})
\item NUMERIC\index{NUMERIC}, STRING\index{STRING}, VARIABLE LABELS\index{VARIABLE LABELS}, VALUE LABELS\index{VALUE LABELS}, MISSING VALUES\index{MISSING VALUES} (cf.~Manipulation des variables, section~\ref{manip}, page~\pageref{manip})
\end{itemize}

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST  /X 1-4 (1).
BEGIN DATA.
2.0
6.0
12.0
9.0
END DATA.
COMPUTE X=X/2.
TEMPORARY.
COMPUTE X=X+3.
DESCR X.
DESCR X.
\end{verbatim}

La première commande COMPUTE\index{COMPUTE} transforme les valeurs \texttt{2.0}, \texttt{6.0}, \texttt{12.0}, \texttt{9.0} en \texttt{1.0}, \texttt{3.0}, \texttt{6.0}, \texttt{4.5}. La première commande DESCRIPTIVES\index{DESCRIPTIVES} lit les données \texttt{4.0}, \texttt{6.0}, \texttt{9.0}, \texttt{7.5}, alors que la deuxième lit les données \texttt{1.0}, \texttt{3.0}, \texttt{6.0}, \texttt{4.5}.
On obtient la sortie suivante :

\begin{verbatim}
1.1 DATA LIST.  Reading 1 record from the command file.
+--------+------+-------+------+
|Variable|Record|Columns|Format|
#========#======#=======#======#
|X       |     1|  1-  4|F4.1  |
+--------+------+-------+------+

2.1 DESCRIPTIVES.  Valid cases = 4; cases with missing value(s) = 0.
+--------#-+-----+-------+-------+-------+
|Variable#N| Mean|Std Dev|Minimum|Maximum|
#========#=#=====#=======#=======#=======#
|X       #4|6.625|  2.136|  4.000|  9.000|
+--------#-+-----+-------+-------+-------+

3.1 DESCRIPTIVES.  Valid cases = 4; cases with missing value(s) = 0.
+--------#-+-----+-------+-------+-------+
|Variable#N| Mean|Std Dev|Minimum|Maximum|
#========#=#=====#=======#=======#=======#
|X       #4|3.625|  2.136|  1.000|  6.000|
+--------#-+-----+-------+-------+-------+
\end{verbatim}

\subsection{WEIGHT\index{WEIGHT}}
\label{weight}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{WEIGHT}\\
 & BY var\_name.\\
\multicolumn{2}{l}{WEIGHT OFF.}
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande WEIGHT\index{WEIGHT} permet de modifier le poids des observations dans les analyses en leur assignant de nouvelles fréquences d'apparitions. 

La variable numérique spécifiée après le mot-clé {\it BY} détermine les nouveaux poids qui sont attribués aux observations. Ainsi, chaque valeur de cette variable détermine le nombre d'apparitions de l'observation correspondante.

\bigskip
La commande WEIGHT\index{WEIGHT} est valide pour toutes les analyses de données jusqu'à ce que la commande WEIGHT OFF soit mentionnée : toutes les observations reprennent alors le même poids. 

Si la commande WEIGHT\index{WEIGHT} est précédée par {\it TEMPORARY\index{TEMPORARY}}, elle affecte uniquement la prochaine analyse des données.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE/NOMBRE (F1) NOTE (F2).
BEGIN DATA.
213
410
315
416
118
2 5
END DATA.
WEIGHT BY NOMBRE.
FREQ NOTE /STATISTICS=NONE.
WEIGHT OFF.
FREQ NOTE /STATISTICS=NONE.
\end{verbatim}
Ce sont les valeurs de la variable NOMBRE, spécifiée dans la commande WEIGHT\index{WEIGHT}, qui déterminent les fréquences d'apparitions des valeurs de la variable NOTE.
La première commande FREQUENCIES\index{FREQUENCIES} tient compte des modifications apportées par WEIGHT\index{WEIGHT}. La deuxième commande FREQUENCIES\index{FREQUENCIES} n'en tient pas compte car elle est précédée par WEIGHT OFF. 

\newpage
Voici la sortie obtenue dans le fichier listing :

\begin{verbatim}
1.1 FREQUENCIES.  NOTE: 
+-----------+--------+---------+--------+--------+--------+
|           |        |         |        |  Valid |   Cum  |
|Value Label|  Value |Frequency| Percent| Percent| Percent|
#===========#========#=========#========#========#========#
|           |       5|        2|    12.5|    12.5|    12.5|
|           |      10|        4|    25.0|    25.0|    37.5|
|           |      13|        2|    12.5|    12.5|    50.0|
|           |      15|        3|    18.8|    18.8|    68.8|
|           |      16|        4|    25.0|    25.0|    93.8|
|           |      18|        1|     6.2|     6.2|   100.0|
#===========#========#=========#========#========#========#
|               Total|       16|   100.0|   100.0|        |
+--------------------+---------+--------+--------+--------+

2.1 FREQUENCIES.  NOTE: 
+-----------+--------+---------+--------+--------+--------+
|           |        |         |        |  Valid |   Cum  |
|Value Label|  Value |Frequency| Percent| Percent| Percent|
#===========#========#=========#========#========#========#
|           |       5|        1|    16.7|    16.7|    16.7|
|           |      10|        1|    16.7|    16.7|    33.3|
|           |      13|        1|    16.7|    16.7|    50.0|
|           |      15|        1|    16.7|    16.7|    66.7|
|           |      16|        1|    16.7|    16.7|    83.3|
|           |      18|        1|    16.7|    16.7|   100.0|
#===========#========#=========#========#========#========#
|               Total|        6|   100.0|   100.0|        |
+--------------------+---------+--------+--------+--------+
\end{verbatim}

\subsection{SAMPLE\index{SAMPLE}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{SAMPLE}\\
 & decimal\_value\\
 & {\it ou} num1 FROM num2.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
SAMPLE\index{SAMPLE} permet de sélectionner aléatoirement une proportion d'observations pour l'analyse. Cette sélection est valable pour toutes les analyses, sauf si {\it TEMPORARY\index{TEMPORARY}} (cf.~section~\ref{temp}, page~\pageref{temp}) précède la commande SAMPLE\index{SAMPLE}.

\bigskip
Il y a deux manières de spécifier le nombre d'observations à extraire. La première consiste à préciser la proportion à sélectionner avec un nombre décimal compris entre 0 et 1. Si \texttt{N} est le nombre d'observations valides dans le fichier en cours, la commande '\texttt{SAMPLE .k.}' indique qu'approximativement \texttt{k*N} observations sont sélectionnées.

La deuxième méthode est l'utilisation de la commande '\texttt{SAMPLE m FROM M}', qui précise la proportion \texttt{m/M} d'observations à sélectionner. Trois situations peuvent se présenter :
\begin{itemize}
\item Si \texttt{M} est égal au nombre d'observations valides dans le fichier en cours, alors exactement \texttt{m} observations sont sélectionnées.
\item Si \texttt{M} est plus grand que le nombre d'observations valides dans le fichier en cours, alors une proportion équivalente à \texttt{m/M} est sélectionnée.
\item Si \texttt{M} est inférieur au nombre d'observations valides dans le fichier en cours, alors \texttt{m} observations sont sélectionnées parmi les \texttt{M} premières observations du fichier.
\end{itemize}

\bigskip
La commande SAMPLE\index{SAMPLE} est toujours exécutée avant {\it N OF CASES\index{N OF CASES}} (cf.~section~\ref{cases}, page~\pageref{cases}), même si elle est spécifiée après dans le fichier syntaxe. 

\bigskip
\textbf{Exemple1}

\begin{verbatim}
DATA LIST FILE=exemple32 /X1 TO X5 1-5.
SAMPLE .25.
\end{verbatim}

Approximativement un quart des observations du fichier de données 'exemple32' sont sélectionnées de manière aléatoire pour les prochaines analyses.

\bigskip
\textbf{Exemple2}

\begin{verbatim}
DATA LIST FILE=exemple32 /X1 TO X5 1-5.
SAMPLE 5 FROM 10.
\end{verbatim}

Cinq observations sont sélectionnées aléatoirement parmi les dix premières observations du fichier 'exemple32'.

\subsection{N OF CASES\index{N OF CASES}}
\label{cases}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{N [OF CASES]}\\
 & number\_cases.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
N OF CASES\index{N OF CASES} permet de sélectionner les premières observations du fichier en cours pour les prochaines analyses. 

Le nombre d'observations à sélectionner est déterminé après la commande N (ou N OF CASES\index{N OF CASES}). Si ce nombre est supérieur au nombre d'observations valides dans le fichier en cours, la commande est ignorée. 

Une commande N OF CASES\index{N OF CASES} ultérieure peut augmenter ou diminuer le nombre d'observations sélectionnées pour l'analyse des données.

\bigskip
Les commandes {\it SAMPLE\index{SAMPLE}}, {\it PROCESS IF\index{PROCESS IF}} et {\it SELECT IF\index{SELECT IF}} sont toujours exécutées avant N OF CASES\index{N OF CASES}, même si elles sont spécifiées après.

Si N OF CASES\index{N OF CASES} est spécifiée après {\it TEMPORARY\index{TEMPORARY}} (cf.~section~\ref{temp}, page~\pageref{temp}), la sélection des données est valable seulement pour la prochaine analyse.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple32 /X1 TO X5 1-5.
N 5.
SAMPLE .5.
FREQ X1 /STATISTICS=NONE.
\end{verbatim}

D'abord, la commande SAMPLE\index{SAMPLE} sélectionne aléatoirement la moitié des observations du fichier 'exemple32', puis la commande N sélectionne les cinq premières observations obtenues. FREQ donne les résultats suivants :

\begin{verbatim}
1.1 FREQUENCIES.  X1: 
+-----------+--------+---------+--------+--------+--------+
|           |        |         |        |  Valid |   Cum  |
|Value Label|  Value |Frequency| Percent| Percent| Percent|
#===========#========#=========#========#========#========#
|           |       1|        2|    40.0|    40.0|    40.0|
|           |       3|        1|    20.0|    20.0|    60.0|
|           |       4|        1|    20.0|    20.0|    80.0|
|           |       5|        1|    20.0|    20.0|   100.0|
#===========#========#=========#========#========#========#
|               Total|        5|   100.0|   100.0|        |
+--------------------+---------+--------+--------+--------+
\end{verbatim}


\subsection{SPLIT FILE\index{SPLIT FILE}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{SPLIT FILE}\\
 & BY var\_list.\\
\multicolumn{2}{l}{SPLIT FILE OFF.}
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande SPLIT FILE\index{SPLIT FILE} permet d'analyser séparément des groupes d'observations. 
Il faut spécifier après le mot-clé {\it BY} la liste des variables dont les valeurs vont déterminer l'ensemble des groupes (à une valeur correspond un groupe). Les groupes sont constitués uniquement par des observations se suivant dans le fichier de données. Pour qu'un seul groupe soit associé à chaque valeur de la variable spécifiée, il faut au préalable ordonner les observations avec la commande {\it SORT CASES\index{SORT CASES}} (cf.~section~\ref{sort}, page~\pageref{sort}).

\bigskip
SPLIT FILE OFF permet de mettre fin à l'analyse séparée des groupes. Quand SPLIT FILE\index{SPLIT FILE} est utilisée après {\it TEMPORARY\index{TEMPORARY}} (cf.~section~\ref{temp}, page~\pageref{temp}), seule la prochaine analyse des données est affectée par la commande.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST LIST NOTABLE FILE=exemple35 
   /SEXE (F1) AGE (F2) TAILLE (F4.2).
SORT CASES BY SEXE.
SPLIT FILE BY SEXE.
DESCR TAILLE.
\end{verbatim}

Les observations sont d'abord ordonnées avec SORT CASES\index{SORT CASES} selon les valeurs de la variable SEXE, puis séparées en groupes avec SPLIT FILE\index{SPLIT FILE} selon ces mêmes valeurs. La commande DESCRIPTIVES\index{DESCRIPTIVES} analyse séparément les deux groupes créés : 

\begin{verbatim}
Variable Value Label
SEXE         1

1.1 DESCRIPTIVES.  Valid cases = 5; cases with missing value(s) = 0.
+--------#-+-----+-------+-------+-------+
|Variable#N| Mean|Std Dev|Minimum|Maximum|
#========#=#=====#=======#=======#=======#
|TAILLE  #5|1.784|   .068|  1.690|  1.850|
+--------#-+-----+-------+-------+-------+

Variable Value Label
SEXE         2

1.2 DESCRIPTIVES.  Valid cases = 5; cases with missing value(s) = 0.
+--------#-+-----+-------+-------+-------+
|Variable#N| Mean|Std Dev|Minimum|Maximum|
#========#=#=====#=======#=======#=======#
|TAILLE  #5|1.662|   .039|  1.600|  1.700|
+--------#-+-----+-------+-------+-------+
\end{verbatim}


\newpage
\section{\textsc{Les fichiers binaires}}

\subsection{SAVE\index{SAVE}}
\label{save}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{SAVE}\\
 & OUTFILE='filename'
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande SAVE\index{SAVE} permet de sauvegarder dans un fichier binaire les données et le dictionnaire, contenant toutes les informations relatives aux variables. Le fichier binaire créé, appelé fichier {\it système}, ne peut être lu que par certains logiciels, dont PSPP, SPSS et R.

\bigskip
La sous-commande {\it OUTFILE} permet de préciser le nom du fichier binaire créé, qui peut être spécifié comme un fichier {\it handle} (cf.~commande {\it FILE HANDLE\index{FILE HANDLE}}, section~\ref{handle}, page~\pageref{handle}).

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST LIST FILE=exemple35 
   /SEXE (F1) AGE (F2) TAILLE (F4.2).
VALUE LABELS /SEXE 1 "homme" 2 "femme".
SAVE OUTFILE=ages.sav.
\end{verbatim}

Les données du fichier 'exemple35' et le dictionnaire sont sauvegardés dans le fichier système 'ages.sav' ({\it .sav} est l'extension conventionnelle pour les fichiers binaires).

\subsection{GET\index{GET}}
\label{get}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{GET}\\
 & FILE='filename'\\
 & /DROP=var\_list\\
 & /KEEP=var\_list\\
 & /RENAME=(old\_names=new\_names)...
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande GET\index{GET} permet de lire un fichier {\it système}, créé par la commande {\it SAVE\index{SAVE}} (cf.~section~\ref{save}, page~\pageref{save}), qui contient des données et un dictionnaire.

\bigskip
La seule sous-commande obligatoire est {\it FILE} ; elle permet de préciser le nom du fichier système lu, qui peut être spécifié comme un fichier {\it handle} (cf.~commande {\it FILE HANDLE\index{FILE HANDLE}}, section~\ref{handle}, page~\pageref{handle}).

\bigskip
Par défaut, toutes les variables du dictionnaire sont lues. Pour spécifier une liste de variables qui ne doivent pas être lues, on utilise la sous-commande {\it DROP}. Pour spécifier la liste des variables qui doivent être lues, on utilise la sous-commande {\it KEEP}.

On peut modifier les noms des variables du dictionnaire en utilisant la sous-commande {\it RENAME}. On spécifie entre parenthèses la liste des noms à modifier, suivie d'un signe égal ('\texttt{=}') et de la liste des nouveaux noms. Plusieurs groupes de noms entre parenthèses peuvent être spécifiés dans une commande RENAME.

\bigskip
Les modifications apportées par KEEP, DROP et RENAME n'affectent pas le fichier système lu par la commande GET\index{GET}.

\bigskip
\textbf{Exemple}

\begin{verbatim}
GET FILE=ages.sav
  /DROP=TAILLE 
  /RENAME=(SEXE=INF1) (AGE=INF2).
\end{verbatim}

GET\index{GET} lit le fichier système 'ages.sav' en excluant la variable TAILLE, et en renommant les variables SEXE et AGE. 

\subsection{EXPORT\index{EXPORT}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{EXPORT}\\
 & OUTFILE='filename'\\
 & /DROP=var\_list\\
 & /KEEP=var\_list\\
 & /RENAME=(old\_names=new\_names)...
\end{tabular}


\bigskip
La commande EXPORT\index{EXPORT} permet de sauvegarder dans un fichier {\it portable} les données et le dictionnaire, contenant toutes les informations relatives aux variables. Le fichier portable ainsi créé peut être lu par d'autres logiciels que PSPP.

\bigskip
La seule sous-commande obligatoire est {\it OUTFILE} ; elle permet de préciser le nom du fichier portable créé, qui peut être spécifié comme un fichier {\it handle} (cf.~commande {\it FILE HANDLE\index{FILE HANDLE}}, section~\ref{handle}, page~\pageref{handle}). 

\bigskip
Par défaut, toutes les variables du dictionnaire sont sauvegardées dans le fichier portable. Pour spécifier une liste de variables qui ne doivent pas être sauvegardées, on utilise la sous-commande {\it DROP}. Pour spécifier la liste des variables qui doivent être sauvegardées, on utilise la sous-commande {\it KEEP}.

On peut sauvegarder les variables du dictionnaire sous des noms différents en utilisant la sous-commande {\it RENAME}. On spécifie entre parenthèses la liste des noms à modifier, suivie d'un signe égal ('\texttt{=}') et de la liste des nouveaux noms. Plusieurs groupes de noms entre parenthèses peuvent être spécifiés dans une commande RENAME.

\bigskip
Les modifications apportées par KEEP, DROP et RENAME concernent uniquement le fichier portable créé par la commande EXPORT\index{EXPORT}.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST LIST FILE=exemple35 
   /SEXE (F1) AGE (F2) TAILLE (F4.2).
VALUE LABELS /SEXE 1 "homme" 2 "femme".
EXPORT OUTFILE=tailles.sav 
   /DROP=AGE 
   /RENAME=(SEXE TAILLE=INF1 INF2).
\end{verbatim}

EXPORT\index{EXPORT} crée le fichier portable 'tailles.sav' sans sauvegarder la variable AGE, et en renommant les variables SEXE et TAILLE.

\subsection{IMPORT\index{IMPORT}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{IMPORT}\\
 & FILE='filename'\\
 & /DROP=var\_list\\
 & /KEEP=var\_list\\
 & /RENAME=(old\_names=new\_names)...
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande IMPORT\index{IMPORT} permet de lire un fichier {\it portable} contenant des données et un dictionnaire. 

\bigskip
La seule sous-commande obligatoire est {\it FILE} ; elle permet de préciser le nom du fichier portable lu, qui peut être spécifié comme un fichier {\it handle} (cf.~commande {\it FILE HANDLE\index{FILE HANDLE}}, section~\ref{handle}, page~\pageref{handle}).

\bigskip
La syntaxe et l'utilisation des sous-commandes {\it DROP}, {\it KEEP} et {\it RENAME} sont les mêmes que pour la commande {\it GET\index{GET}} (cf.~section~\ref{get}, page~\pageref{get}).

\bigskip
\textbf{Exemple}

\begin{verbatim}
IMPORT FILE=tailles.sav.
\end{verbatim}

IMPORT\index{IMPORT} lit le fichier portable 'tailles.sav'.

\subsection{MATCH FILES\index{MATCH FILES}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{MATCH FILES}\\
 & /\{FILE,TABLE\}=\{*,'filename'\}\\
 & /DROP=var\_list\\
 & /KEEP=var\_list\\
 & /IN=var\_name\\
 & /BY var\_list
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande MATCH FILES\index{MATCH FILES} permet la fusion de un ou plusieurs fichiers {\it systèmes}, créés par la commande {\it SAVE\index{SAVE}} (cf.~section~\ref{save}, page~\pageref{save}). Il est possible de fusionner un ou plusieurs fichiers systèmes avec le fichier en cours de traitement.

\bigskip
 Il y a deux manières de fusionner des fichiers :
\begin{itemize}
\item si la sous-commande {\it BY} n'est pas spécifiée, les observations sont jointes une à une dans l'ordre où elles apparaissent dans les fichiers ;
\item si la sous-commande {\it BY} spécifie une variable, appelée variable {\it clé}, la jonction se fait en fonction des valeurs prises par cette variable, et en fonction de l'ordre des observations dans le fichier système.
\end{itemize}

Attention, pour que le fichier obtenu après la fusion soit cohérent, il est nécessaire d'ordonner au préalable les fichiers qui vont être fusionnés en fonction des valeurs de la variable clé (cf.~commande {\it SORT CASES\index{SORT CASES}}, section~\ref{sort}, page~\pageref{sort}).

\bigskip
La sous-commande {\it FILE} précise le nom d'un fichier système, qui peut être spécifié comme un fichier {\it handle} (cf.~commande {\it FILE HANDLE\index{FILE HANDLE}}, section~\ref{handle}, page~\pageref{handle}). Pour fusionner le fichier en cours, on utilise le symbole '\texttt{*}'. On utilise autant de commandes FILE qu'il y a de fichiers à fusionner.

{\it TABLE} peut être utilisée de la même manière que FILE pour spécifier un fichier système. La différence avec FILE est que chaque valeur de la variable clé spécifiée par BY n'apparaît qu'une seule fois dans le nouveau fichier, comme avec le système traditionnel des bases de données.

\bigskip
Chaque sous-commande FILE ou TABLE peut être suivie d'une sous-commande {\it IN}, qui crée une variable numérique avec le nom spécifié. Celle-ci prend la valeur 1 si l'observation provient du fichier qui précède, 0 sinon.

Si les sous-commandes TABLE ou IN sont utilisées, BY doit être spécifiée.

\bigskip
Enfin, {\it DROP} et {\it KEEP} peuvent être utilisées après la spécification des fichiers pour déterminer les variables à exclure ou à garder. La syntaxe et l'utilisation de ces sous-commandes sont les mêmes que pour la commande {\it GET\index{GET}} (cf.~section~\ref{get}, page~\pageref{get}).

\newpage
\textbf{Exemple}

\begin{verbatim}
DATA LIST LIST NOTABLE FILE=exemple41 
   /NOM (A8) SEXE (F1) AGE (F2).
SORT CASES BY NOM.
SAVE OUTFILE=pers.sav.
LIST.

DATA LIST LIST NOTABLE FILE=exemple42 
   /NOM (A8) TAILLE (F4.2).
SORT CASES BY NOM.
SAVE OUTFILE=tail.sav.
LIST.

MATCH FILES 
   /FILE=pers.sav 
   /TABLE=tail.sav 
   /IN=PROV 
   /DROP=SEXE 
   /BY NOM.
LIST.
\end{verbatim}

Les observations des fichiers systèmes 'pers.sav' et 'tail.sav' sont jointes de manière à former un seul fichier. Les jointures sont faites en fonction des valeurs de la variable NOM, rangées au préalable dans l'ordre alphabétique.

\bigskip
Les commandes LIST\index{LIST} donnent les sorties suivantes :

\begin{verbatim}
    NOM SEXE AGE
-------- ---- ---
DUPONT      1  45 
DURAND      1  21 
GERARD      1  35 
MARTIN      2  32 
SORDAN      2  43 



     NOM TAILLE 
-------- ------
DUPONT     1.81 
GERARD     1.85 
MARTIN     1.68 
SORDAN     1.63 






     NOM AGE TAILLE PROV
-------- --- ------ ----
DUPONT    45   1.81    1 
DURAND    21    .      0 
GERARD    35   1.85    1 
MARTIN    32   1.68    1 
SORDAN    43   1.63    1 
\end{verbatim}


\newpage
\section{\textsc{Les statistiques élémentaires}}

Cette section présente les commandes effectuant des analyses statistiques.

\subsection{DESCRIPTIVES\index{DESCRIPTIVES}}
\label{desc}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{DESCRIPTIVES}\\
 & [/VARIABLES=]var\_list\\
 & /MISSING=\{VARIABLE,LISTWISE\} \{INCLUDE\}\\
 & /FORMAT=\{LINE,SERIAL\}\\
 & /SAVE\\
 & /STATISTICS=\{DEFAULT,MEAN,SEMEAN,STDDEV,VARIANCE,\\
 & \indent KURTOSIS,SKEWNESS,RANGE,MINIMUM,MAXIMUM,\\
 & \indent SUM,SESKEWNESS,SEKURTOSIS,ALL\}\\
 & /SORT=\{MEAN,SEMEAN,STDDEV,VARIANCE,KURTOSIS,\\
 & \indent SKEWNESS,RANGE,MINIMUM,MAXIMUM,SUM,\\
 & \indent SESKEWNESS,SEKURTOSIS\} \{(A),(D)\}.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
DESCRIPTIVES\index{DESCRIPTIVES} retourne les résultats des statistiques descriptives demandées par l'utilisateur.

\bigskip
La sous-commande {\it VARIABLES} spécifie la liste des variables numériques qui doivent être analysées (le mot-clé {\it VARIABLES} est facultatif). Toutes les sous-commandes qui suivent sont optionnelles.

\bigskip
{\it MISSING} détermine la manière dont les valeurs manquantes vont être traitées. La sous-commande active par défaut est {\it VARIABLE}, qui exclut toutes les valeurs manquantes ({\it system-missing} et {\it user-missing}) de l'analyse des données. Si {\it LISTWISE} est spécifié, les observations qui contiennent une valeur manquante ({\it system-missing} ou {\it user-missing}) pour une des variables à analyser sont entièrement exclues de l'analyse. {\it INCLUDE} permet d'inclure les valeurs {\it user-missing} dans l'analyse des données. Si INCLUDE est spécifié avec LISTWISE, seules les observations contenant une valeur {\it system-missing} pour une des variables à analyser sont exclues.

\bigskip
{\it FORMAT} modifie la sortie des résultats. Si {\it SERIAL} est spécifié, le nombre de valeurs manquantes et non manquantes est indiqué pour chaque variable. Dans le cas contraire, {\it LINE} est active par défaut et seul le nombre de valeurs traitées pour chaque variable est indiqué.

\bigskip
La sous-commande {\it SAVE} calcule le {\it Z-score} pour chaque variable spécifiée dans la commande VARIABLES. Les Z-scores sont sauvegardés dans de nouvelles variables nommées à partir du nom de la variable d'origine, auquel on ajoute le préfixe \texttt{Z}. On peut choisir le nom du Z-score associé à une variable en le spécifiant entre parenthèses après le nom de cette variable dans la commande VARIABLES.
 

Remarque : Pour obtenir le Z-score d'une variable, on transforme les valeurs de cette variable, en conservant la même échelle, de manière à obtenir une variable dont les valeurs ont pour moyenne 0, et pour écart-type 1. Le Z-score est aussi appelé {\it variable centrée réduite}.

\bigskip
La sous-commande {\it STATISTICS} détermine les statistiques à afficher dans la sortie :
\begin{itemize}
\item \texttt{MEAN} : moyenne empirique
\item \texttt{SEMEAN} : erreur standard de la moyenne
\item \texttt{STDDEV} : écart-type
\item \texttt{VARIANCE} : variance
\item \texttt{KURTOSIS} : kurtosis (mesure l'aplatissement d'une distribution) et erreur standard de la kurtosis 
\item \texttt{SKEWNESS} : skewness (mesure la symétrie d'une distribution) et erreur standard de la skewness
\item \texttt{RANGE} : écart entre le maximum et le minimum
\item \texttt{MINIMUM} : valeur minimum
\item \texttt{MAXIMUM} : valeur maximum
\item \texttt{SUM} : somme des valeurs
\item \texttt{DEFAULT} : moyenne, écart-type, minimum et maximum
\item \texttt{SEKURTOSIS} : erreur standard de la kurtosis 
\item \texttt{SESKEWNESS} : erreur standard de la skewness
\item \texttt{ALL} : toutes les statistiques ci-dessus
\end{itemize}

\bigskip
Enfin, {\it SORT} détermine l'ordre de sortie des résultats en fonction des valeurs de la statistique choisie. On spécifie '\texttt{(A)}' (par défaut) pour désigner l'ordre ascendant, et '\texttt{(D)}' pour l'ordre descendant.

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple43 
   /NOM 1-6 (A) SEXE 8 AGE 10-11 TAILLE 13-16 (2).
DESCRIPTIVES 
   /VARIABLES=AGE TAILLE /SAVE /FORMAT=SERIAL.
DESCRIPTIVES 
   AGE TAILLE /MISSING=LISTWISE /STATISTICS=DEFAULT RANGE.
\end{verbatim}

On calcule des statistiques descriptives pour les variables AGE et TAILLE. La première commande DESCRIPTIVES\index{DESCRIPTIVES} crée les Z-scores associés aux variables et affiche les statistiques par défaut (moyenne, écart-type, minimum et maximum). La deuxième commande DESCRIPTIVES\index{DESCRIPTIVES} exclut des calculs les observations comprenant une valeur manquante pour les variables AGE ou TAILLE, et affiche les statistiques DEFAULT et RANGE.

\newpage
Données du fichier 'exemple43' :
\begin{verbatim}
DUPONT 1 45 1.86
MARTIN 2    1.72
GERARD 1 35 
SORDAN 2 43 1.63
DURAND 1 21 1.75
BOYER  1 22 
DUBEC    32 1.66
\end{verbatim}


On obtient la sortie suivante :
\begin{verbatim}
1.1 DESCRIPTIVES.  Mapping of variables to corresponding Z-scores.
+------+-------+
|Source| Target|
#======#=======#
|AGE   |ZAGE   |
|TAILLE|ZTAILLE|
+------+-------+

1.2 DESCRIPTIVES.  Valid cases = 7; cases with missing value(s) = 3.
+--------#-------+---------+------+-------+-------+-------+
|Variable#Valid N|Missing N| Mean |Std Dev|Minimum|Maximum|
#========#=======#=========#======#=======#=======#=======#
|AGE     #      6|        1|33.000| 10.139| 21.000| 45.000|
|TAILLE  #      5|        2| 1.724|   .090|  1.630|  1.860|
+--------#-------+---------+------+-------+-------+-------+

2.1 DESCRIPTIVES.  Valid cases = 4; cases with missing value(s) = 3.
+--------#-+------+-------+------+-------+-------+
|Variable#N| Mean |Std Dev| Range|Minimum|Maximum|
#========#=#======#=======#======#=======#=======#
|AGE     #4|35.250| 11.087|24.000| 21.000| 45.000|
|TAILLE  #4| 1.725|   .103|  .230|  1.630|  1.860|
+--------#-+------+-------+------+-------+-------+
\end{verbatim}

\newpage
\subsection{FREQUENCIES\index{FREQUENCIES}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{FREQUENCIES}\\
 & [/VARIABLES=]var\_list\\
 & /FORMAT=\{TABLE,NOTABLE,LIMIT(limit)\} \\
 & \indent \{STANDARD,CONDENSE,ONEPAGE[(limit)]\}\\
 & \indent \{SINGLE,DOUBLE\}\\
 & /STATISTICS=\{DEFAULT,MEAN,SEMEAN,MEDIAN,MODE,\\
 & \indent STDDEV,VARIANCE,KURTOSIS,SKEWNESS,RANGE,\\
 & \indent MINIMUM,MAXIMUM,SUM,SESKEWNESS,\\
 & \indent SEKURTOSIS,ALL,NONE\}\\
 & /NTILES=ntiles\\
 & /PERCENTILES=percentiles.
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
FREQUENCIES\index{FREQUENCIES} retourne des tableaux de fréquences pour les variables spécifiées par l'utilisateur. FREQUENCIES\index{FREQUENCIES} peut aussi retourner des statistiques comme la médiane, le mode et les centiles ({\it percentiles}), en plus des statistiques descriptives proposées par la commande {\it DESCRIPTIVES\index{DESCRIPTIVES}} (cf.~section~\ref{desc}, page~\pageref{desc}). 

Les valeurs {\it user-missing} sont exclues de l'analyse des données.

\bigskip
La sous-commande {\it VARIABLES} spécifie la liste des variables qui doivent être analysées (le mot-clé {\it VARIABLES} est facultatif). Toutes les sous-commandes qui suivent sont optionnelles.

\bigskip
La sous-commande {\it FORMAT} détermine les options d'affichage. Par défaut, un tableau de fréquences est affiché pour chaque variable spécifiée dans la sous-commande VARIABLES ({\it TABLE}). Si {\it NOTABLE} est spécifié, ces tableaux ne s'affichent pas. {\it LIMIT} suivi d'un nombre entre parenthèses entraine l'affichage des tableaux seulement si ils contiennent un nombre inférieur ou égal de valeurs.

Si les tableaux sont affichés, on peut choisir leur format en mentionnant une des trois options qui suivent :
\begin{itemize}
\item \texttt{STANDARD} (option par défaut) : pour que les tableaux contiennent les informations complètes ;
\item \texttt{CONDENSE} : pour que les tableaux contiennent moins d'informations et occupent moins d'espace ;
\item \texttt{ONEPAGE(n)} : pour que les tableaux soient affichés en format condensé si ils contiennent plus de valeurs que le nombre spécifié (si le nombre n'est pas spécifié, il est par défaut égal à 50).
\end{itemize}

Enfin, si {\it DOUBLE} est spécifié, les valeurs dans les tableaux sont espacées par un saut de ligne (ce n'est pas le cas avec {\it SINGLE}, option par défaut).

Remarque : les labels des variables apparaissent en haut de chaque tableau de fréquences.

\newpage
Les statistiques qui peuvent être spécifiées dans la sous-commande {\it STATISTICS} sont les mêmes que pour la commande {\it DESCRIPTIVES\index{DESCRIPTIVES}} (cf.~section~\ref{desc}, page~\pageref{desc}), avec trois nouvelles options possibles :
\begin{itemize}
\item \texttt{MEDIAN} : médiane ;
\item \texttt{MODE} : mode (s'il y a plusieurs modes, la plus petite valeur est retournée); 
\item \texttt{NONE} : aucune statistique.
\end{itemize}

\bigskip
La sous-commande {\it PERCENTILES} permet d'afficher les centiles spécifiés par l'utilisateur. Les centiles doivent être spécifiés comme une liste de nombres compris entre 0 et 100, séparés par des virgules ou des espaces. 

Remarque : des bugs peuvent apparaître lors de l'affichage des centiles ; aussi, pour calculer ces derniers, il est plutôt conseillé d'utiliser la commande {\it EXAMINE\index{EXAMINE}} (cf.~section~\ref{examine}, page~\pageref{examine}).

{\it NTILES} répartit les valeurs en N parties égales et retourne les quantiles correspondant aux coupures. Par exemple, \texttt{NTILES=4} retourne les valeurs des quartiles. Un seul nombre peut être précisé après NTILES, aussi, plusieurs sous-commandes NTILES sont autorisées.

\bigskip
\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple44 /X1 8 X2 10-11.
VARIABLE LABELS X1 "Sexe" X2 "Age".
VALUE LABELS X1 1 "Homme" 2 "Femme".
FREQUENCIES X1 /STATISTICS=NONE .
FREQ X2 /FORMAT=LIMIT(5) 
        /STAT=MODE 
        /NTILES=4 
        /PERCENTILES=10,90.

\end{verbatim}

La première commande FREQUENCIES\index{FREQUENCIES} produit le tableau de fréquences de la variable X1 ; aucune statistique n'est retournée. 

La deuxième commande FREQUENCIES\index{FREQUENCIES} analyse la variable X2 et produit la table si elle ne contient pas plus de 5 valeurs. Les statistiques retournées sont le mode, les quartiles, le premier décile et le dernier décile.

\newpage
On obtient la sortie suivante : 
\begin{verbatim}
1.1 FREQUENCIES.  X1: Sexe
+-----------+--------+---------+--------+--------+--------+
|           |        |         |        |  Valid |   Cum  |
|Value Label|  Value |Frequency| Percent| Percent| Percent|
#===========#========#=========#========#========#========#
|Homme      |       1|        4|    40.0|    40.0|    40.0|
|Femme      |       2|        6|    60.0|    60.0|   100.0|
#===========#========#=========#========#========#========#
|               Total|       10|   100.0|   100.0|        |
+--------------------+---------+--------+--------+--------+

2.1 FREQUENCIES.  X2: Age
+-------------------+------+
|N           Valid  |     9|
|            Missing|     1|
|Mean               |34.222|
|Mode               |35.000|
|Percentiles 0      |21.000|
|            10     |21.800|
|            25     |26.000|
|            50     |35.000|
|            75     |40.000|
|            90     |44.600|
|            100    |51.000|
+-------------------+------+
\end{verbatim}


\newpage
\subsection{EXAMINE\index{EXAMINE}}
\label{examine}
\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{EXAMINE}\\
 & [/VARIABLES=]var\_list\\
 & /STATISTICS=\{NONE,DESCRIPTIVES,EXTREME[(n)]\} \\
 & /PLOT=\{NONE,BOXPLOT,NPPLOT,HISTOGRAM\} \\
 & /CINTERVAL n\\
 & /PERCENTILES=[value\_list]=\{NONE,HAVERAGE,WAVERAGE,\\
 & \indent ROUND,AEMPIRICAL,EMPIRICAL\} \\
 & /MISSING=\{LISTWISE,PAIRWISE\} \{EXCLUDE,INCLUDE\}. 
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande EXAMINE\index{EXAMINE} est utilisée pour obtenir des statistiques descriptives et des graphiques.

\bigskip
La sous-commande {\it VARIABLES} spécifie la liste des variables qui doivent être analysées (le mot-clé {\it VARIABLES} est facultatif). Toutes les sous-commandes qui suivent sont optionnelles.

\bigskip
La sous-commande {\it STATISTICS} détermine les statistiques qui vont être affichées (par défaut, aucune statistique n'est affichée). {\it DESCRIPTIVES} permet d'afficher une table présentant les statistiques descriptives classiques (médiane, moyenne, variance, écart interquartile, etc.).

{\it EXTREME} est utilisée pour afficher dans une table les valeurs extrêmes des variables spécifiées dans la sous-commande VARIABLES. {\it EXTREME(n)} permet d'afficher les n valeurs les plus faibles et les n valeurs les plus élevées. Si aucun nombre n'est spécifié entre parenthèses, les cinq valeurs extrêmes sont affichées. 

\bigskip
La sous-commande {\it PLOT} permet d'obtenir le graphique demandé par l'utilisateur. 

Remarque : on ne peut pas visualiser le graphique dans le fichier listing ASCII {\it pspp.list}. Il faut donc exécuter le fichier syntaxe en tapant la commande\\ \texttt{pspp -o html} {\it nom\_fichier} dans le shell UNIX pour obtenir l'ensemble des sorties dans un fichier listing html ({\it pspp.html}). On peut ensuite visualiser les sorties en ouvrant le fichier {\it pspp.html} avec un navigateur. Les sorties autres que le graphique peuvent tout de même apparaître dans le fichier {\it pspp.list} si on exécute le fichier syntaxe avec la commande classique \texttt{pspp} {\it nom\_fichier}.

 Voici la liste des graphiques proposés :

\begin{itemize}
\item \texttt{BOXPLOT} : ``boîte à moustaches''
\item \texttt{NPPLOT} : ``doite de Henry'' (test de normalité)
\item \texttt{HISTOGRAM} : histogramme
\end{itemize}

Si la sous-commande PLOT n'est pas spécifiée, aucun graphique n'est affiché.

\bigskip
{\it CINTERVAL} spécifie le niveau de l'intervalle de confiance à utiliser pour le calcul des statistiques descriptives de la sous-commande STATISTICS. Par défaut, le niveau de confiance est égal à 95\%.

\bigskip
La sous-commande {\it PERCENTILES} spécifie les centiles qui doivent être affichés et la méthode utilisée pour les calculer. Par défaut, les centiles 5, 10, 25, 50, 75, 90 et 95 sont affichés. Voici la liste des méthodes proposées pour calculer les centiles :

\begin{itemize}
\item \texttt{HAVERAGE} 
\item \texttt{WAVERAGE}
\item \texttt{ROUND}
\item \texttt{AEMPIRICAL}
\item \texttt{EMPIRICAL}
\end{itemize}

La méthode utilisée par défaut est HAVERAGE. Si la sous-commande PERCENTILES n'est pas spécifiée, aucun centile n'est affiché.

\bigskip
La sous-commande {\it MISSING} détermine la manière de traiter les valeurs manquantes. Par défaut, si une observation contient une valeur manquante pour une des variables à analyser, elle est entièrement exclue des analyses ({\it LISTWISE}). {\it PAIRWISE} exclut l'observation contenant une valeur manquante seulement pour l'analyse de la variable concernée par la valeur manquante.

Si {\it INCLUDE} est spécifié, les valeurs {\it user-missing} sont considérées comme étant non-manquantes, et sont donc incluses dans les analyses. Par défaut, ces dernières sont exclues des analyses ({\it EXCLUDE}).

\bigskip
\textbf{Exemple}

\begin{verbatim}
DATA LIST NOTABLE FILE=exemple45 /X2 10-11 X3 13-16 (2).
VARIABLE LABELS  X2 "Age" X3 "Taille".
EXAMINE X2 
   /STATISTICS=DESCRIPTIVES EXTREME(2) 
   /PLOT=BOXPLOT 
   /PERCENT.
\end{verbatim}

\bigskip
La commande EXAMINE\index{EXAMINE} analyse la variable X2. STATISTICS affiche les statistiques descriptives et les valeurs extrêmes de la variable. PLOT affiche la ``boite à moustaches'', et PERCENT affiche les centiles calculés par défaut.

\newpage
La sortie obtenue dans le fichier listing est la suivante : 

\begin{verbatim}
1.1 EXAMINE.  Case Processing Summary
#===#===============================#
#   #             Cases             #
#   #----------+---------+----------#
#   #   Valid  | Missing |   Total  #
#   #--+-------+-+-------+--+-------#
#   # N|Percent|N|Percent| N|Percent#
#===#==#=======#=#=======#==#=======#
#Age#11|   100%|0|     0%|11|   100%#
#===#==#=======#=#=======#==#=======#


1.2 EXAMINE.  Extreme Values
#===========#===========#=====#
#           #Case Number|Value#
#===========#===========#=====#
#AgeHighest1#          9|51.00#
#          2#         11|50.00#
#   --------#-----------+-----#
#    Lowest1#          2|21.00#
#          2#          6|22.00#
#===========#===========#=====#


1.3 EXAMINE.  Descriptives
#==============================================#=========#==========#
#                                              #Statistic|Std. Error#
#==============================================#=========#==========#
#AgeMean                                       #  33.82  |   3.349  #
#   95% Confidence Interval for MeanLower Bound#  34.034 |          #
#                                   Upper Bound#  33.603 |          #
#   5% Trimmed Mean                            #  33.58  |          #
#   Median                                     #  35.00  |          #
#   Variance                                   # 123.364 |          #
#   Std. Deviation                             #  11.107 |          #
#   Minimum                                    #  21.000 |          #
#   Maximum                                    #  51.000 |          #
#   Range                                      #  30.000 |          #
#   Interquartile Range                        #  21.00  |          #
#   Skewness                                   #   .368  |   .661   #
#   Kurtosis                                   #  -1.321 |   1.279  #
#==============================================#=========#==========#


1.4 EXAMINE.  Percentiles
#==================#=========================================#
#                  #                  Percentiles            #
#                  #-----+-----+-----+-----+-----+-----+-----#
#                  #  5  |  10 |  25 |  50 |  75 |  90 |  95 #
#===#==============#=====#=====#=====#=====#=====#=====#=====#
#Age|HAverage      #12.60|21.20|22.00|35.00|43.00|50.80|51.00#
#   |Tukey's Hinges#     |     |24.00|35.00|41.50|     |     #
#===#==============#=====#=====#=====#=====#=====#=====#=====#


\end{verbatim}




\subsection{CROSSTABS\index{CROSSTABS}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{CROSSTABS}\\
 & {\it (mode integer)}\\

\bigskip
 & \indent [/VARIABLES=var\_list (low,high)...]\\
 & [/TABLES=]var\_list BY var\_list [BY var\_list]... \\
 & /MISSING=\{TABLE,INCLUDE,REPORT\} \\
 & /CELLS=\{COUNT,ROW,COLUMN,TOTAL,EXPECTED,\\
 & \indent RESIDUAL,SRESIDUAL,ASRESIDUAL,ALL,NONE\} \\
 & /STATISTICS=\{NONE,CHISQ,PHI,CC,LAMBDA,UC,BTAU,\\
 & \indent CTAU,RISK,GAMMA,D,KAPPA,ETA,CORR,ALL\}
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande CROSSTABS\index{CROSSTABS} est utilisée pour afficher des tables de contingence (tableaux croisés) représentant la distribution des variables spécifiées par l'utilisateur.

\bigskip
La sous-commande {\it TABLES} précise les tables qui vont être affichées. Les tables peuvent être de n'importe quelle dimension. On peut spécifier autant de sous-commandes TABLES qu'on le souhaite. Si on spécifie deux listes de variables séparées par BY, chaque variable de la première liste est croisée avec toutes les variables de la deuxième liste.

\bigskip
En {\it mode integer}, l'utilisateur précise un intervalle de valeurs pour chaque variable apparaissant dans la sous-commande TABLES. Les valeurs a l'extérieur de cet intervalle sont considérées comme manquantes. En mode integer, les valeurs possibles pour les variables sont les entiers compris dans les intervalles spécifiés. Toutes les combinaisons de valeurs possibles sont affichées dans les tables. Si les valeurs des variables ne sont pas des nombres entiers, alors la partie décimale est tronquée.

Pour utiliser le mode integer, on doit spécifier la sous-commande {\it VARIABLES} avant la sous-commande TABLES. Après chaque nom de variable, on précise l'intervalle de valeurs que l'on va étudier. Cet intervalle est déterminé par deux entiers spécifiés entre parenthèses.

La sous-commande TABLES est obligatoire en mode général comme en mode integer, mais le mot-clé TABLES n'est obligatoire qu'en mode integer.

\bigskip
{\it MISSING} détermine la manière dont les valeurs manquantes vont être traitées. Par défaut, toutes les valeurs manquantes sont exclues des analyses ({\it TABLE}). 

On spécifie {\it INCLUDE} pour inclure les valeurs {\it user-missing} dans l'analyse des données. 

En mode integer seulement, on peut spécifier {\it REPORT} pour faire apparaître les valeurs {\it user-missing} dans les tables, mais marquées avec un '\texttt{M}'. En revanche, ces valeurs sont exclues des calculs statistiques.

\bigskip
{\it CELLS} détermine le contenu des cases des tables de contingence. Voici la liste des options possibles :
\begin{itemize}
\item \texttt{COUNT} (option par défaut) : effectif observé ;
\item \texttt{ROW} : pourcentage en lignes ;
\item \texttt{COLUMN} : pourcentage en colonnes ;
\item \texttt{TOTAL} : pourcentage total ;
\item \texttt{EXPECTED} : effectif attendu si les deux variables qui composent la table sont statistiquement indépendantes ;
\item \texttt{RESIDUAL} : différence entre l'effectif observé et l'effectif attendu (résidu) ; 
\item \texttt{SRESIDUAL} : résidu standardisé ;
\item \texttt{ASRESIDUAL} : résidu standardisé ajusté ;
\item \texttt{ALL} : toutes les options ci-dessus ;
\item \texttt{NONE} : supprime la table de contingence.
\end{itemize}

Si on spécifie le mot-clé CELLS seul, COUNT, ROW, COLUMN et TOTAL sont sélectionnées. Si CELLS n'est pas spécifié, COUNT est sélectionnée par défaut.

\bigskip
{\it STATISTICS} détermine les statistiques à afficher :
\begin{itemize}
\item \texttt{CHISQ} : test du chi-deux de Pearson (test d'indépendance entre deux variables), test du rapport de vraisemblance, test exact de Fisher (tables $2 \times 2$), correction de continuité de Yates (tables $2 \times 2$)
\item \texttt{PHI} : Phi
\item \texttt{CC} : coefficient de contingence
\item \texttt{LAMBDA} : Lambda
\item \texttt{UC} : coefficient d'incertitude
\item \texttt{BTAU} : Tau-b de Kendall
\item \texttt{CTAU} : Tau-c de Kendall
\item \texttt{RISK} : risque relatif (tables $2 \times 2$)
\item \texttt{GAMMA} : Gamma
\item \texttt{D} : D de Somers
\item \texttt{KAPPA} : coefficient Kappa de Cohen (tables carrées, valeurs des lignes et des colonnes identiques)
\item \texttt{ETA} : Eta
\item \texttt{CORR} : r de Pearson et coefficient de corrélation de Spearman
\item \texttt{ALL} : toutes les statistiques ci-dessus
\item \texttt{NONE} : aucune statistique
\end{itemize}

Si on spécifie le mot-clé STATISTICS seul, la statistique CHISQ est affichée. Si STATISTICS n'est pas spécifié, aucune statistique n'est affichée.

Remarque : ces statistiques présentent quelques bugs ; aussi, le recours systématique à ces dernières n'est pas recommandé.

\bigskip
\textbf{Exemple}

\bigskip
Cf.~{\it Exemple d'utilisation du logiciel : L'analyse des données et Les résultats}, sections~\ref{excross} et \ref{extest}, pages~\pageref{excross} et \pageref{extest}.


\newpage
\subsection{T-TEST\index{T-TEST}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{T-TEST}\\
 & {\it (test 1)}\\
 & \indent TESTVAL=test\_value\\
\bigskip
 & \indent /VARIABLES=var\_list\\
 & {\it (test 2)}\\
 & \indent GROUPS=var(value1[,value2])\\
\bigskip
 & \indent /VARIABLES=var\_list\\
 & {\it (test 3)}\\
\bigskip
 & \indent PAIRS=var\_list [WITH var\_list [(PAIRED)]]\\
 & {\it (tous les tests)}\\
 & \indent /MISSING=\{ANALYSIS,LISTWISE\} \{EXCLUDE,INCLUDE\} \\
 & \indent /CRITERIA=CIN(confidence).
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
\centerline{{\it Test de comparaison de la moyenne à une valeur fixée (test 1)}}

\bigskip
Ce test est utilisé pour comparer la moyenne de une ou plusieurs variables à la valeur spécifiée dans la sous-commande {\it TESTVAL}. {\it VARIABLES} permet de spécifier la liste des variables qui vont être testées.

\bigskip
\centerline{{\it Test de comparaison des moyennes de deux échantillons indépendants : test de Student (test 2)}}

\bigskip
Le test de Student est utilisé pour savoir si deux groupes d'observations ont la même moyenne pour les variables spécifiées dans la sous-commande {\it VARIABLES}. 

Ce test s'inscrit dans la suite logique du test de Fisher (test d'égalité des variances). Si l'hypothèse d'égalité des variances n'est pas acceptée, le test de Student reste valable pour des échantillons de grande taille.

\bigskip
Les valeurs de la variable spécifiée dans la sous-commande {\it GROUPS} déterminent les deux groupes d'observations. Il y a trois manières de déterminer les deux groupes :
\begin{itemize}
\item Préciser deux valeurs entre parenthèses : si la variable spécifiée dans la sous-commande GROUPS prend la première valeur, l'observation appartient au premier groupe ; si la variable prend la deuxième valeur, l'observation appartient au deuxième groupe.
\item Préciser une valeur entre parenthèses : si la variable spécifiée dans la sous-commande GROUPS prend une valeur strictement inférieure à la valeur spécifiée, l'observation appartient au premier groupe ; si la variable prend une valeur supérieure ou égale, l'observation appartient au deuxième groupe.
\item Si aucune valeur n'est spécifiée entre parenthèses, les valeurs par défaut 1.0 et 2.0 déterminent les deux groupes.
\end{itemize}

\bigskip
\centerline{{\it Test de comparaison des moyennes de deux échantillons appariés (test 3)}}

\bigskip
Ce test est utilisé pour comparer les moyennes de deux variables mesurées sur les mêmes ``individus''. Il y a trois manières différentes de spécifier les variables à tester :
\begin{itemize}
\item Spécifier une liste de variables : chaque variable de la liste est comparée avec toutes les autres variables. Exemple : \texttt{PAIRS=X1 X2 X3} (X1 comparée avec X2, X1 comparée avec X3 et X2 comparée avec X3).
\item Spécifier deux listes de variables séparées par le mot-clé {\it WITH} : chaque variable de la première liste est comparée à toutes les variables de la deuxième liste. Exemple : \texttt{PAIRS=X1 X2 WITH X3} (X1 comparée avec X3 et X2 comparée avec X3).
\item Spécifier deux listes de variables séparées par {\it WITH}, et suivies par {\it (PAIRED)} : les variables sont comparées deux à deux dans l'ordre spécifié (les deux listes doivent avoir le même nombre de variables). Exemple : \texttt{PAIRS=X1 X2 WITH X3 X4 (PAIRED)} (X1 comparée avec X3 et X2 comparée avec X4).
\end{itemize}

\bigskip
\centerline{{\it Commandes communes à tous les tests}}

\bigskip
{\it MISSING} détermine la manière de traiter les observations contenant des valeurs manquantes. Par défaut, les observations contenant une valeur manquante (pour une des variables spécifiées dans les sous-commandes VARIABLES, \\GROUPS ou PAIRS) sont exclues seulement pour les tests analysant la variable contenant la valeur manquante ({\it ANALYSIS}). Si {\it LISTWISE} est spécifié, les observations contenant une valeur manquante pour une des variables à analyser sont exclues de toutes les analyses.

Si {\it INCLUDE} est spécifié, les valeurs {\it user-missing} sont considérées comme étant non-manquantes, et sont donc incluses dans les analyses. Par défaut, ces dernières sont exclues des analyses ({\it EXCLUDE}).

\bigskip
La sous-commande {\it CRITERIA} précise le niveau de l'intervalle de confiance à utiliser pour les tests. Après le mot-clé {\it CIN}, il faut spécifier entre parenthèses une valeur comprise entre 0 et 1. Par défaut, le niveau de confiance est égal à 95\% (0.95).

\bigskip
\textbf{Exemple}

\bigskip
Cf.~{\it Exemple d'utilisation du logiciel : L'analyse des données et Les résultats}, sections~\ref{excross} et \ref{extest}, pages~\pageref{excross} et \pageref{extest}.

\newpage
\subsection{ONEWAY\index{ONEWAY}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{ONEWAY}\\
 & [/VARIABLES=]var\_list BY var\\
 & /MISSING=\{ANALYSIS,LISTWISE\} \{EXCLUDE,INCLUDE\} \\
 & /CONTRAST=value1[,value2,...,valueN]\\
 & /STATISTICS=\{DESCRIPTIVES,HOMOGENEITY\}\\
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
La commande ONEWAY\index{ONEWAY} est utilisée pour l'analyse de variance à un facteur, c'est-à-dire pour tester la différence entre les moyennes de plusieurs échantillons. Le principe du test de la variance est le suivant :

{\it $H_0$ : les moyennes sont toutes égales}

{\it $H_1$ : une moyenne au moins est différente des autres}

Pour pouvoir utiliser ce test, il convient de réaliser au préalable un test d'{\it homogénéité des variances} (tester l'égalité des variances). Si les variances sont hétérogènes, le test de la variance n'est pas utilisable.

\bigskip
La liste des variables à analyser est spécifiée dans la sous-commande {\it VARIABLES} (le mot-clé VARIABLES n'est pas obligatoire). On spécifie après {\it BY} le nom de la variable dont les valeurs vont déterminer les différents groupes d'observations.

\bigskip
{\it MISSING} détermine la manière de traiter les observations contenant des valeurs manquantes. Par défaut, les observations contenant une valeur manquante (pour une des variables spécifiées dans la sous-commande VARIABLES) sont exclues seulement pour les tests analysant la variable contenant la valeur manquante ({\it ANALYSIS}). Si {\it LISTWISE} est spécifié, les observations contenant une valeur manquante pour une des variables à analyser sont exclues de toutes les analyses.

Si {\it INCLUDE} est spécifié, les valeurs {\it user-missing} sont considérées comme étant non-manquantes, et sont donc incluses dans les analyses. Par défaut, ces dernières sont exclues des analyses ({\it EXCLUDE}).

\bigskip
{\it CONTRAST} peut être utilisée lorsqu'on anticipe des différences entre certains groupes, que l'on veut donc comparer entre eux. CONTRAST est suivi d'une liste de valeurs correspondant aux coefficients attribués aux groupes (le nombre de coefficients doit être égal au nombre de groupes). La somme des coefficients attribués doit être égale à 0. Pour obtenir plusieurs tests avec contraste, on peut spécifier jusqu'à dix sous-commandes CONTRAST.

\newpage
La sous-commande {\it STATISTICS} permet d'afficher deux types de statistiques :
\begin{itemize}
\item \texttt{DESCRIPTIVES} : affiche des statistiques descriptives sur les différents groupes (nombre d'observations, moyenne, écart-type, erreur standard, intervalle de confiance à 95\%, minimum et maximum) ;
\item \texttt{HOMOGENEITY} : affiche les résultats du test d'homogénéité des variances.
\end{itemize}



\newpage
\section{\textsc{Les utilitaires}}

\subsection{COMMENT\index{COMMENT}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{COMMENT texte.}\\
\multicolumn{2}{l}{{\it ou} *texte.}\\
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
COMMENT\index{COMMENT} est utilisée pour écrire des commentaires sur le fichier syntaxe. Le nombre de lignes de commentaires n'est pas limité. On met fin aux commentaires avec un point ('\texttt{.}') ou un saut de ligne.

\subsection{ECHO\index{ECHO}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{ECHO ``texte''.}\\
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
ECHO\index{ECHO} permet à l'utilisateur d'afficher un texte avec la sortie standard. Le texte doit être délimité par des apostrophes.

\subsection{TITLE\index{TITLE}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{TITLE ``titre''.}\\
\multicolumn{2}{l}{{\it ou} TITLE titre.}\\
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
TITLE\index{TITLE} permet de donner un titre à la sortie obtenue suite à l'exécution du fichier syntaxe. Le titre apparaît en haut de chaque page de la sortie. Si le titre n'est pas entouré d'apostrophes, les lettres sont écrites en majuscules.

\subsection{SUBTITLE\index{SUBTITLE}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{SUBTITLE ``sous-titre''.}\\
\multicolumn{2}{l}{{\it ou} SUBTITLE sous-titre.}\\
\end{tabular}

\newpage
\textbf{Description}

\bigskip
SUBTITLE\index{SUBTITLE} permet de donner un sous-titre à la sortie obtenue suite à l'exécution du fichier syntaxe. Le sous-titre apparaît en haut de chaque page de la sortie, sous le titre. Si le sous-titre n'est pas entouré d'apostrophes, les lettres sont écrites en majuscules.

\subsection{INCLUDE\index{INCLUDE}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{INCLUDE 'nom\_fichier'.}\\
\multicolumn{2}{l}{{\it ou} @nom\_fichier.}\\
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
INCLUDE\index{INCLUDE} permet d'inclure un fichier de commandes dans le fichier syntaxe courant. Le fichier est alors lu par PSPP comme une partie du fichier syntaxe initial.


\subsection{QUIT\index{QUIT}}

\textbf{Syntaxe}

\bigskip
\begin{tabular}{p{1cm} l}
\multicolumn{2}{l}{QUIT.}\\
\multicolumn{2}{l}{{\it ou} EXIT\index{EXIT}.}\\
\end{tabular}

\bigskip
\textbf{Description}

\bigskip
QUIT\index{QUIT} est utilisée pour mettre fin à une session en mode ligne et retourner dans le shell UNIX. Cette commande ne peut pas être utilisée dans un fichier syntaxe.





\newpage
\section{\textsc{Les expressions mathématiques}}

\label{math}
Les expressions mathématiques qui apparaissent dans les commandes partagent une syntaxe commune. Des nombres, des chaînes de caractères, des noms de variables ou des opérateurs peuvent composer des expressions mathématiques. Il existe cinq types d'opérateurs : groupant, arithmétiques, logiques, relationnels, et les fonctions. Les opérateurs nécessitent un ou plusieurs paramètres et renvoient un unique résultat.

\subsection{Les booléens}
\label{booleen}
Certains opérateurs fonctionnent avec des booléens, c'est-à-dire des variables qui représentent le fait qu'une condition soit satisfaite ou non. Les booléens peuvent prendre trois valeurs : 0 (faux), 1 (vrai), et system-missing (inconnue).

\subsection{Les opérateurs groupant}

Ce sont les parenthèses : '\texttt{( )}'. L'expression qu'elles contiennent est évaluée en priorité. Les parenthèses sont aussi utilisées pour désigner les arguments des fonctions.

\subsection{Les opérateurs arithmétiques}

Ces opérateurs ont pour paramètres des valeurs ou des variables numériques, et renvoient des résultats numériques.
\begin{itemize}
\item \texttt{a + b} : retourne la somme de {\it a} et {\it b}.
\item \texttt{a - b} : soustrait {\it b} à {\it a} et retourne la différence.
\item \texttt{a * b} : retourne le produit de {\it a} et {\it b}.
\item \texttt{a / b} : divise {\it a} par {\it b} et retourne le quotient. Si {\it b} vaut zéro, le résultat est {\it system-missing}.
\item \texttt{a ** b} : élève {\it a} à la puissance {\it b}. Si {\it a} est négatif et si {\it b} n'est pas un entier, le résultat est {\it system-missing}. Le résultat de '\texttt{0**0}' est aussi {\it system-missing}.
\end{itemize} 

\subsection{Les opérateurs logiques}
Ces opérateurs renvoient 'vrai', 'faux', ou 'missing' selon la valeur des paramètres.

\bigskip
\begin{itemize}
\item \texttt{a AND b} ou \texttt{a \& b} : vrai si {\it a} et {\it b} sont vrais, faux dans le cas contraire. Si un paramètre est faux, le résultat est faux, même si l'autre paramètre est {\it missing}. Si les deux paramètres sont {\it missing}, le résultat est {\it missing}.
\item \texttt{a OR b} ou \texttt{a | b} : vrai si {\it a} est vrai ou si {\it b} est vrai. Si un paramètre est vrai, le résultat est vrai, même si l'autre paramètre est {\it missing}. Si les deux paramètres sont {\it missing}, le résultat est {\it missing}.
\item \texttt{NOT a} ou \texttt{\~~a} : vrai si {\it a} est faux. Si le paramètre est {\it missing}, le résultat est {\it missing}.
\end{itemize} 

\subsection{Les opérateurs relationnels}

Ces opérateurs comparent des valeurs et retournent un résultat de type booléen. On ne peut pas comparer un nombre à une chaîne de caractères.

\bigskip
\begin{itemize}
\item \texttt{a EQ b} ou \texttt{a = b} : vrai si {\it a} est égal à {\it b}.
\item \texttt{a LE b} ou \texttt{a <= b} : vrai si {\it a} est inférieur ou égal à {\it b}.
\item \texttt{a LT b} ou \texttt{a < b} : vrai si {\it a} est strictement inférieur à {\it b}.
\item \texttt{a GE b} ou \texttt{a >= b} : vrai si {\it a} est supérieur ou égal à {\it b}.
\item \texttt{a GT b} ou \texttt{a > b} :vrai si {\it a} est strictement supérieur à {\it b}.
\item \texttt{a NE b} ou \texttt{a \~{}= b} ou \texttt{a <> b} : vrai si {\it a} n'est pas égal à {\it b}.
\end{itemize} 


\subsection{Les fonctions}

Les fonctions ont une syntaxe commune : un nom de fonction, suivi de un ou plusieurs arguments entre parenthèses. Les noms des fonctions ne sont pas réservés. Une fonction est traitée comme telle seulement si son nom est suivi par une parenthèse ouvrante. Ainsi, '\texttt{EXP}' fait référence à la variable EXP.

\subsubsection{Les fonctions mathématiques}

Ces fonctions prennent des arguments numériques et retournent des résultats numériques.

\bigskip
\begin{itemize}
\item \texttt{EXP(nombre)} : fonction exponentielle.
\item \texttt{LG10(nombre)} : fonction logarithme décimal, si le nombre est négatif, le résultat est {\it system-missing}.
\item \texttt{LN(nombre)} :  fonction logarithme népérien, si le nombre est négatif, le résultat est {\it system-missing}.
\item \texttt{SQRT(nombre)} : fonction racine carrée, si le nombre est négatif, le résultat est {\it system-missing}.
\item \texttt{ABS(nombre)} : retourne la valeur absolue d'un nombre.
\item \texttt{MOD(numérateur, dénominateur)} : retourne le reste de la division du numérateur par le dénominateur. Si le dénominateur vaut 0, le résultat est {\it system-missing}.
\item \texttt{MOD10(nombre)} : retourne le reste de la division d'un nombre par 10.
\item \texttt{RND(nombre)} : retourne la partie entière d'un nombre.
\end{itemize} 

\subsubsection{Les fonctions trigonométriques}

Ces fonctions prennent des arguments numériques et retournent des résultats numériques.

\bigskip
\begin{itemize}
\item \texttt{COS(nombre)} : fonction cosinus, le nombre est en radians.
\item \texttt{SIN(nombre)} : fonction sinus, le nombre est en radians.
\item \texttt{TAN(nombre)} : fonction tangente, le nombre est en radians. Si le nombre est un multiple de \texttt{pi/2}, le résultat est {\it system-missing}.
\item \texttt{ARCOS(nombre)} ou \texttt{ACOS(nombre)} : fonction arccosinus (réciproque de la fonction cosinus), en radians. Si le nombre n'est pas compris entre -1 et 1, le résultat est {\it system-missing}.
\item \texttt{ARSIN(nombre)} ou \texttt{ASIN(nombre)} : fonction arcsinus (réciproque de la fonction sinus), en radians. Si le nombre n'est pas compris entre -1 et 1, le résultat est {\it system-missing}.
\item \texttt{ARTAN(nombre)} ou \texttt{ATAN(nombre)} : fonction arctangente (réciproque de la fonction tangente), en radians.
\end{itemize} 

\subsubsection{Les fonctions pour les valeurs manquantes}

Ces fonctions prennent des arguments numériques et retournent divers types de résultats. Lors de l'évaluation des expressions, les valeurs {\it user-missing} pour les variables numériques sont transformées en valeurs {\it system-missing}.

\begin{itemize}
\item \texttt{MISSING(expression)} : retourne 1 si l'expression a une valeur {\it missing}, 0 sinon.
\item \texttt{SYSMIS(expression)} : retourne 1 si l'expression a une valeur {\it system-missing}, 0 sinon.
\item \texttt{NMISS(expr[, expr...])} : retourne le nombre de valeurs {\it missing} dans la liste, les arguments doivent être des expressions numériques.
\item \texttt{NVALID(expr[, expr...])} : retourne le nombre de valeurs qui ne sont pas {\it missing} dans la liste, les arguments doivent être des expressions numériques.
\item \texttt{VALUE(variable)} : empêche les valeurs {\it user-missing} de la variable d'être transformées en valeurs {\it system-missing}, et retourne la valeur réelle de la variable.
\end{itemize} 

\subsubsection{Les fonctions pour les chaînes de caractères}

\begin{itemize}
\item \texttt{CONCAT(string, string[, ...])} : retourne une chaîne de caractères correspondant aux arguments concaténés. Par exemple, 
\texttt{CONCAT('abc','def')} retourne la valeur \texttt{'abcdef'}.
\item \texttt{LENGTH(string)} : retourne le nombre de caractères de l'argument.
\item \texttt{NUMBER(string, format)} : retourne le nombre résultant de la transformation de la chaîne de caractères en un nombre à partir du format spécifié. Si la largeur {\it w} précisée dans le format est inférieure à la longueur de la chaîne de caractères, seulement les {\it w} premiers caractères sont pris en compte. Par exemple, \texttt{NUMBER('123',~F3.0)} et \texttt{NUMBER('1234',~F3.0)} renvoient la valeur \texttt{123}.
\item \texttt{STRING(nombre, format)} : retourne la chaîne de caractères correspondant au nombre auquel on applique le format spécifié. Par exemple,\\
 \texttt{STRING(123.56,~F5.1)} renvoie la valeur \texttt{'123.6'}.
\end{itemize} 

\subsubsection{Les fonctions statistiques}

Ces fonctions peuvent retourner des valeurs non manquantes même si plusieurs de leurs arguments sont {\it missing}. Les fonctions statistiques nécessitent au moins une valeur non manquante pour retourner un résultat {\it non-missing}, excepté les fonctions CFVAR, SD et VARIANCE qui en demandent deux.

Il est possible d'augmenter le nombre minimal de valeurs non {\it missing} avec la syntaxe suivante : {\it nom\_fonction}[.n]({\it liste\_arg}), où n désigne ce nombre minimal. Par exemple, '\texttt{MEAN.3(X, Y, Z)}' retourne une valeur non {\it missing} seulement si \texttt{X}, \texttt{Y} et \texttt{Z} sont non {\it missing}.

\bigskip
\begin{itemize}
\item \texttt{MIN(nombre, nombre[, ...])} : retourne la valeur minimum.
\item \texttt{MAX(nombre, nombre[, ...])} : retourne la valeur maximum.
\item \texttt{SUM(nombre, nombre[, ...])} : retourne la somme des valeurs spécifiées.
\item \texttt{MEAN(nombre, nombre[, ...])} : retourne la moyenne des valeurs spécifiées.
\item \texttt{VARIANCE(nombre, nombre[, ...])} : retourne la variance des valeurs spécifiées.
\item \texttt{SD(nombre, nombre[, ...])} : retourne l'écart-type des valeurs spécifiées.
\item \texttt{CFVAR(nombre, nombre[, ...])} : retourne le coefficient de variation des valeurs spécifiées (écart-type divisé par la moyenne).
\end{itemize} 


\subsubsection{Les fonctions pour les distributions statistiques}

PSPP peut calculer plusieurs types de fonctions pour les distributions statistiques usuelles. Ces fonctions sont nommées à partir du nom de la fonction et du nom de la distribution statistique. Voici la liste des fonctions proposées :

\bigskip
\begin{itemize}
\item PDF.{\it dist (x[, param...])} : fonction densité de probabilité. Le domaine de définition de {\it x} dépend de la distribution. Pour les distributions discrètes, le résultat est la probabilité de {\it x}.
\item CDF.{\it dist (x[, param...])} : fonction de répartition (probabilité qu'une variable aléatoire ayant la distribution spécifiée soit inférieure à {\it x}). Le domaine de définition de {\it x} dépend de la distribution.
\item SIG.{\it dist (x[, param...])} : probabilité qu'une variable aléatoire ayant la distribution spécifiée soit supérieure à {\it x}). Le domaine de définition de {\it x} dépend de la distribution. Peu de distributions ont une fonction SIG.
\item IDF.{\it dist (p[, param...])} : inverse de la fonction de répartition (donne la valeur {\it x} correspondant à la probabilité {\it p}).
\item RV.{\it dist ([, param...])} : génère une variable aléatoire de la distribution spécifiée.
\end{itemize} 

\newpage

\bigskip
Voici les fonctions proposées pour chacune des distributions suivantes :


\bigskip
\centerline{\textbf{\large Lois discrètes}}

\bigskip
\noindent
{\it \textbf{Loi de Bernoulli de paramètre p} $(x\in\{0, 1\}, 0\le p\le 1)$} :

\texttt{PDF.BERNOULLI(x, p)}, \texttt{CDF.BERNOULLI(x, p)}, \texttt{RV.BERNOULLI(p)}.

\bigskip
\noindent
{\it \textbf{Loi binomiale de paramètres n et p} $(x\in\{0, 1,..., n\}, 0\le p\le 1,$ \\n entier positif)} :

\texttt{PDF.BINOMIAL(x, n, p)}, \texttt{CDF.BINOMIAL(x, n, p)}, \texttt{RV.BINOMIAL(n, p)}.

\bigskip
\noindent
{\it \textbf{Loi binomiale négative de paramètres n et p} $(x\in \{0, 1,...,+\infty\}, \\0\le p\le 1,$ n entier positif)} :

\texttt{PDF.NEGBIN(x, n, p)}, \texttt{CDF.NEGBIN(x, n, p)}, \texttt{RV.NEGBIN(n, p)}.

\bigskip
\noindent
{\it \textbf{Loi géométrique de paramètre p} $(x\in \{0, 1,...,+\infty\}, 0\le p\le 1)$} :

\texttt{PDF.GEOM(x, p)}, \texttt{CDF.GEOM(x, p)}, \texttt{RV.GEOM(p)}.

\bigskip
\noindent
{\it \textbf{Loi hypergéométrique de paramètres N, n et m} $(x\in\{0, 1,..., n\},$ \\N, n et m entiers positifs, $n\le N, m\le N$)} :

\texttt{PDF.HYPER(x, N, n, m)}, \texttt{CDF.HYPER(x, N, n, m)}, \texttt{RV.HYPER(N, n, m)}.

\bigskip
\noindent
{\it \textbf{Loi de Poisson de paramètre $\lambda$} $(x\in \{0, 1,...,+\infty\}, \lambda \ge 0)$} :

\texttt{PDF.POISSON(x, $\lambda$)}, \texttt{CDF.POISSON(x, $\lambda$)}, \texttt{RV.POISSON($\lambda$)}.

\bigskip
\noindent
{\it \textbf{Loi logarithmique de paramètre p} $(x \ge 1, 0\le p\le 1)$} :

\texttt{PDF.LOG(x, p)}, \texttt{RV.LOG(p)}.

\bigskip
\centerline{\textbf{\large Lois continues}}

\bigskip
\noindent
{\it \textbf{Loi uniforme sur [a, b]} $(x\in [a, b], 0\le p\le 1)$} :

\texttt{PDF.UNIFORM(x, a, b)}, \texttt{CDF.UNIFORM(x, a, b)}, \texttt{IDF.UNIFORM(p, a, b)}, 

\texttt{RV.UNIFORM(a, b)}.

\bigskip
\noindent
{\it \textbf{Loi normale de moyenne $\mu$ et d'écart-type $\sigma$} (x réel, $\sigma > 0, 0 < p < 1)$} :

\texttt{PDF.NORMAL(x, $\mu$, $\sigma$)}, \texttt{CDF.NORMAL(x, $\mu$, $\sigma$)}, \texttt{IDF.NORMAL(p, $\mu$, $\sigma$)}, 

\texttt{RV.NORMAL($\mu$, $\sigma$)}.

\bigskip
\noindent
{\it \textbf{Loi log-normale de paramètres $\mu$ et $\sigma$} $(x > 0, \mu > 0, \sigma > 0, 0 \le p < 1)$} :

\texttt{PDF.LNORMAL(x, $\mu$, $\sigma$)}, \texttt{CDF.LNORMAL(x, $\mu$, $\sigma$)}, \texttt{IDF.LNORMAL(p, $\mu$, $\sigma$)}, 

\texttt{RV.LNORMAL($\mu$, $\sigma$)}.

\bigskip
\noindent
{\it \textbf{Loi Gamma de paramètres a et b} $(x \ge 0, a > 0, b > 0, 0 \le p < 1)$} :

\texttt{PDF.GAMMA(x, a, b)}, \texttt{CDF.GAMMA(x, a, b)}, \texttt{IDF.GAMMA(p, a, b)}, 

\texttt{RV.GAMMA(a, b)}.

\bigskip
\noindent
{\it \textbf{Loi Beta de paramètres a et b} $(0 \le x \le 1, a > 0, b > 0, 0 \le p \le 1)$} :

\texttt{PDF.BETA(x, a, b)}, \texttt{CDF.BETA(x, a, b)}, \texttt{IDF.BETA(p, a, b)}, 

\texttt{RV.BETA(a, b)}.

\bigskip
\noindent
{\it \textbf{Loi exponentielle de paramètre a} $(x > 0, a > 0, 0 \le p < 1)$} :

\texttt{PDF.EXP(x, a)}, \texttt{CDF.EXP(x, a)}, \texttt{IDF.EXP(p, a)}, 

\texttt{RV.EXP(a)}.

\bigskip
\noindent
{\it \textbf{Loi du Chi-2 à n degrés de liberté} $(x \ge 0, 0 \le p < 1$, n entier positif)} :

\texttt{PDF.CHISQ(x, n)}, \texttt{CDF.CHISQ(x, n)}, \texttt{SIG.CHISQ(x, n)},

 \texttt{IDF.CHISQ(p, n)}, \texttt{RV.CHISQ(n)}.

\bigskip
\noindent
{\it \textbf{Loi de Student (ou T) à n degrés de liberté} (x réel, $0 < p < 1$, \\n entier positif)} :

\texttt{PDF.T(x, n)}, \texttt{CDF.T(x, n)}, \texttt{IDF.T(p, n)},

 \texttt{RV.T(n)}.

\bigskip
\noindent
{\it \textbf{Loi de Fisher (ou F) de paramètres n1 et n2} $(x \ge 0, 0 \le p < 1$,\\ n1 et n2 entiers positifs)} :

\texttt{PDF.F(x, n1, n2)}, \texttt{CDF.F(x, n1, n2)}, \texttt{SIG.F(x, n1, n2)},

 \texttt{IDF.F(p, n1, n2)}, \texttt{RV.F(n1, n2)}.

\bigskip
\noindent
{\it \textbf{Loi logistique de paramètres a et b} (x réel, $b > 0, 0 < p < 1$)} :

\texttt{PDF.LOGISTIC(x, a, b)}, \texttt{CDF.LOGISTIC(x, a, b)},

 \texttt{IDF.LOGISTIC(p, a, b)}, \texttt{RV.LOGISTIC(a, b)}.

\bigskip
\noindent
{\it \textbf{Loi de Cauchy de paramètres a et b} (x réel, $b > 0, 0 < p < 1$)} :

\texttt{PDF.CAUCHY(x, a, b)}, \texttt{CDF.CAUCHY(x, a, b)},\texttt{IDF.CAUCHY(p, a, b)}, 

\texttt{RV.CAUCHY(a, b)}.

\bigskip
\noindent
{\it \textbf{Loi de Laplace de paramètres a et b} (x réel, $b > 0, 0 < p < 1$)} :

\texttt{PDF.LAPLACE(x, a, b)}, \texttt{CDF.LAPLACE(x, a, b)},

\texttt{IDF.LAPLACE(p, a, b)}, \texttt{RV.LAPLACE(a, b)}.

\bigskip
\noindent
{\it \textbf{Loi de Pareto de paramètres a et b} $(x \ge a, a > 0, b > 0, 0 \le p < 1$)} :

\texttt{PDF.PARETO(x, a, b)}, \texttt{CDF.PARETO(x, a, b)}, \texttt{IDF.PARETO(p, a, b)}, 

\texttt{RV.PARETO(a, b)}.

\bigskip
\noindent
{\it \textbf{Loi de Rayleigh de paramètre $\sigma$} $(x \ge 0, \sigma > 0, 0 \le p < 1$)} :

\texttt{PDF.RAYLEIGH(x, $\sigma$)}, \texttt{CDF.RAYLEIGH(x, $\sigma$)}, \texttt{IDF.RAYLEIGH(p, $\sigma$)}, 

\texttt{RV.RAYLEIGH($\sigma$)}.

\bigskip
\noindent
{\it \textbf{Loi de Weibull de paramètres a et b} $(x \ge 0, a > 0, b > 0, 0 \le p < 1$)} :

\texttt{PDF.WEIBULL(x, a, b)}, \texttt{CDF.WEIBULL(x, a, b)}, \texttt{IDF.WEIBULL(p, a, b)}, 

\texttt{RV.WEIBULL(a, b)}.

\newpage
\section{\textsc{Exemple d'utilisation du logiciel}}

L'exemple qui est traité dans cette section a pour seul but d'illustrer une démarche que l'on peut adopter pour lire et analyser des données recueillies après une enquête.

\subsection{L'enquête}

On dispose des résultats d'une enquête sur les relations extra-conjugales menée par le centre hospitalier de Toulouse-Purpan en 2006. 111 personnes ont répondu de manière anonyme au questionnaire proposé pour l'enquête. 

\bigskip
\textbf{Le questionnaire :}

\bigskip
NSP : ne se prononce pas

\bigskip
\noindent 1 - Etes-vous : Un homme ? Une femme ?\\
2 - Vivez-vous en couple ? oui non

 Marié - PACS - Union libre - Sous le même toit - Pas sous le même toit \\
3 - Quel âge avez-vous ? ...............\\ 
4 - Etes-vous croyant ?

 Pas du tout - Un peu - Assez - Très - NSP\\
5 - Vous considérez-vous comme quelqu'un de séduisant ? 

 Pas du tout - Un peu - Assez - Très - NSP\\
6 - Avez-vous confiance en vous ?

 Pas du tout - Un peu - Assez - Beaucoup \\ 
7 - Dans une relation, êtes-vous l'initiateur de la relation ?

 Jamais - Parfois - Assez souvent - Souvent - Toujours - NSP\\
 8 - Pensez-vous que pour avoir une relation extra-conjugale il est nécessaire de tomber amoureux d'un autre partenaire ? 

Pas du tout - Pas toujours - Souvent - Toujours - NSP\\
9 - Avez-vous eu des relations extra-conjugales ? 

Jamais - Rarement - Assez souvent - Souvent - NSP\\
10 - Si oui, est-ce plutôt des aventures ? Plutôt des relations suivies ? 

Plutôt une vie parallèle ?  Ça dépend \\
11 - Si oui, êtes-vous tombé(e) amoureux(se) de votre nouveau partenaire ? 

Jamais - Pas toujours - Souvent - Toujours - NSP \\
 12 - Vous sentiriez-vous coupable si vous aviez des relations extra-conjugales ? 

Non - Un peu - Assez - Très - NSP \\
12bis - Si vous avez eu des relations extra-conjugales, vous êtes-vous senti coupable ? 

Jamais - Rarement - Souvent - Toujours - NSP \\
 13 - Cette culpabilité vous semble-t-elle un frein à vos (possibles) relations extra-conjugales ? 

Jamais - Rarement - Souvent - Toujours - NSP \\
14 - L'aspect transgression vous semble-t-il stimulant ? 

Pas du tout - Un peu - Assez - Très - NSP \\
15 - Trouvez-vous que les occasions d'avoir des relations extra-conjugales sont fréquentes ?

 Pas du tout - Un peu - Assez - Très - NSP \\
 16 - Ces relations vous attirent-elles ? 

Beaucoup - Assez - Pas du tout - ``Me dégoûtent'' - NSP \\
 17 - Sur le lieu de votre travail, avez-vous subi des pressions pour des relations extra-conjugales ? 

Jamais - Parfois - Souvent - Très souvent - NSP \\
 18 - Est ce que vous trouvez votre partenaire attirant(e) et disponible sexuellement ? 

Pas du tout - Un peu - Plutôt - Vraiment - NSP\\
 19 - Si vous aviez des relations extra-conjugales, pensez-vous que le retentissement sur votre couple serait : 

Très négatif - Négatif - Indifférent - Positif - NSP\\
 20 - Comment réagiriez-vous si vous appreniez que votre partenaire vous trompe ?

 Plutôt bien - Indifférent - Plutôt mal - Très mal - NSP\\
 21 - Les relations extra-conjugales semblent en augmentation, pensez-vous que c'est du :

- À l'individualisme ambiant ? 

Pas du tout - Un peu - Assez - Certainement - NSP  

- À la libération des moeurs?

 Pas du tout - Un peu - Assez - Certainement - NSP  

- À la contraception féminine ?

 Pas du tout - Un peu - Assez - Certainement - NSP  \\
22 - Qu'est-ce qui peut d'après vous justifier une relation extra-conjugale ? ................. \\
 23 - Que pensez-vous de l'échangisme ? ...................... \\
 24 - Pensez-vous qu'une des causes des relations extra-conjugales est le manque de discussions dans le couple ? 

Jamais - Parfois - Souvent - Très souvent - NSP\\
 25 - Comment vos proches voient les relations extra-conjugales ? 

Très négativement - Négativement - Indifféremment - Positivement - NSP \\
 26 - Comment les amis de votre âge les voient ? ...................\\
 27 - Si votre partenaire a eu des relations extra-conjugales : 

- Avez-vous eu l'impression d'avoir inconsciemment favorisé cette infidélité ? 

Pas du tout - Un peu - Assez - Certainement - NSP

 - Avez-vous eu l'impression d'être coupable (manque d'attention, de désir, 

etc...) ? 

Pas du tout - Un peu - Assez - Certainement - NSP 

 - Avez-vous remis en cause votre comportement sexuel ? 

Pas du tout - Un peu - Assez - Certainement - NSP \\
 28 - Le couple traditionnel était à durée illimitée et ne se terminait qu'à la mort. Notre société semble évoluer vers le couple à durée limitée, chacun ayant dans sa vie plusieurs expériences conjugales. Dans ce cadre-là, l'infidélité ne serait plus une "faute", seule la tromperie serait alors moralement condamnable, qu'en pensez-vous ? ............................

\bigskip
\bigskip
Le questionnaire comporte 33 questions dont les réponses ont été reportées après codage dans le fichier 'donnees\_REC'. 

\bigskip
\textbf{Le fichier 'donnees\_REC' :}

\begin{verbatim}
1 1 1 40 2 2 2 1 2 1 1 1 1 4 3 1 2 2 2 3 4 4 2 1 1 4 2 3 2 2 2 1
2 2 1 42 1 3 2 1 3 2 1 1 1 1 3 2 2 4 4 3 1 4 4 1 2 2 3 3 4 2 2 1
3 1 1 53 3 3 3 1 3 2 3 1 1 1 3 2 2 4 3 3 1 2 1 1 2 3 3 3 3 1 1 1
...
8 2 3 50 1 2 2 2 2 2 3 1 1 3 1 2 1 2 0 4 4 4 2 1 2 2 2 3 3 3 3 1
9 1 3 36 1 3 4 1 2 3 1 1 1 3 3 2 2 4 3 2 1 2 1 0 2 0 2 3 1 1 1 0
10 1 3 30 1 2 2 3 3 3 3 1 0 4 2 1 1 4 4 3 4 4 3 1 4 4 0 3 4 4 4 2
11 1 1 56 3 3 3 2 3 1 2 1 1 2 2 3 1 3 1 3 2 3 2 1 4 2 2 0 2 2 2 0
...
99 2 1 31 2 2 1 2 1 0 0 4 3 2 2 3 1 4 1 4 2 4 1 2 4 4 2 0 0 0 0 0
100 2 5 44 2 3 1 4 1 0 0 4 4 1 3 3 1 3 2 4 3 4 3 1 3 2 0 0 0 0 0 4
101 2 3 23 2 2 2 1 1 0 0 4 4 3 2 3 1 4 1 4 4 4 1 1 4 3 1 0 1 1 1 0
102 2 2 27 4 3 2 0 1 0 0 4 2 1 3 4 1 3 0 3 1 2 1 4 2 2 1 1 1 1 1 3
...
109 2 2 35 2 3 2 1 2 1 1 3 3 1 3 3 2 4 0 2 3 3 1 1 3 2 1 3 4 4 3 0
110 2 2 59 1 2 1 1 1 0 0 4 4 2 3 3 0 4 1 4 2 2 2 4 3 4 2 3 0 0 0 3
111 2 1 79 2 2 2 2 1 0 0 3 0 0 3 3 1 1 0 4 3 2 3 1 4 1 0 2 1 1 1 2
\end{verbatim}

Le premier nombre correspond au numéro de la personne interrogée. Les 31 nombres qui suivent traduisent les réponses aux 33 questions (les réponses aux questions 5 et 6 sont regroupées en une seule, idem pour les questions 12 et 12bis). La section ``La lecture des données'' donne la signification de ces nombres.


\subsection{La lecture des données}
Avant de procéder à l'analyse des données, une étape préliminaire est la lecture et le recodage des données. On dispose du fichier 'donnees\_REC', à partir duquel on va définir l'ensemble des variables analysables. Pour cela, on crée un premier fichier syntaxe (fichier 'lecture') qui a pour but de définir le dictionnaire des données associé au dépouillement du sondage.

\bigskip
\textbf{Le fichier 'lecture' :}
\index{TITLE}
\begin{verbatim}
TITLE 'Etude medicale fidelite, Purpan 2006'

** lecture libre des données du fichier 'donnees_REC' **
** la variable Q5_6 regroupe les réponses aux questions 5 et 6 **
** la variable Q12 regroupe les réponses aux questions 12 et 12bis **.
\end{verbatim}
\index{DATA LIST!DATA LIST LIST}\index{FORMATS}\index{VARIABLE LABELS}
\begin{verbatim}
DATA LIST LIST NOTABLE FILE=donnees_REC
 /patient_N Q1 Q2 Q3 Q4 Q5_6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17
  Q18 Q19 Q20 Q21_1 Q21_2 Q21_3 Q22 Q23 Q24 Q25 Q26 Q27_1 Q27_2 Q27_3
  Q28 .

** on donne le format exact des variables **.
FORMATS patient_N (F3.0)
        Q3 (F2.0)
        Q1 Q2 Q4 TO Q28 (F1.0).

** on attribue un label à chaque variable **
** le label décrit le thème de la question posée **.
VARIABLE LABELS
   Q1 "sexe"
   Q2 "situation maritale"
   Q3 "age"
   Q4 "croyance"
   Q5_6 "confiance en soi"
   Q7 "initiative relationnelle"
   Q8 "necessite amour"
   Q9 "relations extra conjugales"
   Q10 "type REC"
   Q11 "amour si REC"
   Q12 "niveau culpabilite REC"
   Q13 "culpabilite frein REC"
   Q14 "transgression stimulante REC"
   Q15 "frequence occasions REC"
   Q16 "attraction REC"
   Q17 "pression REC lieu de travail"
   Q18 "attirance partenaire"
   Q19 "effet REC sur couple"
   Q20 "reaction tromperie partenaire"
   Q21_1 "individualisme -> REC"
   Q21_2 "liberation moeurs -> REC"
   Q21_3 "contraception feminine -> REC"
   Q22 "justification REC"
   Q23 "avis echangisme"
   Q24 "manque discussion -> REC"
   Q25 "vision proches des REC"
   Q26 "vision amis des REC"
   Q27_1 "favorise REC du partenaire"
   Q27_2 "culpabilite REC du partenaire"
   Q27_3 "remise en cause comportement sexuel si REC"
   Q28 "valeur fidelite".


\end{verbatim}

\index{VALUE LABELS} 
\begin{verbatim}

** on attribue des labels aux valeurs possibles des variables **
** les labels traduisent le codage des réponses proposées **.
VALUE LABELS
  /Q1 
      1 "Homme" 
      2 "Femme"
  /Q2 
      1 "Mariage"
      2 "PACS"
      3 "Union libre"
      4 "meme toit"
      5 "pas meme toit"
  /Q3
      0 "NSP"
  /Q4 Q5_6
      1 "Pas du tout"
      2 "Un peu"
      3 "Assez"
      4 "Tres"
      0 "NSP"
  /Q7
      1 "Jamais"
      2 "Parfois"
      3 "Assez souvent"
      4 "Souvent"
      5 "Toujours"
      0 "NSP"
  /Q8
      1 "Pas du tout"
      2 "Pas souvent"
      3 "Souvent"
      4 "Toujours"
      0 "NSP"
  /Q9 
      1 "Jamais"
      2 "Rarement"
      3 "Assez souvent"
      4 "Souvent"
      0 "NSP"
  /Q10
      1 "aventures"
      2 "ca depend"
      3 "relations suivies"
      4 "vie parallèle"
      0 "NSP"
  /Q11
      1 "Jamais"
      2 "Pas souvent"
      3 "Souvent"
      4 "Toujours"
      0 "NSP"
  /Q12
      1 "Non"
      2 "Un peu"
      3 "Assez"
      4 "Tres"
      0 "NSP"
  /Q13
      1 "Jamais"
      2 "Rarement"
      3 "Souvent"
      4 "Toujours"
      0 "NSP"
  /Q14 Q15
      1 "Pas du tout"
      2 "Un peu"
      3 "Assez"
      4 "Tres"
      0 "NSP"
  /Q16
      1 "Beaucoup"
      2 "Assez"
      3 "pas du tout"
      4 "Me degoutent"
      0 "NSP"
  /Q17 Q24
      1 "Jamais"
      2 "Parfois"
      3 "Souvent"
      4 "Tres souvent"
      0 "NSP"
  /Q18
      1 "Pas du tout"
      2 "Un peu"
      3 "Plutot"
      4 "Vraiment"
      0 "NSP"




  /Q19
      1 "Tres negatif"
      2 "Negatif"
      3 "Indifferent"
      4 "Positif"
      0 "NSP"
  /Q20
      1 "Plutot bien"
      2 "Indifferent"
      3 "Plutot mal"
      4 "Tres mal"
      0 "NSP"
  /Q21_1 to Q21_3 
      1 "Pas du tout"
      2 "Un peu"
      3 "Assez"
      4 "Certainement"
      0 "NSP"
  /Q25 Q26
      1 "Tres negativement"
      2 "Negativement"
      3 "Indifferemment"
      4 "Positivement"
      0 "NSP"
   /Q27_1 to Q27_3
      1 "Pas du tout"
      2 "Un peu"
      3 "Assez"
      4 "Certainement"
      0 "NSP"
   /Q22 Q23 Q28
      1 "Pas rigoriste"
      2 "Peu rigoriste"
      3 "Rigoriste"
      4 "Tres rigoriste"
      0 "NSP".
** les réponses aux questions 22, 23 et 28 sont jugées suivant 
   le niveau de rigorisme **.

** on déclare les valeurs manquantes **
** la valeur 0 associée aux réponses "NSP" est declarée manquante **.
MISSING VALUES Q1 TO Q28 (0).


\end{verbatim}
\index{MISSING VALUES}
\begin{verbatim}

** on recode les variables pour créer de nouvelles variables
   plus facilement analysables **.
RECODE Q9 (2 3 4=1) (1=2) INTO infidelite.
VALUE LABELS infidelite 1 "oui" 2 "non".

RECODE Q8 (3 4=1) (1 2=2) INTO amour_necessaire.
VALUE LABELS amour_necessaire 1 "oui" 2 "non".

RECODE Q5_6 Q12 (3 4=1) (1 2=2) INTO assurance culpabilite.
VALUE LABELS assurance culpabilite 1 "beaucoup ou assez" 2 "peu ou pas".

FORMATS infidelite amour_necessaire assurance culpabilite (F1.0).

** affichage du dictionnaire contenant toutes les informations
   sur les variables **.
DISPLAY DICT.

** sauvegarde du dictionnaire des données dans un fichier binaire **
** par la suite, c'est le fichier 'fidelite.sav' qui sera utilisé pour
   récupérer le dictionnaire, et procéder à l'analyse des données **.
SAVE OUTFILE=fidelite.sav.

\end{verbatim}
\index{RECODE}\index{VALUE LABELS}\index{FORMATS}\index{SAVE}
\index{DISPLAY}

Ce fichier syntaxe doit être exécuté une fois pour que le fichier 'fidelite.sav' soit créé. Le fichier 'lecture' devra être exécuté à nouveau seulement si on y apporte des modifications.

Après l'exécution de ce fichier syntaxe, le dictionnaire est affiché dans le fichier listing.

\bigskip
 À titre d'exemple, voici le début du dictionnaire :

\begin{verbatim}
Etude medicale fidelite, Purpan 2006      GNU pspp 0.4.0 - sparc-sun-solaris2.9

1.1(1) DISPLAY.  
+----------------+-----------------------------------------+--------+
|Variable        |Description                              |Position|
#================#=========================================#========#
|patient_N       |Format: F3.0                             |       1|
+----------------+-----------------------------------------+--------+
|Q1              |sexe                                     |       2|
|                |Format: F1.0                             |        |
|                |Missing Values: 0                        |        |
|                +-----+-----------------------------------+        |
|                |    1|Homme                              |        |
|                |    2|Femme                              |        |
+----------------+-----+-----------------------------------+--------+

+----------------+-----+-----------------------------------+--------+
|Q2              |situation maritale                       |       3|
|                |Format: F1.0                             |        |
|                |Missing Values: 0                        |        |
|                +-----+-----------------------------------+        |
|                |    1|Mariage                            |        |
|                |    2|PACS                               |        |
|                |    3|Union libre                        |        |
|                |    4|meme toit                          |        |
|                |    5|pas meme toit                      |        |
+----------------+-----+-----------------------------------+--------+
|Q3              |age                                      |       4|
|                |Format: F2.0                             |        |
|                |Missing Values: 0                        |        |
|                +-----+-----------------------------------+        |
|                |    0|NSP                                |        |
+----------------+-----+-----------------------------------+--------+
|Q4              |croyance                                 |       5|
|                |Format: F1.0                             |        |
|                |Missing Values: 0                        |        |
|                +-----+-----------------------------------+        |
|                |    0|NSP                                |        |
|                |    1|Pas du tout                        |        |
|                |    2|Un peu                             |        |
|                |    3|Assez                              |        |
|                |    4|Tres                               |        |
+----------------+-----+-----------------------------------+--------+
|Q5_6            |confiance en soi                         |       6|
|                |Format: F1.0                             |        |
|                |Missing Values: 0                        |        |
|                +-----+-----------------------------------+        |
|                |    0|NSP                                |        |
|                |    1|Pas du tout                        |        |
|                |    2|Un peu                             |        |
|                |    3|Assez                              |        |
|                |    4|Tres                               |        |
+----------------+-----+-----------------------------------+--------+
\end{verbatim}



\subsection{L'analyse des données}
\label{excross}

On peut désormais procéder à l'analyse des données en faisant simplement appel au fichier binaire 'fidelite.sav', qui comporte toutes les informations sur les variables. Pour cela, on crée un deuxième fichier syntaxe (fichier 'analyse') qui a pour but de regrouper l'ensemble des commandes effectuant des analyses.

\bigskip
\textbf{Le fichier 'analyse' :}
\index{FREQUENCIES}\index{GET}\index{TITLE}\index{EXAMINE}
\index{CROSSTABS}\index{T-TEST}
\begin{verbatim}
TITLE 'Etude medicale fidelite, Purpan 2006'

** lecture du fichier 'fidelite.sav' **.
GET FILE=fidelite.sav.

** on demande des tableaux de fréquences pour les variables Q1, Q2 et Q9 **
** Q1 : sexe ; Q2 : situation maritale ; Q9 : relations extra conjugales **.
FREQ Q1 Q2 Q9 
    /STAT=NONE.

** on demande des statistiques sur la répartition des valeurs de 
   la variable Q3 **
** Q3 : age **.
EXAMINE Q3 
       /STAT=EXTREME 
       /PLOT=BOXPLOT 
       /PERCENT.

** on demande 5 tableaux croisés : Q1 * infidelite ; Q1 * amour_necessaire ;
   assurance * culpabilite ; assurance * infidelite ; culpabilite * infidelite **
** par défaut, le test du chi-deux est demandé : on teste l'indépendance
   des deux variables de chaque tableau croisé **.
CROSSTABS /TABLES=Q1 BY infidelite amour_necessaire
          /TABLES=assurance BY culpabilite infidelite
          /TABLES=culpabilite BY infidelite
          /CELLS=COUNT ROW COLUMN EXPECTED SRESIDUAL
          /STATISTICS.

** on détermine deux groupes en fonction des valeurs de la variable Q1 **
** premier groupe : hommes ; deuxième groupe : femmes **
** on demande le test de Student pour la variable Q28 : on teste l'égalité
   des moyennes entre le groupe des hommes et celui des femmes **
** Q28 : valeur fidelite **
** pour la variable Q28, la valeur 0 (NSP) a été déclarée manquante **
** ici, on l'inclut dans l'analyse car on teste le niveau de rigorisme
   des hommes et des femmes à travers une question ouverte **.
T-TEST GROUPS=Q1(1,2) 
      /VARIABLE=Q28 
      /MISSING=INCLUDE.

\end{verbatim}

\newpage
Après l'exécution du fichier syntaxe 'analyse', la sortie suivante est affichée dans le fichier listing :

\begin{verbatim}
Etude medicale fidelite, Purpan 2006      GNU pspp 0.4.0 - sparc-sun-solaris2.9

1.1 FREQUENCIES.  Q1: sexe
+-----------+--------+---------+--------+--------+--------+
|           |        |         |        |  Valid |   Cum  |
|Value Label|  Value |Frequency| Percent| Percent| Percent|
#===========#========#=========#========#========#========#
|Homme      |       1|       57|    51.4|    51.4|    51.4|
|Femme      |       2|       54|    48.6|    48.6|   100.0|
#===========#========#=========#========#========#========#
|               Total|      111|   100.0|   100.0|        |
+--------------------+---------+--------+--------+--------+

1.2 FREQUENCIES.  Q2: situation maritale
+-------------+--------+---------+--------+--------+--------+
|             |        |         |        |  Valid |   Cum  |
| Value Label |  Value |Frequency| Percent| Percent| Percent|
#=============#========#=========#========#========#========#
|Mariage      |       1|       33|    29.7|    29.7|    29.7|
|PACS         |       2|       12|    10.8|    10.8|    40.5|
|Union libre  |       3|       25|    22.5|    22.5|    63.1|
|meme toit    |       4|        4|     3.6|     3.6|    66.7|
|pas meme toit|       5|       37|    33.3|    33.3|   100.0|
#=============#========#=========#========#========#========#
|                 Total|      111|   100.0|   100.0|        |
+----------------------+---------+--------+--------+--------+

1.3 FREQUENCIES.  Q9: relations extra conjugales
+-------------+--------+---------+--------+--------+--------+
|             |        |         |        |  Valid |   Cum  |
| Value Label |  Value |Frequency| Percent| Percent| Percent|
#=============#========#=========#========#========#========#
|Jamais       |       1|       51|    45.9|    47.2|    47.2|
|Rarement     |       2|       45|    40.5|    41.7|    88.9|
|Assez souvent|       3|        9|     8.1|     8.3|    97.2|
|Souvent      |       4|        3|     2.7|     2.8|   100.0|
|NSP          |       0|        3|     2.7| Missing|        |
#=============#========#=========#========#========#========#
|                 Total|      111|   100.0|   100.0|        |
+----------------------+---------+--------+--------+--------+



2.1 EXAMINE.  Case Processing Summary
#===#=================================#
#   #              Cases              #
#   #-----------+---------+-----------#
#   #   Valid   | Missing |   Total   #
#   #---+-------+-+-------+---+-------#
#   # N |Percent|N|Percent| N |Percent#
#===#===#=======#=#=======#===#=======#
#age#110|    99%|1|     1%|111|   100%#
#===#===#=======#=#=======#===#=======#

2.2(1) EXAMINE.  Extreme Values
#===========#===========#=====#
#           #Case Number|Value#
#===========#===========#=====#
#ageHighest1#        111|79.00#
#          2#         81|72.00#
#          3#         26|70.00#
#          4#         76|63.00#
#          5#         53|62.00#
#   --------#-----------+-----#
#    Lowest1#         72|22.00#
#          2#        101|23.00#
#          3#         65|23.00#
#          4#         40|23.00#
#          5#         88|24.00#
#===========#===========#=====#

2.3 EXAMINE.  Percentiles
#==================#=========================================#
#                  #                  Percentiles            #
#                  #-----+-----+-----+-----+-----+-----+-----#
#                  #  5  |  10 |  25 |  50 |  75 |  90 |  95 #
#===#==============#=====#=====#=====#=====#=====#=====#=====#
#age|HAverage      #24.00|26.00|32.75|40.00|48.25|55.80|62.00#
#   |Tukey's Hinges#     |     |33.00|40.00|48.00|     |     #
#===#==============#=====#=====#=====#=====#=====#=====#=====#













3.1 CROSSTABS.  Summary.
#===============#=====================================================#
#               #                        Cases                        #
#               #-----------------+-----------------+-----------------#
#               #      Valid      |     Missing     |      Total      #
#               #--------+--------+--------+--------+--------+--------#
#               #       N| Percent|       N| Percent|       N| Percent#
#---------------#--------+--------+--------+--------+--------+--------#
#sexe *         #     108|   97.3%|       3|    2.7%|     111|  100.0%#
#infidelite     #        |        |        |        |        |        #
#---------------#--------+--------+--------+--------+--------+--------#
#sexe *         #     108|   97.3%|       3|    2.7%|     111|  100.0%#
#amour_necessair#        |        |        |        |        |        #
#e              #        |        |        |        |        |        #
#---------------#--------+--------+--------+--------+--------+--------#
#assurance *    #     107|   96.4%|       4|    3.6%|     111|  100.0%#
#culpabilite    #        |        |        |        |        |        #
#---------------#--------+--------+--------+--------+--------+--------#
#assurance *    #     107|   96.4%|       4|    3.6%|     111|  100.0%#
#infidelite     #        |        |        |        |        |        #
#---------------#--------+--------+--------+--------+--------+--------#
#culpabilite *  #     106|   95.5%|       5|    4.5%|     111|  100.0%#
#infidelite     #        |        |        |        |        |        #
#===============#========#========#========#========#========#========#


















3.2(1) CROSSTABS. Q1 by infidelite [count,expected,row%,column%,std.resid.].
#===============#=================#========#
#               #    infidelite   |        #
#               #--------+--------+        #
#             Q1#oui     |non     |  Total #
#---------------#--------+--------+--------#
#Homme          #    37.0|    19.0|    56.0#
#               #    29.6|    26.4|      .0#
#               #   66.1%|   33.9%|  100.0%#
#               #   64.9%|   37.3%|   51.9%#
#               #     1.4|    -1.4|     .0%#
#---------------#--------+--------+--------#
#Femme          #    20.0|    32.0|    52.0#
#               #    27.4|    24.6|      .0#
#               #   38.5%|   61.5%|  100.0%#
#               #   35.1%|   62.7%|   48.1%#
#               #    -1.4|     1.5|     .0%#
#---------------#--------+--------+--------#
#Total          #    57.0|    51.0|   108.0#
#               #        |        |        #
#               #   52.8%|   47.2%|  100.0%#
#               #  100.0%|  100.0%|  100.0%#
#               #        |        |        #
#===============#========#========#========#

3.3 CROSSTABS.  Chi-square tests.
#===============#========#========#========#
#Statistic      #   Value|      df| Asymp. #
#               #        |        |   Sig. #
#               #        |        |(2-sided#
#               #        |        |       )#
#---------------#--------+--------+--------#
#Pearson        #   8.247|       1|    .004#
#Chi-Square     #        |        |        #
#Likelihood     #   8.351|       1|    .004#
#Ratio          #        |        |        #
#Continuity     #   7.176|       1|    .007#
#Correction     #        |        |        #
#Linear-by-Linea#   8.171|       1|    .004#
#r Association  #        |        |        #
#N of Valid     #     108|        |        #
#Cases          #        |        |        #
#===============#========#========#========#



3.4(1) CROSSTABS. Q1 by amour_necessaire [count,expected,row%,column%,std.resid.].
#===============#=================#========#
#               # amour_necessaire|        #
#               #--------+--------+        #
#             Q1#oui     |non     |  Total #
#---------------#--------+--------+--------#
#Homme          #     6.0|    49.0|    55.0#
#               #    13.8|    41.2|      .0#
#               #   10.9%|   89.1%|  100.0%#
#               #   22.2%|   60.5%|   50.9%#
#               #    -2.1|     1.2|     .0%#
#---------------#--------+--------+--------#
#Femme          #    21.0|    32.0|    53.0#
#               #    13.2|    39.8|      .0#
#               #   39.6%|   60.4%|  100.0%#
#               #   77.8%|   39.5%|   49.1%#
#               #     2.1|    -1.2|     .0%#
#---------------#--------+--------+--------#
#Total          #    27.0|    81.0|   108.0#
#               #        |        |        #
#               #   25.0%|   75.0%|  100.0%#
#               #  100.0%|  100.0%|  100.0%#
#               #        |        |        #
#===============#========#========#========#

3.5 CROSSTABS.  Chi-square tests.
#===============#========#========#========#
#Statistic      #   Value|      df| Asymp. #
#               #        |        |   Sig. #
#               #        |        |(2-sided#
#               #        |        |       )#
#---------------#--------+--------+--------#
#Pearson        #  11.868|       1|    .001#
#Chi-Square     #        |        |        #
#Likelihood     #  12.383|       1|    .000#
#Ratio          #        |        |        #
#Continuity     #  10.386|       1|    .001#
#Correction     #        |        |        #
#Linear-by-Linea#  11.758|       1|    .001#
#r Association  #        |        |        #
#N of Valid     #     108|        |        #
#Cases          #        |        |        #
#===============#========#========#========#



3.6 CROSSTABS. assurance by culpabilite [count,expected,row%,column%,std.resid.].
#===============#=================#========#
#               #   culpabilite   |        #
#               #--------+--------+        #
#      assurance#beaucoup|peu ou  |  Total #
#               #ou assez|pas     |        #
#---------------#--------+--------+--------#
#beaucoup ou    #    38.0|    27.0|    65.0#
#assez          #        |        |        #
#               #    41.3|    23.7|      .0#
#               #   58.5%|   41.5%|  100.0%#
#               #   55.9%|   69.2%|   60.7%#
#               #     -.5|      .7|     .0%#
#---------------#--------+--------+--------#
#peu ou pas     #    30.0|    12.0|    42.0#
#               #    26.7|    15.3|      .0#
#               #   71.4%|   28.6%|  100.0%#
#               #   44.1%|   30.8%|   39.3%#
#               #      .6|     -.8|     .0%#
#---------------#--------+--------+--------#
#Total          #    68.0|    39.0|   107.0#
#               #        |        |        #
#               #   63.6%|   36.4%|  100.0%#
#               #  100.0%|  100.0%|  100.0%#
#               #        |        |        #
#===============#========#========#========#

3.7(2) CROSSTABS.  Chi-square tests.
#===============#========#========#========#
#Statistic      #   Value|      df| Asymp. #
#               #        |        |   Sig. #
#               #        |        |(2-sided#
#               #        |        |       )#
#---------------#--------+--------+--------#
#Pearson        #   1.852|       1|    .174#
#Chi-Square     #        |        |        #
#Likelihood     #   1.881|       1|    .170#
#Ratio          #        |        |        #
#Continuity     #   1.335|       1|    .248#
#Correction     #        |        |        #
#Linear-by-Linea#   1.835|       1|    .176#
#r Association  #        |        |        #
#N of Valid     #     107|        |        #
#Cases          #        |        |        #
#===============#========#========#========#

3.8 CROSSTABS. assurance by infidelite [count,expected,row%,column%,std.resid.].
#===============#=================#========#
#               #    infidelite   |        #
#               #--------+--------+        #
#      assurance#oui     |non     |  Total #
#---------------#--------+--------+--------#
#beaucoup ou    #    40.0|    26.0|    66.0#
#assez          #        |        |        #
#               #    35.2|    30.8|      .0#
#               #   60.6%|   39.4%|  100.0%#
#               #   70.2%|   52.0%|   61.7%#
#               #      .8|     -.9|     .0%#
#---------------#--------+--------+--------#
#peu ou pas     #    17.0|    24.0|    41.0#
#               #    21.8|    19.2|      .0#
#               #   41.5%|   58.5%|  100.0%#
#               #   29.8%|   48.0%|   38.3%#
#               #    -1.0|     1.1|     .0%#
#---------------#--------+--------+--------#
#Total          #    57.0|    50.0|   107.0#
#               #        |        |        #
#               #   53.3%|   46.7%|  100.0%#
#               #  100.0%|  100.0%|  100.0%#
#               #        |        |        #
#===============#========#========#========#

3.9(1) CROSSTABS.  Chi-square tests.
#===============#========#========#========#
#Statistic      #   Value|      df| Asymp. #
#               #        |        |   Sig. #
#               #        |        |(2-sided#
#               #        |        |       )#
#---------------#--------+--------+--------#
#Pearson        #   3.723|       1|    .054#
#Chi-Square     #        |        |        #
#Likelihood     #   3.735|       1|    .053#
#Ratio          #        |        |        #
#Continuity     #   2.994|       1|    .084#
#Correction     #        |        |        #
#Linear-by-Linea#   3.688|       1|    .055#
#r Association  #        |        |        #
#N of Valid     #     107|        |        #
#Cases          #        |        |        #
#===============#========#========#========#


3.10 CROSSTABS. culpabilite by infidelite [count,expected,row%,column%,std.resid.].
#===============#=================#========#
#               #    infidelite   |        #
#               #--------+--------+        #
#    culpabilite#oui     |non     |  Total #
#---------------#--------+--------+--------#
#beaucoup ou    #    23.0|    44.0|    67.0#
#assez          #        |        |        #
#               #    36.0|    31.0|      .0#
#               #   34.3%|   65.7%|  100.0%#
#               #   40.4%|   89.8%|   63.2%#
#               #    -2.2|     2.3|     .0%#
#---------------#--------+--------+--------#
#peu ou pas     #    34.0|     5.0|    39.0#
#               #    21.0|    18.0|      .0#
#               #   87.2%|   12.8%|  100.0%#
#               #   59.6%|   10.2%|   36.8%#
#               #     2.8|    -3.1|     .0%#
#---------------#--------+--------+--------#
#Total          #    57.0|    49.0|   106.0#
#               #        |        |        #
#               #   53.8%|   46.2%|  100.0%#
#               #  100.0%|  100.0%|  100.0%#
#               #        |        |        #
#===============#========#========#========#

3.11 CROSSTABS.  Chi-square tests.
#===============#========#========#========#
#Statistic      #   Value|      df| Asymp. #
#               #        |        |   Sig. #
#               #        |        |(2-sided#
#               #        |        |       )#
#---------------#--------+--------+--------#
#Pearson        #  27.700|       1|    .000#
#Chi-Square     #        |        |        #
#Likelihood     #  30.285|       1|    .000#
#Ratio          #        |        |        #
#Continuity     #  25.615|       1|    .000#
#Correction     #        |        |        #
#Linear-by-Linea#  27.439|       1|    .000#
#r Association  #        |        |        #
#N of Valid     #     106|        |        #
#Cases          #        |        |        #
#===============#========#========#========#


4.1(2) T-TEST.  Group Statistics
#=========#==#====#==============#========#
#      Q1 | N|Mean|Std. Deviation|SE. Mean#
#=========#==#====#==============#========#
#Q28 Homme|57|1.16|         1.293|    .171#
#    Femme|54|1.96|         1.414|    .192#
#=========#==#====#==============#========#

4.2(1) T-TEST.  Independent Samples Test
#==============================#==========#==============================#
#                              # Levene's | t-test for Equality of Means #
#                              #-----+----+------+-------+---------------#
#                              #     |    |      |       |               #
#                              #     |    |      |       |               #
#                              #  F  |Sig.|   t  |   df  |Sig. (2-tailed)#
#==============================#=====#====#======#=======#===============#
#Q28Equal variances assumed    #1.224|.271|-3.134|     **|           .002#
#   Equal variances not assumed#     |    |-3.126|106.798|           .002#
#==============================#=====#====#======#=======#===============#

4.2(2) T-TEST.  Independent Samples Test
#==================================================#
#                                                  #
#---------------+---------------------+------------#
#               |                     |    95%     #
#               |                     +------+-----#
#Mean Difference|Std. Error Difference| Lower|Upper#
#===============#=====================#======#=====#
#          -.805|                 .258|-1.316|-.295#
#          -.805|                 .258|-1.316|-.295#
#===============#=====================#======#=====#

\end{verbatim}

\subsection{Les résultats}
\label{extest}

\bigskip
\centerline{\textbf{Résultats FREQUENCIES}}\index{FREQUENCIES}

\bigskip \noindent
{\it \underline{Tableau 1.1}} : tableau de fréquences de la variable \texttt{Q1} (``sexe'').

\smallskip \noindent
{\it \underline{Tableau 1.2}} : tableau de fréquences de la variable \texttt{Q2} (``situation maritale'').

\smallskip \noindent
{\it \underline{Tableau 1.3}} : tableau de fréquences de la variable \texttt{Q9} (``relations extra conjugales'').

\newpage
\centerline{\textbf{Résultats EXAMINE}}\index{EXAMINE}

\bigskip \noindent
{\it \underline{Tableau 2.1}} : résume l'analyse des observations (nombre d'observations valides et manquantes).

\smallskip \noindent
{\it \underline{Tableau 2.2}} : affiche les cinq valeurs extrêmes de la distribution de la variable \texttt{Q3} (``age'').

\smallskip \noindent
{\it \underline{Tableau 2.3}} : affiche les centiles 5, 10, 25, 50, 75, 90 et 95 de la distribution de la variable \texttt{Q3} (``age''). Les centiles sont calculés avec la méthode \texttt{HAVERAGE}.

\bigskip
\bigskip
\centerline{\textbf{Résultats CROSSTABS}}\index{CROSSTABS}

\bigskip \noindent
{\it \underline{Tableau 3.1}} : résume les tabulations croisées (nombre d'observations valides et manquantes).

\smallskip \noindent
{\it \underline{Tableau 3.2}} : tableau de contingence des variables \texttt{Q1} (``sexe'') et \texttt{infidelite}. On peut lire dans le tableau que 66.1\% des hommes et 38.5\% des femmes de l'échantillon ont eu une ou plusieurs relations extra-conjugales.

\smallskip \noindent
{\it \underline{Tableau 3.3}} : résultats du test d'indépendance des variables \texttt{Q1} (``sexe'') et \\ \texttt{infidelite}. Le test est significatif (on rejette l'hypothèse d'indépendance) donc les variables \texttt{Q1} (``sexe'') et \texttt{infidelite} ne sont pas indépendantes.

\smallskip \noindent
{\it \underline{Tableau 3.4}} : tableau de contingence des variables \texttt{Q1} (``sexe'') et\\ \texttt{amour\_necessaire}. On peut lire dans le tableau que 77.8\% des personnes qui pensent que l'amour est nécessaire dans une relation extra-conjugale sont des femmes.

\smallskip \noindent
{\it \underline{Tableau 3.5}} : résultats du test d'indépendance des variables \texttt{Q1} (``sexe'') et \\ \texttt{amour\_necessaire}. Le test est significatif (on rejette l'hypothèse d'indépendance) donc les variables \texttt{Q1} (``sexe'') et \texttt{amour\_necessaire} ne sont pas indépendantes.

\smallskip \noindent
{\it \underline{Tableau 3.6}} : tableau de contingence des variables \texttt{assurance} et \texttt{culpabilite}. On peut lire dans le tableau que 71.4\% des personnes qui ont peu ou pas d'assurance se sentiraient très ou assez coupable s'ils avaient une relation extra-conjugale.

\smallskip \noindent
{\it \underline{Tableau 3.7}} : résultats du test d'indépendance des variables \texttt{assurance} et \\ \texttt{culpabilite}. Le test n'est pas significatif (on accepte l'hypothèse d'indépendance) donc les variables \texttt{assurance} et \texttt{culpabilite} sont indépendantes.

\smallskip \noindent
{\it \underline{Tableau 3.8}} : tableau de contingence des variables \texttt{assurance} et \texttt{infidelite}. Parmi les personnes qui sont infidèles, 70.2\% déclarent avoir beaucoup ou pas mal d'assurance.

\smallskip \noindent
{\it \underline{Tableau 3.9}} : résultats du test d'indépendance des variables \texttt{assurance} et \\ \texttt{infidelite}. Le test n'est pas significatif (on accepte l'hypothèse d'indépendance) donc les variables \texttt{assurance} et \texttt{infidelite} sont indépendantes.

\smallskip \noindent
{\it \underline{Tableau 3.10}} : tableau de contingence des variables \texttt{culpabilite} et \texttt{infidelite}. Parmi les personnes qui n'ont jamais eu de relation extra-conjugale, 89.8\% se sentiraient très ou assez coupable s'ils en avaient.

\smallskip \noindent
{\it \underline{Tableau 3.11}} : résultats du test d'indépendance des variables \texttt{culpabilite} et \texttt{infidelite}. Le test est significatif (on rejette l'hypothèse d'indépendance) donc les variables \texttt{culpabilite} et \texttt{infidelite} ne sont pas indépendantes.

\bigskip
\bigskip
\centerline{\textbf{Résultats T-TEST}}\index{T-TEST}

\bigskip \noindent
{\it \underline{Tableau 4.1}} : affiche les statistiques de la variable \texttt{Q28} (``valeur fidelite'') pour chaque groupe défini (nombre d'observations valides, moyenne, écart-type, erreur standard). La variable \texttt{Q28} peut prendre les valeurs 1, 2, 3, 4 suivant le niveau de rigorisme de la réponse donnée. Ainsi, une réponse très rigoriste prend la valeur 4 et une réponse pas rigoriste la valeur 1. La valeur 0 associée à l'absence de réponse est incluse dans l'analyse car elle révèle un manque d'intérêt pour la question, et donc un manque d'attachement aux valeurs morales. Les hommes ont une moyenne égale à 1.16 alors que les femmes ont une moyenne égale à 1.96.

\smallskip \noindent
{\it \underline{Tableau 4.2}} : résultats du test d'égalité des moyennes pour la variable \texttt{Q28} (``valeur fidelite''). On accepte l'hypothèse d'égalité des variances (test de Fisher) donc les deux groupes sont comparables. L'hypothèse d'égalité des moyennes est rejetée (test de Student), donc les moyennes des deux groupes sont significativement différentes. On peut dire que dans cet échantillon, les femmes sont plus attachées aux valeurs morales que les hommes (aussi, elles s'expriment plus que les hommes sur les questions ouvertes).



\newpage
\section{\textsc{Annexes}}
\selectlanguage{english}

\subsection{GNU Free Documentation License}

 \centerline{Version 1.2, November 2002}

     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.

     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA

\bigskip
     Everyone is permitted to copy and distribute verbatim copies

     of this license document, but changing it is not allowed.

  \subsubsection*{0. PREAMBLE}

     The purpose of this License is to make a manual, textbook, or other
     functional and useful document "free" in the sense of freedom: to
     assure everyone the effective freedom to copy and redistribute it,
     with or without modifying it, either commercially or
     noncommercially.  Secondarily, this License preserves for the
     author and publisher a way to get credit for their work, while not
     being considered responsible for modifications made by others.

     This License is a kind of "copyleft", which means that derivative
     works of the document must themselves be free in the same sense.
     It complements the GNU General Public License, which is a copyleft
     license designed for free software.

     We have designed this License in order to use it for manuals for
     free software, because free software needs free documentation: a
     free program should come with manuals providing the same freedoms
     that the software does.  But this License is not limited to
     software manuals; it can be used for any textual work, regardless
     of subject matter or whether it is published as a printed book.
     We recommend this License principally for works whose purpose is
     instruction or reference.

 \subsubsection*{1. APPLICABILITY AND DEFINITIONS}

     This License applies to any manual or other work, in any medium,
     that contains a notice placed by the copyright holder saying it
     can be distributed under the terms of this License.  Such a notice
     grants a world-wide, royalty-free license, unlimited in duration,
     to use that work under the conditions stated herein.  The
     "Document", below, refers to any such manual or work.  Any member
     of the public is a licensee, and is addressed as "you".  You
     accept the license if you copy, modify or distribute the work in a
     way requiring permission under copyright law.

     A "Modified Version" of the Document means any work containing the
     Document or a portion of it, either copied verbatim, or with
     modifications and/or translated into another language.

     A "Secondary Section" is a named appendix or a front-matter section
     of the Document that deals exclusively with the relationship of the
     publishers or authors of the Document to the Document's overall
     subject (or to related matters) and contains nothing that could
     fall directly within that overall subject.  (Thus, if the Document
     is in part a textbook of mathematics, a Secondary Section may not
     explain any mathematics.)  The relationship could be a matter of
     historical connection with the subject or with related matters, or
     of legal, commercial, philosophical, ethical or political position
     regarding them.

     The "Invariant Sections" are certain Secondary Sections whose
     titles are designated, as being those of Invariant Sections, in
     the notice that says that the Document is released under this
     License.  If a section does not fit the above definition of
     Secondary then it is not allowed to be designated as Invariant.
     The Document may contain zero Invariant Sections.  If the Document
     does not identify any Invariant Sections then there are none.

     The "Cover Texts" are certain short passages of text that are
     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
     that says that the Document is released under this License.  A
     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
     be at most 25 words.

     A "Transparent" copy of the Document means a machine-readable copy,
     represented in a format whose specification is available to the
     general public, that is suitable for revising the document
     straightforwardly with generic text editors or (for images
     composed of pixels) generic paint programs or (for drawings) some
     widely available drawing editor, and that is suitable for input to
     text formatters or for automatic translation to a variety of
     formats suitable for input to text formatters.  A copy made in an
     otherwise Transparent file format whose markup, or absence of
     markup, has been arranged to thwart or discourage subsequent
     modification by readers is not Transparent.  An image format is
     not Transparent if used for any substantial amount of text.  A
     copy that is not "Transparent" is called "Opaque".

     Examples of suitable formats for Transparent copies include plain
     ASCII without markup, Texinfo input format, LaTeX input format,
     SGML or XML using a publicly available DTD, and
     standard-conforming simple HTML, PostScript or PDF designed for
     human modification.  Examples of transparent image formats include
     PNG, XCF and JPG.  Opaque formats include proprietary formats that
     can be read and edited only by proprietary word processors, SGML or
     XML for which the DTD and/or processing tools are not generally
     available, and the machine-generated HTML, PostScript or PDF
     produced by some word processors for output purposes only.

     The "Title Page" means, for a printed book, the title page itself,
     plus such following pages as are needed to hold, legibly, the
     material this License requires to appear in the title page.  For
     works in formats which do not have any title page as such, "Title
     Page" means the text near the most prominent appearance of the
     work's title, preceding the beginning of the body of the text.

     A section "Entitled XYZ" means a named subunit of the Document
     whose title either is precisely XYZ or contains XYZ in parentheses
     following text that translates XYZ in another language.  (Here XYZ
     stands for a specific section name mentioned below, such as
     "Acknowledgements", "Dedications", "Endorsements", or "History".)
     To "Preserve the Title" of such a section when you modify the
     Document means that it remains a section "Entitled XYZ" according
     to this definition.

     The Document may include Warranty Disclaimers next to the notice
     which states that this License applies to the Document.  These
     Warranty Disclaimers are considered to be included by reference in
     this License, but only as regards disclaiming warranties: any other
     implication that these Warranty Disclaimers may have is void and
     has no effect on the meaning of this License.

  \subsubsection*{2. VERBATIM COPYING}

     You may copy and distribute the Document in any medium, either
     commercially or noncommercially, provided that this License, the
     copyright notices, and the license notice saying this License
     applies to the Document are reproduced in all copies, and that you
     add no other conditions whatsoever to those of this License.  You
     may not use technical measures to obstruct or control the reading
     or further copying of the copies you make or distribute.  However,
     you may accept compensation in exchange for copies.  If you
     distribute a large enough number of copies you must also follow
     the conditions in section 3.

     You may also lend copies, under the same conditions stated above,
     and you may publicly display copies.

  \subsubsection*{3. COPYING IN QUANTITY}

     If you publish printed copies (or copies in media that commonly
     have printed covers) of the Document, numbering more than 100, and
     the Document's license notice requires Cover Texts, you must
     enclose the copies in covers that carry, clearly and legibly, all
     these Cover Texts: Front-Cover Texts on the front cover, and
     Back-Cover Texts on the back cover.  Both covers must also clearly
     and legibly identify you as the publisher of these copies.  The
     front cover must present the full title with all words of the
     title equally prominent and visible.  You may add other material
     on the covers in addition.  Copying with changes limited to the
     covers, as long as they preserve the title of the Document and
     satisfy these conditions, can be treated as verbatim copying in
     other respects.

     If the required texts for either cover are too voluminous to fit
     legibly, you should put the first ones listed (as many as fit
     reasonably) on the actual cover, and continue the rest onto
     adjacent pages.

     If you publish or distribute Opaque copies of the Document
     numbering more than 100, you must either include a
     machine-readable Transparent copy along with each Opaque copy, or
     state in or with each Opaque copy a computer-network location from
     which the general network-using public has access to download
     using public-standard network protocols a complete Transparent
     copy of the Document, free of added material.  If you use the
     latter option, you must take reasonably prudent steps, when you
     begin distribution of Opaque copies in quantity, to ensure that
     this Transparent copy will remain thus accessible at the stated
     location until at least one year after the last time you
     distribute an Opaque copy (directly or through your agents or
     retailers) of that edition to the public.

     It is requested, but not required, that you contact the authors of
     the Document well before redistributing any large number of
     copies, to give them a chance to provide you with an updated
     version of the Document.

  \subsubsection*{4. MODIFICATIONS}

     You may copy and distribute a Modified Version of the Document
     under the conditions of sections 2 and 3 above, provided that you
     release the Modified Version under precisely this License, with
     the Modified Version filling the role of the Document, thus
     licensing distribution and modification of the Modified Version to
     whoever possesses a copy of it.  In addition, you must do these
     things in the Modified Version:

       A. Use in the Title Page (and on the covers, if any) a title
          distinct from that of the Document, and from those of
          previous versions (which should, if there were any, be listed
          in the History section of the Document).  You may use the
          same title as a previous version if the original publisher of
          that version gives permission.

       B. List on the Title Page, as authors, one or more persons or
          entities responsible for authorship of the modifications in
          the Modified Version, together with at least five of the
          principal authors of the Document (all of its principal
          authors, if it has fewer than five), unless they release you
          from this requirement.

       C. State on the Title page the name of the publisher of the
          Modified Version, as the publisher.

       D. Preserve all the copyright notices of the Document.

       E. Add an appropriate copyright notice for your modifications
          adjacent to the other copyright notices.

       F. Include, immediately after the copyright notices, a license
          notice giving the public permission to use the Modified
          Version under the terms of this License, in the form shown in
          the Addendum below.

       G. Preserve in that license notice the full lists of Invariant
          Sections and required Cover Texts given in the Document's
          license notice.

       H. Include an unaltered copy of this License.

       I. Preserve the section Entitled "History", Preserve its Title,
          and add to it an item stating at least the title, year, new
          authors, and publisher of the Modified Version as given on
          the Title Page.  If there is no section Entitled "History" in
          the Document, create one stating the title, year, authors,
          and publisher of the Document as given on its Title Page,
          then add an item describing the Modified Version as stated in
          the previous sentence.

       J. Preserve the network location, if any, given in the Document
          for public access to a Transparent copy of the Document, and
          likewise the network locations given in the Document for
          previous versions it was based on.  These may be placed in
          the "History" section.  You may omit a network location for a
          work that was published at least four years before the
          Document itself, or if the original publisher of the version
          it refers to gives permission.

       K. For any section Entitled "Acknowledgements" or "Dedications",
          Preserve the Title of the section, and preserve in the
          section all the substance and tone of each of the contributor
          acknowledgements and/or dedications given therein.

       L. Preserve all the Invariant Sections of the Document,
          unaltered in their text and in their titles.  Section numbers
          or the equivalent are not considered part of the section
          titles.

       M. Delete any section Entitled "Endorsements".  Such a section
          may not be included in the Modified Version.

       N. Do not retitle any existing section to be Entitled
          "Endorsements" or to conflict in title with any Invariant
          Section.

       O. Preserve any Warranty Disclaimers.

     If the Modified Version includes new front-matter sections or
     appendices that qualify as Secondary Sections and contain no
     material copied from the Document, you may at your option
     designate some or all of these sections as invariant.  To do this,
     add their titles to the list of Invariant Sections in the Modified
     Version's license notice.  These titles must be distinct from any
     other section titles.

     You may add a section Entitled "Endorsements", provided it contains
     nothing but endorsements of your Modified Version by various
     parties--for example, statements of peer review or that the text
     has been approved by an organization as the authoritative
     definition of a standard.

     You may add a passage of up to five words as a Front-Cover Text,
     and a passage of up to 25 words as a Back-Cover Text, to the end
     of the list of Cover Texts in the Modified Version.  Only one
     passage of Front-Cover Text and one of Back-Cover Text may be
     added by (or through arrangements made by) any one entity.  If the
     Document already includes a cover text for the same cover,
     previously added by you or by arrangement made by the same entity
     you are acting on behalf of, you may not add another; but you may
     replace the old one, on explicit permission from the previous
     publisher that added the old one.

     The author(s) and publisher(s) of the Document do not by this
     License give permission to use their names for publicity for or to
     assert or imply endorsement of any Modified Version.

  \subsubsection*{5. COMBINING DOCUMENTS}

     You may combine the Document with other documents released under
     this License, under the terms defined in section 4 above for
     modified versions, provided that you include in the combination
     all of the Invariant Sections of all of the original documents,
     unmodified, and list them all as Invariant Sections of your
     combined work in its license notice, and that you preserve all
     their Warranty Disclaimers.

     The combined work need only contain one copy of this License, and
     multiple identical Invariant Sections may be replaced with a single
     copy.  If there are multiple Invariant Sections with the same name
     but different contents, make the title of each such section unique
     by adding at the end of it, in parentheses, the name of the
     original author or publisher of that section if known, or else a
     unique number.  Make the same adjustment to the section titles in
     the list of Invariant Sections in the license notice of the
     combined work.

     In the combination, you must combine any sections Entitled
     "History" in the various original documents, forming one section
     Entitled "History"; likewise combine any sections Entitled
     "Acknowledgements", and any sections Entitled "Dedications".  You
     must delete all sections Entitled "Endorsements."

  \subsubsection*{6. COLLECTIONS OF DOCUMENTS}

     You may make a collection consisting of the Document and other
     documents released under this License, and replace the individual
     copies of this License in the various documents with a single copy
     that is included in the collection, provided that you follow the
     rules of this License for verbatim copying of each of the
     documents in all other respects.

     You may extract a single document from such a collection, and
     distribute it individually under this License, provided you insert
     a copy of this License into the extracted document, and follow
     this License in all other respects regarding verbatim copying of
     that document.

  \subsubsection*{7. AGGREGATION WITH INDEPENDENT WORKS}

     A compilation of the Document or its derivatives with other
     separate and independent documents or works, in or on a volume of
     a storage or distribution medium, is called an "aggregate" if the
     copyright resulting from the compilation is not used to limit the
     legal rights of the compilation's users beyond what the individual
     works permit.  When the Document is included in an aggregate, this
     License does not apply to the other works in the aggregate which
     are not themselves derivative works of the Document.

     If the Cover Text requirement of section 3 is applicable to these
     copies of the Document, then if the Document is less than one half
     of the entire aggregate, the Document's Cover Texts may be placed
     on covers that bracket the Document within the aggregate, or the
     electronic equivalent of covers if the Document is in electronic
     form.  Otherwise they must appear on printed covers that bracket
     the whole aggregate.

 \subsubsection*{8. TRANSLATION}

     Translation is considered a kind of modification, so you may
     distribute translations of the Document under the terms of section
     4.  Replacing Invariant Sections with translations requires special
     permission from their copyright holders, but you may include
     translations of some or all Invariant Sections in addition to the
     original versions of these Invariant Sections.  You may include a
     translation of this License, and all the license notices in the
     Document, and any Warranty Disclaimers, provided that you also
     include the original English version of this License and the
     original versions of those notices and disclaimers.  In case of a
     disagreement between the translation and the original version of
     this License or a notice or disclaimer, the original version will
     prevail.

     If a section in the Document is Entitled "Acknowledgements",
     "Dedications", or "History", the requirement (section 4) to
     Preserve its Title (section 1) will typically require changing the
     actual title.

  \subsubsection*{9. TERMINATION}

     You may not copy, modify, sublicense, or distribute the Document
     except as expressly provided for under this License.  Any other
     attempt to copy, modify, sublicense or distribute the Document is
     void, and will automatically terminate your rights under this
     License.  However, parties who have received copies, or rights,
     from you under this License will not have their licenses
     terminated so long as such parties remain in full compliance.

 \subsubsection*{10. FUTURE REVISIONS OF THIS LICENSE}

     The Free Software Foundation may publish new, revised versions of
     the GNU Free Documentation License from time to time.  Such new
     versions will be similar in spirit to the present version, but may
     differ in detail to address new problems or concerns.  See
     `http://www.gnu.org/copyleft/'.

     Each version of the License is given a distinguishing version
     number.  If the Document specifies that a particular numbered
     version of this License "or any later version" applies to it, you
     have the option of following the terms and conditions either of
     that specified version or of any later version that has been
     published (not as a draft) by the Free Software Foundation.  If
     the Document does not specify a version number of this License,
     you may choose any version ever published (not as a draft) by the
     Free Software Foundation.


\newpage
\selectlanguage{francais}

\subsection{Importer des données de PSPP dans {\it R}}
\label{annexe}

La version~0.4.0 de PSPP ne permet pas d'effectuer des calculs statistiques avancés. Pour traiter des données de manière plus sophistiquée, on peut utiliser le logiciel libre {\it R}. Par exemple, on ne peut pas faire de régression linéaire avec PSPP ; mais il est possible d'importer rapidement des données de PSPP dans {\it R} pour effectuer une régression linéaire.

La première étape est de sauvegarder les données manipulées avec PSPP dans un fichier binaire, en tapant dans le fichier syntaxe de PSPP la commande suivante (cf.~commande {\it SAVE}, section~\ref{save}, page~\pageref{save})\index{SAVE} :
\begin{verbatim}
 save outfile=exemple.sav 
\end{verbatim}

Pour importer des données avec {\it R}, il faut utiliser le module {\it foreign} (éventuellement à installer). Après avoir lancé le logiciel {\it R}, il faut taper les commandes suivantes pour successivement importer les données du fichier 'exemple.sav' et effectuer la régression linéaire sur les variables X et Y déclarées dans PSPP :

\begin{verbatim}
> library(foreign)
> reglin <- read.spss("exemple.sav")
> attach(reglin)
> lm(Y ~ X)
\end{verbatim}


\newpage
\begin{thebibliography}{99}
\bibitem{} Ben Pfaff, {\it GNU PSPP, A System for Statistical Analysis, Edition 0.4.0, for PSPP version 0.4.0} (http://www.gnu.org/software/pspp/manual/)
\bibitem{} SPSS Inc., {\it SPSS 6.1 Syntax Reference Guide}
\bibitem{} Duncan Cramer, {\it Introducing statistics for social research, step-by-step calculations and computer techniques using SPSS}
\bibitem{} http://fr.wikipedia.org/wiki/Logiciel\_libre/
\bibitem{} http://www.gnu.org/philosophy/
\bibitem{} http://www.gnu.org/software/pspp/
\bibitem{} http://www.bibmath.net/dico/
\end{thebibliography}




\printindex
\end{document}
