Advertisement
Guest User

code stacie

a guest
Dec 28th, 2014
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 2.41 KB | None | 0 0
  1. # predire : log de la constante d'affinite des molecules pour la HSA
  2. # 1666 descripteurs
  3. # 94 individus
  4.  
  5. # elminer variables inutiles
  6. # justifier methodes choisies
  7. # validation croisee pour determiner les parametres a choisir
  8. # avantages/inconvenients des methodes utilisees
  9. # proposer perspectives
  10.  
  11. #----------------------------- Importer les donnees --------------------------#
  12.  
  13. d = read.table('X.txt', header=T)
  14. d = na.omit(d)
  15.  
  16. cte = read.table('Y.txt', header=T)
  17.  
  18. #---------------------------- Nettoyer les donnees ---------------------------#
  19.  
  20. # on enleve les descripteurs qui ont une variance nulle
  21. # car pas informatifs
  22. d = d[,sapply(d,sd)!=0]
  23. # il reste 1492 descripteurs
  24.  
  25. d.cte = cbind(d,cte) # ajout de la colonne 'x'
  26. # 1493 colonnes, 1493eme colonne contient le log des constantes d'affinite 'x'
  27.  
  28. #----- elimination des variables correlees
  29.  
  30. elimcor_sansY<-function(X,s=0.95)
  31. {
  32.   #X matrice contenant les variables a grouper
  33.   #Y vecteur contenant les groupes a predire
  34.   #s valeur seuil de correlation
  35.   correl=cor(X)
  36.   stop=F
  37.   possetap=1:ncol(X)
  38.   groupes=as.list(1:ncol(X))
  39.  
  40.   while (stop==F)
  41.   {
  42.     ##regroupement des var pour lesquelles |corr|>0.95
  43.     gplist<-list(NULL)
  44.     possglob=1:ncol(correl)
  45.     for (i in 1:(ncol(correl)))
  46.     {
  47.       poss=possglob[-i]
  48.       gplist[[i]]=c(i,poss[abs(correl[i,poss])>s])
  49.     }
  50.     ##on trie les groupes du plus gros au plus petit
  51.     gplisteff=unlist(lapply(gplist,length))
  52.     if (any(gplisteff>1))
  53.     {
  54.       gplistfin=gplist[gplisteff>1]
  55.       gplistuniq=unlist(gplist[gplisteff==1])
  56.       gpsel=NULL
  57.       ##on selectionne dans chaque groupe une variable au hasard
  58.       for (i in 1:length(gplistfin))
  59.       {
  60.         selloc=min(gplistfin[[i]])
  61.         gploc=groupes[[possetap[selloc]]]
  62.         for (j in 1:length(gplistfin[[i]]))
  63.         {
  64.           gploc=c(gploc,groupes[[possetap[gplistfin[[i]][j]]]])                 }
  65.         groupes[[possetap[selloc]]]=unique(gploc)
  66.         gpsel=c(gpsel,selloc)
  67.       }
  68.       possetap=possetap[c(gplistuniq,unique(gpsel))]
  69.       correl=cor(X[,possetap])
  70.     }
  71.     else stop=T
  72.   }
  73.   #groupeseff=unlist(lapply(groupes,length))
  74.   #groupes=groupes[groupeseff>1]
  75.   return(list(possetap=possetap,groupes=groupes))
  76. }
  77.  
  78. # elimcor sans le Y sur la matrice normalisee
  79. d.norm = scale(d.cte, center=T, scale=T)
  80. d.elimcor = d.norm[,elimcor_sansY(d.norm[,-1493],0.95)$possetap]
  81. # reste 661 descripteurs
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement