J'ai créé 2 fichiers pour illustrer mon problème.
Dans "Test 1", j'ai des données de 4 personnes (c'est-à-dire AAAA, BBBB, CCCC, DDDD). Chaque personne a 8 réponses à une question "estimation" et 8 réponses à une question "vérité". La moitié des réponses proviennent du domaine "0" et l'autre moitié du domaine "1".
Je voudrais trouver la corrélation entre l'estimation et la question de vérité pour chaque personne dans chaque domaine. Je sais que je peux le faire en allant dans Analyze / Multivariate Methods / Multivariate et en plaçant les questions d'estimation et de vérité dans la case "Y, Columns", et à la fois "ID" et "Domain" dans la case "By".
Le problème est que je souhaite que la sortie de cette analyse se trouve dans une autre table JMP afin de pouvoir effectuer d'autres analyses sur les corrélations. Par exemple, je veux savoir quelle est la corrélation des personnes moyennes entre l'estimation et la vérité dans chacun des domaines. Pour ce faire, j'ai besoin d'un fichier qui ressemble aux données du fichier "Test 2".
Pouvez-vous s'il vous plaît me dire un moyen automatique de produire les données "Test 2" à partir des données Test 1 ? Je ne peux pas le faire manuellement car l'ensemble de données réel avec lequel je travaille est énorme.
Vous pouvez exploiter le 'makeCombinedDataTableMessage'. En JSL, quelque chose comme :
NamesDefaultToHere(1);
// Data table
dt = DataTable("Test 1.jmp");
// Multivariate
m = dt << Multivariate(Y( :Estimate, :Truth ), By( :ID, :Domain ));
// 'm' is a list because of the 'By' variable: Get the report for the first level
mRep = Report(m[1]);
// Get the correlation matrix into a table dt2 (for all levels)
dt2 = mRep[MatrixBox(1)] << makeCombinedDataTable;
// Manipulate dt2 to remove redundancy
dt2 << setName("Correlation Coefficients For By Groups");
dt2 << deleteColumns({3, 4});
r2del = dt2 << getRowsWhere(:Truth == 1);
dt2 << deleteRows(r2del);
Column(dt2, "Truth") << setName("Correlation Coefficient")