15 octobre 2015

IBM SPSS Data Collection – Astuce pour de meilleurs tests statistiques


Data & techno Voir toutes nos actualités

Le test statistique est une étape incontournable du traitement d’enquête car il va permettre de mettre en lumière les différences importantes entre plusieurs sous-populations.

Nous allons aujourd’hui nous concentrer sur le « test de comparaison des proportions colonnes » (« colonne versus colonne »), mais le même principe s’applique également pour d’autres tests tel que le « test de comparaison des moyennes » par exemple.
Dans « IBM SPSS Data Collection », il y a plusieurs manières de spécifier ce test.
Soit on le spécifie dans les paramètres généraux (de notre fichier MRS) et il sera automatiquement appliqué à l’ensemble des tableaux (pour lesquels on a une variable en colonne évidemment) :

With TableDoc.Default
     With .Statistics

          .Add("ColumnProportions")
          .ColumnProportions.SigLevel = 5
	
     End With
End With

(NB : il s’agit ici d’un test avec un seuil de significativité demandé à 5%)

Soit on peut aussi le spécifier pour un tableau en particulier, par exemple :

With TableDoc.Tables

     .AddNew("Table1","sexe * q1","Test stat 1")
     .Table1.Statistics.Add("ColumnProportions")
     .Table1.Statistics.ColumnProportions.SigLevel = 5

End With

On obtient ensuite un tableau de ce type :

Jusque là tout va bien, mais que se passe-t-il si on souhaite « personnaliser » un peu plus ce test ? En effet, ici par défaut, le test statistique a été appliqué automatiquement à toutes les colonnes n’étant pas un élément de type « base ».
Or on pourrait par exemple vouloir que le test ne soit pas appliqué pour la colonne « Autre marque » (lettre D dans l’exemple précédent) et soit par contre appliqué pour la colonne « Total » (qui est un élément de type « base » ici).
Pour faire cela, une solution consiste à le spécifier sur notre tableau comme suit :

With TableDoc.Tables

     .AddNew("Table1","sexe * q1","Test stat 1")
     .Table1.Statistics.Add("ColumnProportions")
     .Table1.Statistics.ColumnProportions.SigLevel = 5

     .Table1.Statistics.ColumnIDs = "ZABC."
     .Table1.Statistics.TestColumns = "Z/A/B/C"

End With

(NB : ici toutes les colonnes seront considérées dans l’ordre et le « point » permet de spécifier une colonne qui sera ignorée par le test)

Et on obtient ainsi le tableau suivant :


Mais que se passe-t-il si on souhaite appliquer cette même règle pour l’ensemble des tableaux spécifiés dans notre fichier MRS ? Eh bien cela n’est pas possible ! Les options « ColumnIDs » et « TestColumns » ne sont pas disponibles dans les paramètres généraux des tableaux. Il faudra donc ajouter ses paramètres à la définition de chacun des tableaux, ce qui n’est pas du tout pratique…

Heureusement, il y a une astuce (non présente dans la documentation officielle) que je vais vous exposer aujourd’hui : il est possible d’utiliser une boucle sur les tableaux définis pour leur appliquer automatiquement à tous, les paramètres « ColumnIDs » et « TestColumns ».
Voici un exemple (à placer juste avant le remplissage des tableaux « Populate() ») :

Dim MyTable

For Each MyTable in TableDoc.Tables

     MyTable.Statistics.ColumnIDs = "ZABC."
     MyTable.Statistics.TestColumns = "Z/A/B/C"

Next

Un sacré gain de temps ! 😉