Un script Test de normalité pour plusieurs colonnesSalut,
J'aime écrire un script qui peut vérifier la normalité de nombreuses colonnes et créer une nouvelle colonne avec une sortie binaire (0,1) pour indiquer normale et non normale J'ai vu un complément pour le test de normalité, mais je ne sais pas comment l'utiliser pour accomplir ce que je veux.
Toute aide est grandement appréciée.
Merci.
Re: Un test de normalité de script pour plusieurs colonnesMerci beaucoup.
Re: Un test de normalité de script pour plusieurs colonnesL'idée de Jim en matière d'échantillonnage aléatoire est bonne, mais vous devez faire face au problème de la taille et de la puissance de l'échantillon. Il serait peut-être plus simple d’ajuster votre p -values utilisant l'approche du taux de détection de faux (FDR).
Re: Un test de normalité de script pour plusieurs colonnesVous pouvez échantillonner radicalement vos données jusqu'à une taille d'échantillon raisonnable afin de ne pas noyer les statistiques avec la taille de l'échantillon.
Re: Un test de normalité de script pour plusieurs colonnesMerci Dan pour les commentaires. Mais que dois-je faire alors. J'essaie de comprendre si les distributions sont normales ou non et j'ai de gros échantillons.
J'apprécie votre aide sur ce cas. Merci
Re: Un test de normalité de script pour plusieurs colonnesJe conviens que les données semblent normales. Vous avez rencontré le problème du test statistique avec de grandes quantités de données. Toute différence, aussi légère soit-elle, sera considérée comme statistiquement significative. Vous avez plus de 100 000 observations. Le test de normalité (comme tout test statistique) détectera une différence statistiquement significative en raison de la taille importante de l'échantillon. Cette différence statistiquement significative ne sera probablement pas une différence significative dans la pratique.
Re: Un test de normalité de script pour plusieurs colonnesSalut David,
Merci. J'ai essayé avec une autre table et j'ai regardé une colonne. J'ai eu le résultat que la distribution n'est pas normale et je suis surpris parce que la distribution est normale pour moi. La valeur p rapportée est 0,01. J'ai joint l'histogramme. Des commentaires? Merci.
Re: Un test de normalité de script pour plusieurs colonnesQuelques meilleures données ... par exemple
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
For (i=5,i<=10,i++,
colName = Column(dt,i) << Get Name;
show(colName);
pValue = Test Normal(dt,colName);
show(pValue);
);
Re: Un test de normalité de script pour plusieurs colonnesCette boucle était juste pour illustration. Avec les données Big Class, cela n’a pas beaucoup de sens. L'erreur est due au fait qu'il tente de tester la normalité pour la colonne d'age - qui a un type de modélisation ordinale - alors que le test de normalité suppose que la colonne est continue. Il vous suffit donc de lui fournir des données d’entrée significatives.
Re: Un test de normalité de script pour plusieurs colonnesMerci beaucoup pour vos commentaires rapides et votre solution. J'ai utilisé le modèle que vous m'avez envoyé et lorsque je lance la dernière boucle:
For (i=1,i<=NItems(lstNames),i++,
pValue = Test Normal(dt,lstNames[i]);
show(pValue);
If (pValue<0.05,
show("failed normality test")
,
show("passed normality test"))
);
Je reçois un message d'erreur:
Cannot subscript Display Box in access or evaluation of 'Subscript' , rep[/*###*/"Goodness-of-Fit Test"]
J'apprécie ton aide. Merci.
)
Re: Un test de normalité de script pour plusieurs colonnesVoici une discussion sur le workflow associé à la construction de la fonction définie par l'utilisateur
http://www.pega-analytics.co.uk/blog/testing-residuals-for-normality/
Re: Un test de normalité de script pour plusieurs colonnesVous n'êtes pas sûr de votre connaissance de JSL, mais vous pouvez utiliser une fonction définie par l'utilisateur telle que celle-ci:
Test Normal = Function({dt,col},{Default Local},
dist = dt << Distribution( Invisible,
Continuous Distribution(
Column( Eval(col) ),
Fit Distribution(
Normal( Goodness of Fit( 1 ) )
)
),
Histograms Only
);
rep = dist << Report;
ob = rep["Goodness-of-Fit Test"];
tb = ob[TableBox(1)];
mat = tb[NumberColBox(2)] << Get;
pValue = mat[1];
rep << Close Window;
Return(pValue);
);
// illustration of using hte function
dt = Open("$SAMPLE_DATA/Big Class.jmp");
pValue = Test Normal(dt,"height");
show(pValue);
If (pValue<0.05,
show("failed normality test")
,
show("passed normality test")
);
À partir de là, vous pouvez placer la fonction dans une boucle for qui itère sur les colonnes:
lstNames = dt << Get Column Names(String,Numeric);
For (i=1,i<=NItems(lstNames),i++,
pValue = Test Normal(dt,lstNames[i]);
// etc
);