première mise à jour pour python 3
[iramuteq] / Rscripts / CHD.R.old
diff --git a/Rscripts/CHD.R.old b/Rscripts/CHD.R.old
deleted file mode 100644 (file)
index f81e346..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-#library(ca)
-#library(MASS)
-#source('/home/pierre/workspace/iramuteq/Rscripts/afc.R')
-#data<-read.table('output/corpus_bin.csv',header=TRUE,sep='\t')
-source('/home/pierre/workspace/iramuteq/Rscripts/anacor.R')
-
-CHD<-function(data,x=9){
-       dataori=data
-       dtable=data
-       listcol<-list()
-       listmere<-list()
-       a<-0
-       print('vire colonnes vides en entree')#FIXME : il ne doit pas y avoir de colonnes vides en entree !!
-       for (m in 1:length(dtable)) {
-           if (sum(dtable[m-a])==0) {
-               print('colonne vide')
-                       dtable<-dtable[,-(m-a)]
-                       a<-a+1
-           }
-    }
-       for (i in 1:x) {
-               clnb<-(i*2)
-               listmere[[clnb]]<-i
-               listmere[[clnb+1]]<-i
-               listcol[[clnb]]<-vector()
-               listcol[[clnb+1]]<-vector()
-               #extraction du premier facteur de l'afc
-               print('afc')
-               #afc<-ca(dtable,nd=1)
-               #afc<-corresp(dtable,nd=1)
-               #afc<-fca(dtable)
-               afc<-boostana(dtable,nd=1)
-               #coordonnees des colonnes sur le premier facteur
-               #coordrow=afc$rowcoord
-               #coordrow=as.matrix(afc$rscore)
-               #coordrow<-as.matrix(afc$rproj[,1])
-               coordrow<-as.matrix(afc$row.scores)
-               #row.names(coordrow)<-afc$rownames
-               row.names(coordrow)<-rownames(dtable)
-               #classement en fonction de la position sur le premier facteur
-               #listclasse<-ifelse(coordrow<0,paste('CLASSE',clnb,sep=''),paste('CLASSE',clnb+1,sep=''))
-
-               print('deb recherche meilleur partition')
-               coordrow<-as.matrix(coordrow[order(coordrow[,1]),])
-               #print(rownames(coordrow))
-               zeropoint<-which.min(abs(coordrow))
-               print(zeropoint)
-               g<-length(coordrow[coordrow[,1]<coordrow[zeropoint]])
-               d<-length(coordrow[coordrow[,1]>coordrow[zeropoint]])
-               prct<-1
-               g<-round(g*prct)
-               d<-round(d*prct)
-               print(g)
-               print(d)
-               temptable<-as.matrix(coordrow[(zeropoint-g):(zeropoint+d)])
-               row.names(temptable)<-rownames(coordrow)[(zeropoint-g):(zeropoint+d)]
-               #print(temptable)
-               missing<-zeropoint-g
-               listchi<-vector()
-               chtable<-matrix(0,2,(ncol(dtable)))
-               totforme<-chtable[1,]
-               for (forme in 1:(ncol(dtable))) {
-                       totforme[forme]<-sum(dtable[,forme])
-               }               
-               chtable[2,]<-totforme
-               for (l in 1:length(temptable)) {
-               #       print(rownames(temptable)[l])
-                       linetoswitch=as.matrix(dtable[rownames(temptable)[l],])
-               #       print(linetoswitch)
-                       chtable[1,]<-chtable[1,]+linetoswitch
-                       chtable[2,]<-chtable[2,]-linetoswitch
-                       valchi<-chisq.test(chtable)$statistic
-                       if (is.na(valchi)){
-                               valchi<-0
-                       }
-                       listchi<-append(listchi,valchi)
-               }
-               #listchi<-listchi[!is.na(listchi)]
-               maxchi<-which(listchi==max(listchi))
-               print(max(listchi))
-               print(maxchi)
-               maxchi<-maxchi+missing
-               #print(listchi)
-               #listclasse
-               print('liste classe')
-               print(coordrow[(maxchi)])
-               listclasse<-ifelse(coordrow<=coordrow[(maxchi)],clnb,clnb+1)
-#              listclasse<-ifelse(coordrow<0,clnb,clnb+1)
-               listchi<-as.matrix(listchi)
-               listchi<-cbind(listchi,temptable)
-               filename<-paste('graphechi',as.character(i))
-               filename<-paste(filename,'.jpeg')
-               jpeg(filename)
-               plot(listchi[,1]~listchi[,2])
-               abline(v=0)
-               print(coordrow[zeropoint-g])
-               abline(v=coordrow[zeropoint-g])
-               abline(v=coordrow[zeropoint+d])
-               abline(v=coordrow[(maxchi)])
-               dev.off()
-               
-               #ajout du classement au tableau
-               dtable<-transform(dtable,cl1=listclasse)
-               
-               #calcul de la specificite des colonnes
-               t1<-dtable[dtable$cl1==clnb,]
-               t2<-dtable[dtable$cl1==clnb+1,]
-               
-               for (k in 1:(ncol(dtable)-1)) {
-                       t<-matrix(0,2,2)
-                       t[1,1]<-sum(t1[,k])
-                       t[1,2]<-sum(t2[,k])
-                       t[2,1]<-nrow(t1)-t[1,1]
-                       t[2,2]<-nrow(t2)-t[1,2]
-                       chi<-chisq.test(t)
-                       if (chi$statistic>6){#FIXME : valeur a mettre en option base :2.7
-                               if (chi$expected[1,1]<t[1,1]){
-                                       listcol[[clnb+1]]<-append(listcol[[clnb+1]],k)
-                               } else {
-                                       listcol[[clnb]]<-append(listcol[[clnb]],k)
-                               }
-                       }
-               }
-               
-               #lignes concernees
-               listrownamedtable<-rownames(dtable)
-               listrownamedtable<-as.integer(listrownamedtable)
-        newcol<-vector(length=nrow(dataori))
-               #remplissage de la nouvelle colonne avec les nouvelles classes
-               print('remplissage')
-               num<-0
-               for (ligne in listrownamedtable) {
-                       num<-num+1
-                       newcol[ligne]<-as.vector(dtable$cl1[num])[1]
-               }
-               #recuperation de la classe precedante pour les cases vides
-               print('recuperation classes precedentes')
-               matori<-as.matrix(dataori)
-        if (i!=1) {
-        #    options(warn=-1)
-            for (ligne in 1:length(newcol)) {
-         #       print(newcol[ligne])
-                if (newcol[ligne]==0) { # ce test renvoie un warning
-                    newcol[ligne]<-matori[ligne,length(matori[1,])]
-                }
-            }
-         #   options(warn=0)
-        }
-               #???????????????????????????????????
-               #je ne comprends pas : j'ai vraiment besoin de faire ces deux actions  pour ajouter la nouvelle colonne aux donnees ?
-               #si je ne le fais pas, ca plante...
-               dataori<-cbind(dataori,newcol)
-               dataori<-transform(dataori,newcol=newcol)
-               #???????????????????????????????????
-               
-               #liste des noms de colonne
-               #colname<-colnames(dataori)
-               #nom de la derniere colonne
-               #colname<-colname[length(dataori)]
-               #la derniere colonne
-               colclasse<-as.character(dataori[,ncol(dataori)])
-               #print(colclasse)
-        #les modalites de la derniere colonne
-               classes<-levels(as.factor(colclasse))
-               print(classes)
-               #determination de la classe la plus grande
-               tailleclasse<-paste(NULL,1:length(classes))
-               b<-0
-               for (classe in classes) {
-                  b<-b+1
-                  dtable<-dataori[dataori[length(dataori)]==classe,]
-                  tailleclasse[b]<-length(dtable[,1])
-               }
-               tailleclasse<-as.integer(tailleclasse)
-               print(tailleclasse)
-               plusgrand<-which(tailleclasse==max(tailleclasse))
-               
-               #???????????????????????????????????
-               #Si 2 classes ont des effectifs egaux, on prend la premiere de la liste...
-               if (length(plusgrand)>1) {
-                       plusgrand<-plusgrand[1]
-               }
-               #????????????????????????????????????
-               
-               #constuction du prochain tableau a analyser
-               print('construction tableau suivant')
-               classe<-classes[plusgrand]
-               dtable<-dataori[dataori[length(dataori)]==classe,]
-               dtable<-dtable[,1:(length(dtable)-i)]
-               
-               
-               listcolelim<-listcol[[as.integer(classe)]]
-               mother<-listmere[[as.integer(classe)]]
-               while (mother!=1) {
-                       listcolelim<-append(listcolelim,listcol[[mother]])
-                       print(listcolelim)
-                       mother<-listmere[[mother]]
-               }
-               
-               listcolelim<-sort(unique(listcolelim))
-               print(listcolelim)
-               print('avant')
-               print(ncol(dtable))
-               if (!is.logical(listcolelim)){
-                       print('elimination colonne')
-                       a<-0
-                       for (col in listcolelim){
-                               dtable<-dtable[,-(col-a)]
-                               a<-a+1
-                       }
-               }
-               print('apres')
-               print(ncol(dtable))
-               #elimination des colonnes ne contenant que des 0
-               print('vire colonne vide dans boucle')
-               a<-0
-               for (m in 1:ncol(dtable)) {
-                       if (sum(dtable[,m-a])==0) {
-                               dtable<-dtable[,-(m-a)]
-                               a<-a+1
-                       }
-               }
-               #elimination des lignes ne contenant que des 0
-#              print('vire ligne vide dans boucle')
-#              a<-0
-#              for (m in 1:nrow(dtable)) {
-#                      if (sum(dtable[m-a,])==0) {
-#                              print('ligne vide')
-#                              dtable<-dtable[-(m-a),]
-#                              a<-a+1
-#                      }
-#              }
-       }
-       dataori[(length(dataori)-x+1):length(dataori)]
-}
-
-#dataout<-CHD(data,9)
-
-#library(cluster)
-#dissmat<-daisy(dataout, metric = 'gower', stand = FALSE)
-#chd<-diana(dissmat,diss=TRUE,)
-
-
-#pour tester le type, passer chaque colonne en matice et faire mode(colonne)
-#for (i in 1:13) {tmp<-as.matrix(data[i]);print(mode(tmp))}