Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Test du Chi2
3 participants
Page 1 sur 1
Test du Chi2
Bonjour à tous et merci de prendre le temps de lire mon message,
Je vais essayer d'être clair:
Je dispose de 15 variables qualitatives: v1 v2...v15 et j'aimerais faire un test du chi2 pour chacun des couples possible.
Grâce à Excel, j'ai pu obtenir l'ensemble des couples que j'ai copier coller dans une proc freq avec option du test du Chi2 comme ci dessous:
proc freq data=table;
tables v1*v2 v1*v3…v14*v15 /noprint chisq ;
weight kish ;run;
ça marche bien mais ça me sort 15*16/2 tableaux alors que je n'en voudrais qu'un seul résumant l'info dont j'ai besoin afin que cela soit lisible.
Si vous avez une solution, je suis preneur !
Merci encore
très cordialement
Pierre
Je vais essayer d'être clair:
Je dispose de 15 variables qualitatives: v1 v2...v15 et j'aimerais faire un test du chi2 pour chacun des couples possible.
Grâce à Excel, j'ai pu obtenir l'ensemble des couples que j'ai copier coller dans une proc freq avec option du test du Chi2 comme ci dessous:
proc freq data=table;
tables v1*v2 v1*v3…v14*v15 /noprint chisq ;
weight kish ;run;
ça marche bien mais ça me sort 15*16/2 tableaux alors que je n'en voudrais qu'un seul résumant l'info dont j'ai besoin afin que cela soit lisible.
Si vous avez une solution, je suis preneur !
Merci encore
très cordialement
Pierre
StatLife- Nombre de messages : 12
Date d'inscription : 11/09/2013
Re: Test du Chi2
J'ai retrouvé un ancien programme que j'avais utilisé et qui marche toujours (j'ai testé sur une table de la sashelp) :
Dis-moi si ça marche bien chez toi.
- Code:
%macro corr(table);
PROC CONTENTS DATA =&table OUT = work.dico noprint;
RUN;
PROC SQL noprint;
SELECT name INTO : listeVar SEPARATED BY " "
FROM work.dico
where TYPE=2
ORDER BY varnum;
quit;
%put &listevar;
%let lm=1;
%let i=1;
%do %until(&lm=0);
%let lm=%length(%scan(&listeVar,&i)) ;
%let i=%eval(&i+1) ;
%end ;
%let nbvar=%eval(&i-2);
%let varnum1=%scan(&listeVar,1);
%let varnum2=%scan(&listeVar,2);
proc freq data=&table;
tables &varnum1 * &varnum2 / chisq;
ods output ChiSq=chi2;
run;
data coeff;
set chi2;
where Statistic in ("Chi-Square","Cramer's V","Khi-2","V de Cramer");
run;
%do i=1 %to %eval(&nbvar-1);
%let varnum&i=%scan(&listeVar,&i);
%do j=%eval(&i+1) %to &nbvar;
%let varnum&j=%scan(&listeVar,&j);
proc freq data=&table;
tables &&varnum&i * &&varnum&j / chisq;
ods output ChiSq=chi2;
run;
data coeff2;
set chi2;
where Statistic in ("Chi-Square","Cramer's V","Khi-2","V de Cramer");
run;
data coeff;
set coeff coeff2;
run;
%end;
%end;
data coeff;
set coeff;
if _n_>2 then output;
run;
data coeff1;
set coeff;
if Statistic in ("Chi-Square","Khi-2") then output;
run;
data coeff1;
set coeff1;
rename Prob=chi2;
drop Statistic value;
run;
data coeff2;
set coeff;
if Statistic in ("Cramer's V","V de Cramer") then output;
run;
data coeff2;
set coeff2;
rename value=cramer;
drop Statistic DF Prob;
run;
proc sort data=coeff1;
by Table;
run;
proc sort data=coeff2;
by Table;
run;
data coeff;
merge coeff1 coeff2;
by Table;
run;
PROC SQL ;
DROP TABLE work.dico;
DROP TABLE work.chi2;
drop table work.coeff1;
drop table work.coeff2;
QUIT ;
%mend corr;
%corr(sashelp.revhub2);
Dis-moi si ça marche bien chez toi.
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Test du Chi2
La table finale se trouve dans la work et se nomme coeff.
Tu as donc autant de lignes que de croisements possibles et 4 colonnes : les variables en jeu, le nombre de degré de liberté, la p-value du test de khi-2 et la valeur du V de Cramer
Tu as donc autant de lignes que de croisements possibles et 4 colonnes : les variables en jeu, le nombre de degré de liberté, la p-value du test de khi-2 et la valeur du V de Cramer
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: Test du Chi2
J'ai remodifié le programme parce que j'étais encore plus débutant que maintenant à l'époque :
- Code:
%macro corr(table);
proc sql;
drop table work.coeff;
quit;
PROC CONTENTS DATA =&table OUT = work.dico noprint;
RUN;
PROC SQL noprint;
SELECT name INTO : listeVar SEPARATED BY " "
FROM work.dico
where TYPE=2
ORDER BY varnum;
quit;
%put &listevar;
%let lm=1;
%let i=1;
%do %until(&lm=0);
%let lm=%length(%scan(&listeVar,&i)) ;
%let i=%eval(&i+1) ;
%end ;
%let nbvar=%eval(&i-2);
%do i=1 %to %eval(&nbvar-1);
%let varnum&i=%scan(&listeVar,&i);
%do j=%eval(&i+1) %to &nbvar;
%let varnum&j=%scan(&listeVar,&j);
proc freq data=&table;
tables &&varnum&i * &&varnum&j / chisq;
ods output ChiSq=chi2;
run;
data coeff2;
set chi2;
where Statistic in ("Chi-Square","Cramer's V","Khi-2","V de Cramer");
run;
proc append data=coeff2 base=coeff;
run;
%end;
%end;
data coeff1;
set coeff;
if Statistic in ("Chi-Square","Khi-2") then output;
run;
data coeff1;
set coeff1;
rename Prob=chi2;
drop Statistic value;
run;
data coeff2;
set coeff;
if Statistic in ("Cramer's V","V de Cramer") then output;
run;
data coeff2;
set coeff2;
rename value=cramer;
drop Statistic DF Prob;
run;
proc sort data=coeff1;
by Table;
run;
proc sort data=coeff2;
by Table;
run;
data coeff;
merge coeff1 coeff2;
by Table;
run;
PROC SQL ;
DROP TABLE work.dico;
DROP TABLE work.chi2;
drop table work.coeff1;
drop table work.coeff2;
QUIT ;
%mend corr;
%corr(sashelp.revhub2);
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Merci
Merci beaucoup niaboc!!!
Le programme tourne impeccable et me retourne exactement ce que je voulais!
A la prochaine sur le forum, bonne continuation
Pierre
Le programme tourne impeccable et me retourne exactement ce que je voulais!
A la prochaine sur le forum, bonne continuation
Pierre
StatLife- Nombre de messages : 12
Date d'inscription : 11/09/2013
Re: Test du Chi2
Bonjour ! j'ai le même problème , mais je ne sais pas comment fonctionne ce programme :/
Bassma- Nombre de messages : 1
Date d'inscription : 01/05/2018
Sujets similaires
» Interprétation test du Chi2 et test Anova
» test de Chi2
» Interprétation des résultats d'un test Chi2
» Choix du Chi2 pour un test ou pas ?
» interprétation/pertinence de mon test chi2
» test de Chi2
» Interprétation des résultats d'un test Chi2
» Choix du Chi2 pour un test ou pas ?
» interprétation/pertinence de mon test chi2
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum