Les posteurs les plus actifs de la semaine
Nik
 
Aymeen
 
Florent Aubry
 
FMarwen
 
clemm
 
AdrienC
 
zezima
 
NOUSRA
 
atm
 
droopy
 


Les bonnes idées R

Aller en bas

Les bonnes idées R

Message par joyeux_lapin13 le Sam 14 Avr 2012 - 19:42

Salut, je créé ce topic pour que vous mettiez vos liens utiles au sujet de R, voir certains programmes/algorithmes pratiques!

R et ses add-ons

Téléchargement de R: http://www.r-project.org/

Téléchargement de R studio: http://rstudio.org/

J'essaierais de mettre à jour régulièrement ces liens. J'insiste sur R studio, depuis qu'on me l'a fait testé je ne jure plus que par ça! Il s'agit d'une interface de R, pour pouvoir vous en servir il vous installer la version R basique puis R studio, ce dernier se sert de votre version R basique par la suite. L'interface propose pas mal de raccourci, par exemple vous avez en simultanée la vue sur votre bureau, sur les graphes générés et les pages d'aides tout en pouvant programmé. Je le recommande très fortement! La seule chose que je regrette c'est, qu'à l'instar de MATLAB, on ne puisse pas avoir accès à tout un mot en tapant juste le début + flèche haut.

Téléchargement de Révolution R (également nommé R analytics) pour le calcul parallélisé: http://www.revolutionanalytics.com/products/revolution-r.php

J'en profite pour recommander le package doSNOW, seul package stable que je retiens de tous les autres, il gère aussi bien le parallélisme multi-core que multi-serveur avec un scheduler particulièrement efficace! Petit bémol: il est limite à 120 cpus en parallèle, au delà il crash.


EDIT: ce topic sera mis en post-it dés que j'aurais trouvé la manip...


Dernière édition par joyeux_lapin13 le Jeu 10 Mai 2012 - 8:37, édité 4 fois
avatar
joyeux_lapin13

Nombre de messages : 1923
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par Nik le Dim 15 Avr 2012 - 7:27

Salut,

merci pour ce topic.

Je voulais juste apporter mon avis sur Rstudio. Sur ma machine je pratique la version classique de R +TinnR sous windows et Rstudio avec Linux. J'avoue que je ne suis pas convaincu par Rstudio à l'usage mais peut être est ce parce que je n'ai pas trouvé où le paramétrer.
En fait, la seule chose que je trouve vraiment bien dans Rstudio c'est la visualisation de l'environnement de travail, de pouvoir shifter de workspace facilement etc...Les autres fenêtres ne sont pas utile (la console reste quasiement la même sauf quelques facilités de script bien utiles comme l'auto-parenthèse). La fenêtre de visualisation des tableaux n'est pas partique du tout et réduit fortement l'espace de la console. R n'est pas un tableur donc je ne vois pas l'intérêt de lui donner une fonctionnalité aui s'en approche. La fenêter graphique n'est pas plus pratique qu'une configuration MDI de R.

Voilà ce n'est que mon avis perso Wink

nik

PS: pour le type de message en phpBB il y a normalement une liste à choix multiple quand tu es en mode modérateur pour définir le type de message (Annonce, post-it ou simple message)
Si tu ne l'as pas cela provient des permissions du forum et il faut donc demander à Orkadess de changer les permissions des modérateurs.
http://forums.phpbb-fr.com/documentation-phpbb3/sujet149600.html

Nik

Nombre de messages : 1588
Date d'inscription : 23/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par joyeux_lapin13 le Dim 15 Avr 2012 - 10:02

Salut Nik, merci de donner ton avis sur Rstudio! Personnellement je ne connais que lui comme interface R et ce que je sur-kiffe dans cet add c'est le fait de pouvoir voir mon interface de programmation et la page d'aide par exemple, après c'est sur qu'ormi le coté coloriage qui rend R moins austère, le reste c'est plus du fun que de l'utile, la possibilité de faire une MAJ en un clique de tous ses packages est une autre chose que j'apprécie grandement.

Pour les post-it, en effet, Orkadess n'a pas mis l'option sur les forums Questions générales et Logiciels, par conséquent je lui ai fait une demande.
avatar
joyeux_lapin13

Nombre de messages : 1923
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par joyeux_lapin13 le Lun 30 Avr 2012 - 9:02

Représentation dotplot

Un petit programme très très très sympatoche, en ce qui me concerne il permet de mieux comprendre pourquoi un facteur, malgré un boxplot "encourageant", est finalement pas si discriminatif. Il permet de faire une représentation appelée abusivement dotplot.
Le programme fait un boxplot transparent et permet de voir la répartition des données dans les différents quartiles et quantiles, de plus les observations ex-aequos sont automatiquement superposées afin de facilité la visibilité et la compréhension.

Code:

tplot <- function(x, ...) UseMethod("tplot")

tplot.default <- function(x, ..., type="d", dist=NULL, jit=0.05, names, xlim=NULL, ylim=NULL, main=NULL, sub=NULL, xlab=NULL, ylab=NULL, col=par("col"), pch=par("pch"), group.col=FALSE, group.pch=FALSE, median.line=FALSE, mean.line=FALSE, median.pars=list(col=par("col")), mean.pars=median.pars, boxplot.pars=NULL, show.n=FALSE, my.gray=gray(.75), ann=par("ann"), axes=TRUE, frame.plot=axes, add=FALSE, at=NULL, horizontal=FALSE, panel.first=NULL, panel.last=NULL) {
    localAxis <- function(..., bg, cex, lty, lwd) axis(...)
    localBox <- function(..., bg, cex, lty, lwd) box(...)
    localWindow <- function(..., bg, cex, lty, lwd) plot.window(...)
    localTitle <- function(..., bg, cex, lty, lwd) title(...)

    args <- list(x, ...)
    namedargs <- if (!is.null(attributes(args)$names))
        attributes(args)$names != ""
    else logical(length(args))
    groups <- if (is.list(x))
        x
    else args[!namedargs]
    pars <- args[namedargs]
    if ((n <- length(groups)) == 0)
        stop("invalid first argument")
    if (length(class(groups)))
        groups <- unclass(groups)
    if (!missing(names))
        attr(groups, "names") <- names
    else {
        if (is.null(attr(groups, "names")))
            attr(groups, "names") <- 1:n
        names <- attr(groups, "names")
    }

    ng <- length(groups) # number of groups
    l <- sapply(groups, length) # size of each group
    g <- rep(1:ng, l) # groups as.numeric
    nv <- sum(l) # total count

    at <- if (is.null(at)) 1:ng else at
    if (length(at) != ng)
        stop("'at' must have same length as the number of groups")

    # set y scale
    ylim <- if (!is.null(ylim))
        ylim
    else {
        r <- range(groups, na.rm=TRUE)
        pm <- diff(r) / 20
        r + pm * c(-1,1)
    }
    # set x scale
    if (is.null(xlim)) {
        if (is.null(at)) xlim <- c(0.5, ng+0.5)
        else xlim <- c(0.5, max(at)+0.5)
    }

    xlab <- if (is.null(xlab)) "" else xlab
    ylab <- if (is.null(ylab)) "" else ylab
    main <- if (is.null(main)) "" else main
    sub <- if (is.null(sub)) "" else sub

    type <- match.arg(type, choices=c("d","db","bd","b"), several.ok=TRUE)
    # type of plot for each group
    if ((length(type) > 1) && (length(type) != ng))
        warning("length of 'type' does not match the number of groups")
    type <- rep(type, length.out=ng)

    # Use colors by group
    if (group.col) {
        if (length(col) != ng)
            warning("length of 'col' does not match the number of groups")
        g.col <- rep(col, length.out=ng)
        col <- rep(g.col, l)
    # Use colors by individual or global
    } else {
        if((length(col) > 1) && (length(col) != nv))
            warning("length of 'col' does not match the number of data points")
        col <- rep(col, length.out=nv)
        g.col <- rep(1, length.out=ng)
    }

    # Use plot characters by group
    if (group.pch) {
        if (length(pch) != ng)
            warning("length of 'pch' does not match the number of groups")
        pch <- rep(rep(pch, length.out=ng), l)
    # Use plot characters by individual or global
    } else {
        if((length(pch) > 1) && (length(pch) != nv))
            warning("length of 'pch' does not match the number of data points")
        pch <- rep(pch, length.out=nv)
    }

    # split colors and plot characters into groups
    col <- split(col, g)
    pch <- split(pch, g)
    # remove any NAs from the data and options
    nonas <- lapply(groups, function(x) !is.na(x))
    groups <- mapply("[", groups, nonas, SIMPLIFY=FALSE)
    l <- sapply(groups, length)
    col <- mapply("[", col, nonas, SIMPLIFY=FALSE)
    pch <- mapply("[", pch, nonas, SIMPLIFY=FALSE)

    # whether or not to display a mean and median line for each group
    mean.line <- rep(mean.line, length.out=ng)
    median.line <- rep(median.line, length.out=ng)

    # set defaults for dist and jit
    if (is.null(dist) || is.na(dist)) dist <- diff(range(ylim)) / 100
    if (is.null(jit) || is.na(jit)) jit <- 0.025 * ng

    # 1 2 3 1 3 2 1 1 4 2
    # -------------------
    # 1 1 1 2 2 2 3 4 1 3
    how.many.so.far <- function(g) {
        out <- NULL
        u <- unique(g)
        for (i in 1:length(u)) out[which(g==u[i])] <- 1:sum(g==u[i])
        out
    }
    # turns the values in each group into their plotting points
    grouping <- function(v, dif) {
        vs <- sort(v)
        together <- c(FALSE, diff(vs) <= dif)
        g.id <- cumsum(!together)
        g.si <- rep(x<-as.vector(table(g.id)), x)
        vg <- cbind(vs, g.id, g.si)[rank(v),]
        if (length(v)==1) vg <- as.data.frame(t(vg))
        hmsf <- how.many.so.far(vg[,2])
        data.frame(vg, hmsf)
    }
    groups <- lapply(groups, grouping, dif=dist)

    # set up new plot unless adding to existing one
    if (!add) {
        plot.new()
        if (horizontal)
            do.call("localWindow", c(list(ylim, xlim), pars))
        else
            do.call("localWindow", c(list(xlim, ylim), pars))
    }
    panel.first

    # function to compute the jittering
    jit.f2 <- function(g.si, hm.sf) { hm.sf - (g.si + 1) / 2 }

    out <- list()

    Lme <- 0.2 * c(-1, 1)
    for (i in 1:ng) {
        to.plot <- groups[[i]]
        gs <- to.plot$g.si
        hms <- to.plot$hm
        x <- rep(at[i], nrow(to.plot)) + jit.f2(gs, hms) * jit
        y <- to.plot$vs

        if (type[i] == "bd") { # dots behind
            if (horizontal)
                do.call("points", c(list(x=y, y=x, pch=pch[[i]], col=my.gray), pars))
            else
                do.call("points", c(list(x=x, y=y, pch=pch[[i]], col=my.gray), pars))
        }
        if (type[i] %in% c("bd", "b")) { # boxplot in front
            outliers <- do.call("boxplot", c(list(x=y, at=at[i], add=TRUE, axes=FALSE, border=g.col[i], outline=FALSE, horizontal=horizontal), boxplot.pars))$out
            toplot <- rowSums(outer(y, outliers, "==")) == 1
            if (horizontal)
                do.call("points", c(list(x=y[toplot], y=x[toplot], pch=pch[[i]][toplot], col=col[[i]][toplot]), pars))
            else
                do.call("points", c(list(x=x[toplot], y=y[toplot], pch=pch[[i]][toplot], col=col[[i]][toplot]), pars))
        }
        if (type[i] == "db") # boxplot behind
            do.call("boxplot", c(list(x=y, at=at[i], add=TRUE, axes=FALSE, border=my.gray, outline=FALSE, horizontal=horizontal), boxplot.pars))
        if (type[i] %in% c("db", "d")) { # dots in front
            if (horizontal)
                do.call("points", c(list(x=y, y=x, pch=pch[[i]], col=col[[i]]), pars))
            else
                do.call("points", c(list(x=x, y=y, pch=pch[[i]], col=col[[i]]), pars))
        }
        if (mean.line[i]) { # mean line
            if (horizontal)
                do.call("lines", c(list(rep(mean(y), 2), at[i]+Lme), mean.pars))
            else
                do.call("lines", c(list(at[i]+Lme, rep(mean(y), 2)), mean.pars))
        }
        if (median.line[i]) { # median line
            if (horizontal)
                do.call("lines", c(list(rep(median(y), 2), at[i]+Lme), median.pars))
            else
                do.call("lines", c(list(at[i]+Lme, rep(median(y), 2)), median.pars))
        }

        out[[i]] <- data.frame(to.plot, col=col[[i]], pch=pch[[i]])
    }
    panel.last

    # add axes
    if (axes) {
        do.call("localAxis", c(list(side=1+horizontal, at=at, labels=names, tcl=0), pars))
        do.call("localAxis", c(list(side=2-horizontal), pars))
    }
    # optional sample sizes
    if (show.n)
        do.call("localAxis", c(list(side=3+horizontal, at=at, labels=paste("n=", l, sep=""), tcl=0), pars, list(mgp=c(3,.5,0), xaxt='s', yaxt='s')))
    # add bounding box
    if (frame.plot)
        do.call("localBox", pars)
    # add titles
    if (ann) {
        if (horizontal)
            do.call("localTitle", c(list(main=main, sub=sub, xlab=ylab, ylab=xlab), pars))
        else
            do.call("localTitle", c(list(main=main, sub=sub, xlab=xlab, ylab=ylab), pars))
    }

    invisible(out)
}

tplot.formula <- function(formula, data=parent.frame(), ..., subset) {
    if (missing(formula) || (length(formula) != 3))
        stop("'formula' missing or incorrect")

    enquote <- function(x) { as.call(list(as.name("quote"), x)) }

    m <- match.call(expand.dots = FALSE)
    if (is.matrix(eval(m$data, parent.frame())))
        m$data <- as.data.frame(data)

    args <- lapply(m$..., eval, data, parent.frame())
    nmargs <- names(args)
    if ("main" %in% nmargs) args[["main"]] <- enquote(args[["main"]])
    if ("sub" %in% nmargs) args[["sub"]] <- enquote(args[["sub"]])
    if ("xlab" %in% nmargs) args[["xlab"]] <- enquote(args[["xlab"]])
    if ("ylab" %in% nmargs) args[["ylab"]] <- enquote(args[["ylab"]])

    m$... <- NULL
    m$na.action <- na.pass
    subset.expr <- m$subset
    m$subset <- NULL
    require(stats, quietly=TRUE) || stop("package 'stats' is missing")
    m[[1]] <- as.name("model.frame")
    mf <- eval(m, parent.frame())
    response <- attr(attr(mf, "terms"), "response")

    ## special handling of col and pch
    n <- nrow(mf)
    # rep as necessary
    col <- if ("col" %in% names(args)) args$col else par("col")
    pch <- if ("pch" %in% names(args)) args$pch else par("pch")
    # pick out these options
    group.col <- if ("group.col" %in% names(args)) args$group.col else FALSE
    group.pch <- if ("group.pch" %in% names(args)) args$group.pch else FALSE
    # reorder if necessary
    if (!group.col) args$col <- unlist(split(rep(col, length.out=n), mf[-response]))
    if (!group.pch) args$pch <- unlist(split(rep(pch, length.out=n), mf[-response]))

    if (!missing(subset)) {
        s <- eval(subset.expr, data, parent.frame())
        dosub <- function(x) { if (length(x) == n) x[s] else x }
        args <- lapply(args, dosub)
        mf <- mf[s,]
    }
    do.call("tplot", c(list(split(mf[[response]], mf[-response])), args))
}

Exemple d'utilisation:
Code:

source("RcodeTplot_Function.R")
set.seed(100)
age = rnorm(80,rep(c(26,36),c(70,10)),4)
sex = sample(c('Female','Male'),80,T)
group = paste('Group ', sample(1:4,40,prob=c(2,5,4,1),replace=T), sep='')
d = data.frame(age,sex,group)
tplot(age~group,data=d,show.n=T,type=c('db','db','db','d'),col=c(d$sex),dist=.2,jit=.05,  las=1,pch=19)
legend('topright',pch=19,col=1:2,legend=c('Female','Male'))



Dernière édition par joyeux_lapin13 le Jeu 10 Mai 2012 - 8:38, édité 1 fois
avatar
joyeux_lapin13

Nombre de messages : 1923
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par Nik le Lun 30 Avr 2012 - 9:44

Salut,

dans le même genre d'idée on peut utiliser les "violin plots" qui sont un mix entre un boxplot et un estimateur de densité ce qui permet de visualiser et synthétiser la distribution des valeurs de manière plus précises que les simples quartiles des box plots.

violin plot

un bon vieux RSiteSearch("violin plot")
donne pas mal de sources possible

nik

Nik

Nombre de messages : 1588
Date d'inscription : 23/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par joyeux_lapin13 le Ven 4 Mai 2012 - 14:23

Conception d'interfaces graphiques

Lien pratique pour créer sa propre interface avec R:
http://bioinf.wehi.edu.au/~wettenhall/RTclTkExamples/

Alors j'ai pas tout tester, ce que j'ai fait c'est un truc basique. Concernant l'insertion d'image qui ne marche pas dans ce premier lien, je vous propose celui-ci, un pdf qui peut permettre d'en savoir plus en prime et à noter que le problème de ce package c'est qu'il y a très peu de documentation... même sur le support R...: Conception d'interfaces graphiques de André Bouchier (facilement trouvable sur le net).


Dernière édition par joyeux_lapin13 le Jeu 10 Mai 2012 - 8:38, édité 2 fois
avatar
joyeux_lapin13

Nombre de messages : 1923
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par joyeux_lapin13 le Mer 9 Mai 2012 - 18:49

Recherche de BDD

Petite manip pratique pour avoir la vue sur les BDDs de R:

Code:
require(utils)
data()                      # list all available data sets
try(data(package = "rpart") )# list the data sets in the rpart package
data(USArrests, "VADeaths")  # load the data sets 'USArrests' and 'VADeaths'
help(USArrests)              # give information on data set 'USArrests'
avatar
joyeux_lapin13

Nombre de messages : 1923
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par joyeux_lapin13 le Dim 13 Mai 2012 - 9:51

Graphes en 3 dimensions "réel"

Salut, un petit package extrêmement pratique afin de pouvoir faire des graphes en 3 dimensions et surtout pouvoir bouger en temps réel la caméra: package rgl, contrairement à la fonction de base de R qui est, de mémoire, bien mal foutue.
avatar
joyeux_lapin13

Nombre de messages : 1923
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par joyeux_lapin13 le Mar 22 Mai 2012 - 8:27

Récupérer code source

Un petit lien pour comprendre comment on peut récupérer les codes sources de fonction autrement qu'en tapant le nom de la fonction sans parenthèse: http://ciam.inra.fr/r4ciam/node/87
avatar
joyeux_lapin13

Nombre de messages : 1923
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par Qualitative le Ven 28 Déc 2012 - 22:29

Pour débuter il y a le package R commander (regarder sur google). Ca permet de se familiariser avec le langage R tout en restant sur du "clic bouton" pour faire des stats (pas mal de choses prévues dans l'interface).
Vraiment à conseiller aux étudiants de 1ère année je trouve et à ceux qui ne veulent pas se prendre la tête avec du code.

Sinon dans les packages sympa il y a le package FactoMineR qui permet beaucoup de choses en analyse de données "à la française" (ACP, AFC, ACM, Classif', etc.).

Voilà j'espère que ça servira Wink

Kali

Qualitative

Nombre de messages : 25
Date d'inscription : 20/12/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

RWSTHDA, Une application R en ligne avec interface graphique

Message par kass le Lun 14 Jan 2013 - 0:14

RWSTHDA est Un logiciel d'analyses statistiques et graphiques disponible en ligne sans installation sur votre ordinateur.

Pour accéder à RWSTHDA cliquez ici

Par simple clique sur des boutons, vous allez pouvoir faire de l'analyse factorielle (ACP, ACM, AFC), de l'analyse de survie, des tests de corrélation, des tests statistiques (student, wilcoxon, Khi2, Fisher, anova, etc) et des graphiques (Boxplot, Graphe en barre, Graphe en bande, Cammembert, histogramme, courbe de densité, etc).



Dernière édition par kass le Lun 14 Jan 2013 - 0:17, édité 2 fois (Raison : Mise à jour d'un lien)

kass

Nombre de messages : 20
Date d'inscription : 07/06/2009

Voir le profil de l'utilisateur http://www.sthda.com

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par joyeux_lapin13 le Lun 14 Jan 2013 - 6:11

J'ai cru comprendre qu'un don était demandé pour le téléchargement des scripts (en lisant l'un de tes innombrables anciennes pubs que j'ai supprimées), qu'en est-il au final?
avatar
joyeux_lapin13

Nombre de messages : 1923
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par kass le Mar 15 Jan 2013 - 5:13

joyeux_lapin13 a écrit:J'ai cru comprendre qu'un don était demandé pour le téléchargement des scripts (en lisant l'un de tes innombrables anciennes pubs que j'ai supprimées), qu'en est-il au final?

C'est gratuit!! Il suffit juste de se connecter en tant que membre pour pouvoir utiliser l'application.

Je vous remercie.

K@ss

kass

Nombre de messages : 20
Date d'inscription : 07/06/2009

Voir le profil de l'utilisateur http://www.sthda.com

Revenir en haut Aller en bas

Re: Les bonnes idées R

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum