<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour, j'essaie de créer un script dynamique qui créera des tableaux de contingence dans un rapport et des statistiques associées en fonction des affectations de colonnes sélectionnées par l'utilisateur. Ceci est ma première tentative à JSL, je suis donc un débutant absolu. Le formulaire utilisateur et la création de table fonctionnent, mais je ne parviens pas à comprendre comment faire référence aux différentes parties du rapport généré pour effectuer des opérations simples, telles que définir le format décimal de la statistique kappa. En fin de compte, j'aimerais également pouvoir extraire les valeurs des tableaux de contingence affichés, effectuer des calculs et afficher les résultats ailleurs dans le rapport. J'ai lu des articles sur les indices et j'essaie d'utiliser ce concept pour creuser dans le rapport, mais je n'arrive pas à comprendre comment les utiliser correctement. Je sais que je dois bien comprendre ce concept, car l'utilisateur pourra choisir entre 2 colonnes et 10 et le script peut donc générer de 1 à 25 tableaux de contingence, qu'il convient de suivre et de consulter. plus tard. Je sais donc qu'il serait peut-être préférable d'attribuer des variables à chacune d'entre elles, mais je ne peux pas le savoir non plus, car la construction des tables est automatisée par JMP plutôt que d'utiliser quelque chose comme une boucle For. Toute aide est fortement appréciée J'aimerais également recevoir des commentaires sur les scripts JSL sans rapport avec mes questions spécifiques (par exemple, les meilleures pratiques, etc.) à des fins d'apprentissage.
La partie qui me pose problème est la section commentée avec / * ------ * /. Désolé pour le commentaire excessif, mais étant mon premier script, je tente de capturer des concepts que mon futur individu pourra revenir en arrière. J'utilise JMP 10.0.1 release 2 sur Windows 7. Je ne trouvais pas déjà un exemple de jeu de données dans JMP qui soit typique de ce que je travaille. Voici donc une version miniature:
| SampleID | Essai n ° 1 | Essai n ° 2 | Référence |
| 307HV093 | Négatif | Négatif | Négatif |
| 307HV093 | Négatif | Négatif | Négatif |
| 307HV094 | Positif | Positif | Positif |
| 307HV094 | Positif | Positif | Positif |
| 307HV095 | Positif | Positif | Positif |
| 307HV095 | Positif | Positif | Positif |
| 307HV096 | Positif | Positif | Positif |
| 307HV096 | Positif | Positif | Positif |
| 307HV097 | Négatif | Négatif | Négatif |
| 307HV097 | Négatif | Négatif | Négatif |
| 307HV098 | Négatif | Négatif | Négatif |
// Basé sur "Construction d'arbres d'affichage", page 363 du Guide de script JMP pour JMP 10
globals clairs () ;
Noms par défaut jusqu'ici ( 1 ) ; // toutes les variables non scoped sont locales
si ( est vide ( dt = courantdatatable ()) , dt = ouvrir ( pickfile ( "Choisissez un fichier de données d'entrée:" ))) ;
// savedir = pickdirectory ("Choisissez un dossier de destination pour les fichiers de résumé:"); // utilise ceci plus tard
dt = currentDataTable () ; Caroline du Nord = ncol ( dt ) ; // récupère le # de colonnes dans la table
lbWidth = 130 ;
pas mis en œuvre = expr ( Nouvelle fenetre ( "Fonctionnalité pas encore implémentée" << Modal , ButtonBox ( "D'ACCORD" ))) ; // je n'ai aucune idée de ce que << modal fait
clusterDlg = Nouvelle fenetre ( "2x2 Tables de contingence et statistiques" , // crée une nouvelle fenêtre pour la sélection des colonnes par l'utilisateur
BorderBox ( la gauche ( 3 ) , Haut ( 2 ) ,
VListBox (
Zone de texte ( "Tests comparatifs" ) ,
HlistBox (
VListBox (
PanelBox ( "Sélectionner des colonnes" , // box pour lister les colonnes disponibles
colListData = ColListBox ( Tout , largeur ( lbWidth ) , nLines ( min ( Caroline du Nord , dix ))) // liste de toutes les colonnes de la table de données en utilisant la largeur standard lbWidth (130)
) ,
) ,
PanelBox ( "Transformer les colonnes sélectionnées en rôles" , // box pour désigner les colonnes pour l'analyse
LineupBox ( NCol ( 2 ) , Espacement ( 3 ) ,
ButtonBox ( "Dosage, colonnes" ,
listeListe << Ajouter ( colListData << GetSélectionné )) , // prend les colonnes sélectionnées et les ajoute à la liste déroulante colListY
listeListe = ColListBox ( largeur ( lbWidth ) , nLines ( 5 )) , // le nombre de lignes est limité à 5 et ceci peut être étendu mais devrait être suffisant pour la plupart des études
ButtonBox ( "Test de référence ou comparatif, colonne" ,
colListB << Ajouter ( colListData << GetSélectionné )) , // désigne une colonne comme référence ou un test "comparatif" à comparer aux autres (cela deviendra le X et affectera les statistiques futures)
colListB = ColListBox ( largeur ( lbWidth ) , nLines ( 5 )) // le nombre de lignes est limité à 5, augmentant les résultats lors de comparaisons supplémentaires
// l'ordre sera la 1ère référence (X) à chacun des tests (Y), la 2ème référence à chacun des tests, etc.
) ,
) ,
PanelBox ( "Action" ,
LineupBox ( NCol ( 1 ) ,
ButtonBox ( "D'ACCORD" ,
contwin = Nouvelle fenetre ( "Résultats de contingence" || carboniser ( format ( comme date ( aujourd'hui ()) , "ddMonyyyy" )) ,
Tabbox ( "Tableau de contingence" , HListBox (
cont = Contingence ( // cont est une référence à la plateforme (couche d'analyse)
Y ( colListB << obtenir des objets ) ,
X ( listeListe << obtenir des objets )) ; //contingence
cont << Tableau de contingence (
Compter ( 1 ) ,
Total % ( 0 ) ,
Col% ( 0 ) ,
Rangée % ( 0 ) ,
Attendu ( 0 ) ,
Déviation ( 0 ) ,
Cellule Chi Squared ( 0 ) ,
Col Cum ( 0 ) ,
Col Cum% ( 0 ) ,
Row Cum ( 0 ) ,
Row Cum% ( 0 ) ,
) ;
cont << fenêtre de taille ( 500 , 700 ) ; // Je veux que la table de contingence arrête de couper les mots mais je n'arrive pas à l'agrandir
cont << Mosaïque ( 0 ) ; //éteindre
cont << Des tests ( 0 ) ;
cont << Convention d'accord ( 1 ) ; //allumer
rcont = cont << rapport ; // une référence au rapport
/ * rcont ["Statistique de l'accord", "Test de Bowker"] << fermer (1)
pour (i = 1, i <= nitems (rcont), i ++,
kap = rcont (Table de contingence (i) ["Statistique de l'accord", "Coefficient Kappa"]);
kapset = kap [NumberColbox ("Kappa")];
kap << set format (8,3);
kap << set Format conditionnel ("Corrélation");
rcont (SendToReport (
Dispatch (// peut-être que dispatch fonctionnerait mieux?
{"Statistique d'accord", "Coefficient Kappa"},
"Kappa",
NumberColBox,
{Définir le format (8, 3), Définir le format conditionnel ("Corrélation")}
));, * /
) , // H List Box
"copie de 2x2 contingence" , // deuxième onglet
// testval = reportcont [TableBox (1)]; besoin de comprendre comment saisir les valeurs du tableau de contingence
// matrixbox (testval << obtenir en tant que matrice))
)) // tabbox
) ; // window, en supprimant le ";" ", la fenêtre de dialogue ne se ferme pas
clusterDlg << Fermer la fenêtre ) , // bouton OK
ButtonBox ( "Annuler" ,
clusterDlg << Fermer la fenêtre ) ,
Zone de texte ( "" ) ,
ButtonBox ( "Retirer" , // supprime les colonnes sélectionnées des deux listes déroulantes d'analyse
listeListe << Enlever la sélection ;
colListB << Enlever la sélection ;
) ,
ButtonBox ( "Rappel" , pas mis en œuvre ) , // n'a pas été programmé
ButtonBox ( "Aidez-moi" , pas mis en œuvre )) // n'a pas été programmé
) // panneau
) // hlistbox
) // vlistbox
) // borderbox
) ; // window (cluster dlg)