smp <- read.csv2(fichier)
: importe un fichier de données dans R
View(smp)
: affiche le contenu du dataFrame
dim(smp)
: donne les dimensions du tableau
names(smp) :
affiche la liste des variables
str(smp)
: aperçu du dataframe, avec les types de variables et les 10 premières valeurs
summary(smp)
: affiche les données statistiques de base : min, max, médiane et quartiles, nb de valeurs nulles
summary(smp$age)
: idem, mais uniquement pour la variable age
smp$age
: affiche l'ensemble des valeurs de la variable age
smp$age[c(1,2)]
: affiche les observations 1 et 2
smp$age[c(1 : 20)]
: affiche les observations 1 à 20
head(smp$age, n=10)
: affiche les 10 premières observations
min(smp$age, na.rm=TRUE)
: calcule la valeur minimale, en excluant les valeurs nulles
range(smp$age, na.rm=TRUE)
: renvoie le minimum et le maximum
unique(smp2$abus)
: retourne le nombre de valeurs différentes
length(smp2$abus)
: retourne la longueur de la variable
nrows(smp2$abus)
: nombre de lignes
table(smp2$abus)
: affiche le nombre d'occurrences de chaque valeur, sans les valeurs nulles
table(smp$n.enfant> 4)
: affiche le nombre de valeurs vraies et fausses pour l'assertion
table(smp2$abus,useNA = 'always')
: avec les valeurs nulles
sum(!is.na(smp2$abus))
: compte le nombre de valeurs non nulles
sum(complete.cases(smp2$abus))
: identique à la commande précédente
print ( describe (var, num.desc = c ( "mean", "median", "sd", "min", "max", "valid.n" ) ) $ Numeric )
: affiche les infos demandées de manière synthétique
tabSexe <- prop.table ( table ( satisf $ sexe.c ) )
: crée la variable tabSexe contenant les pourcentages de chacune des classes de la série considérée
table(cut (smp$age, breaks=c(10,20,30,40,50,100), include.lowest=TRUE))
: affiche les données regroupées par catégorie, sous la forme : > val <= , sauf pour la première catégorie : >= val <=
factor(smp2$abus, labels=c("non","oui"))
: affiche les valeurs factorisées, en remplaçant les 0 et les 1 par non et oui
smp$n.enfant.cat <-factor(smp$n.enfant)
: crée une nouvelle variable contenant les nombres d'occurrence par nombre d'enfants
levels(smp$n.enfant.cat)[6:13] <-"5+"
: crée une catégorie 5+ pour regrouper tous les niveaux 6 à 13
nlevels(smp$n.enfant.cat)
: affiche le nombre de niveaux pour la variable considérée
rm(abus)
: supprime une variable
save(smp,file="smp_v1.rda")
: sauvegarde la variable au format interneR
load ("smp_v1.rda")
: recharge lavariable smp précédemment sauvegardée
plot(serie)
: diagramme de points
plot(serie1, serie2)
: diagramme de points xy
plot(jitter(serie1), jitter(serie2))
: diagramme de points xy, avec décalage pour éviter les superpositions
boxplot(shop$score.relation~shop$sexe, ylab="score relationnel", xlab="sexe")
: comparaison dans un diagramme à moustaches de la relation en fonction du sexe
plotmeans
: diagramme temporel. Nécessite la librairie gplots(library(gplots)
)
install.packages('binom')
: charge le paquetage adéquat
library (binom)
: charge la librairie considérée
binom.confint(3,10, method='all')
: affiche l'intervalle de confiance pour 3 résultats dans une sélection aléatoire de 10, selon toutes les méthodes (exact
: à utiliser par défaut)
cor(smp$age,smp$n.enfant,use="complete.obs")
: calcule le coefficient de corrélation de Pierson (corrélation linéaire sur loi normale)
library(Epi)
twoby2(1-smp$ed.b,1-smp$dep.cons)
: calcule le risque relatif et le odd-ratio de deux variables binaires (1 - : indispensable pour transformer les 0 - risque avéré dans la fonction en 1, et inversement)
smp$ed.b <- ifelse(smp$ed > 2, 1, 0)
: test binaire, permettant de transformer toutes les valeurs de ed > 2 en valeur 1, les autres en 0, le tout stocké dans smp$ed.b
table (smp$ed.b,smp$ed,deparse.level=2,useNA = 'always')
: compare les valeurs de ed.b avec ed, pour afficher le nombre de valeurs se retrouvant ensemble
which(smp$prof == "agriculteur")
: affiche les enregistrements qui correspondent à la requête
smp$age[which(smp$prof == "agriculteur")]
: affiche l'age des agriculteurs
subset (smp, prof=="agriculteur", age)
: idem, en colonne
round(prop.table(tab),3)
: affiche les proportions de chacune des occurrences d'une variable, arrondis à la 3ème décimale
install.packages('knitr')
purl("rapport.Rmd")
: récupère les commandes R contenues dans le rapport
Définition des options par défaut
```{r setup, include=FALSE}
opts_knit$set(progress=FALSE, verbose=FALSE, width=90)
opts_chunk$set(message=FALSE, tidy=TRUE, hightlight = TRUE, fig.align="center")
```
barplot(prop.table(var)*100, ylab="proportion", col="blue", border=NA, ylim=c(0,40))
: affiche un diagramme en barres avec une échelle Y de 0 à 40
hist(smp$age, nclass=8, prob=TRUE, col="cornflowerblue", border="white", xlim=c(0,100))
lines(density(smp$age, no.rm=TRUE), lwd=2, col="red")
text(65, 0.025, poste("N =", sum(complete.cases(smp$age))),cex=1.2)
: affiche un histogramme des ages en 8 classes, en affichant la densité, et une ligne avec le nombre d'individus, et enfin la valeur N
tab <- table (smp$ed.b, smp$dep.cons, deparse.level=2)
: crée un tableau avec les deux variables considérées, en conservant le nom des variables (deparse.level = 2)
prop.table(tab, 1)
: donne la proportion de chaque croisement entre les deux séries de tab, par rapport au premier paramètre (valeur 1)
chisq.test(smp$ed.b, smp$dep.cons, correct=FALSE)
: lance le test de Chi-2
fisher.test(smp$ed.b, smp$dep.cons)
: Test exact de Fisher, dans le cas où le test de Chi-2 ne peut être utilisé (% trop faible ou trop fort, nb échantillons trop faible)
by (smp$age, smp$ed.b, sd, na.rm=TRUE)
: calcule l'écart-type (sd) de l'age par rapport à l'évitement du danger. Permet de comparer les écarts-types entre eux (approximation de la variance)
t.test(variable_à_étudier~variable_déterminant_les_sous_groupes, var.equal=TRUE)
: test t de Student (comparaison de moyennes)
t.test(QI, mu=100)
: Comparaison d'une moyenne à une référence
wilcox.test(variable_à_étudier~variable_déterminant_les_sous_groupes)
: Test de Mann-Whitney ou de Wilcoxon (comparaison de moyenne quand le test t de student n'est pas utilisable
cor.test(var1, var2)
: test de nullité de corrélation de Pearson
cor.test(var1, var2, method="spearman")
: Test de Spearman dans le cas d'absence de loi normale (comparaison rang à rang)
mcnemar.test(b.debut, b.fin)
: Test de comparaison de l'évolution de moyenne pour une même population, sur une donnée qualitative
t.test(x.debut, x.fin, paired=TRUE)
: comparaison de l'évolution d'une moyenne pour une même population, pour une donnée quantitative
qqnorm(smp$age); qqline(smp$age)
: les points doivent être alignés sur la ligne
plot(jitter(smp.c$age), jitter(smp.c$dur.interv, factor=4))
: crée un diagramme de points avec l'age en X, et la durée en Y, avec un facteur de dispersion de 4
abline(lm(smp.c$dur.interv~smp.c$age),lwd=2)
: crée les coordonnées de la ligne de régression (lm, valeur Y en premier), et trace la ligne dans le diagramme (lwd=2 : épaisseur de la ligne)
modl <- lm(dur.interv~age,data=smp.c)
: stocke le calcul de la ligne de régression dans la variable
summary(modl)
: affiche le contenu de la régression simple. La colonne Estimate
donne la valeur b, c (quantité à additionner à Y pour chaque "pas" considéré), et Pr(>|t|)
le t-factor (doit être inférieur à 5 % pour être considéré significatif)
mod2 <- lm(dur.interv~age+dep.cons+subst.cons+scz.cons,data=smp.c)
: analyse l'évolution de la durée de l'intervention avec l'age et les autres variables considérées
drop1(mod3,.~.,test="F")
: si une des variables est qualitative (profession par exemple), la commande permet d'afficher les informations globales pour chaque variable qualitative "explosée" lors de la commande lm ; on obtient ainsi les données globales d'effet de la profession sur la durée
.hist (resid(mod2), col="grey", main="Histogramme du bruit")
: affiche l'histogramme du bruit de la fonction de régression - test visuel de la "normalité" du bruit, et donc vérification de la condition d'utilisation de la fonction de régression.
tab <-table (smp.c$subst.cons, smp.c$abus)
barplot(tab, beside=TRUE, legend=c("abus=0", "abus=1"), xlab="Consommation substance", ylab="Effectifs")
: crée un diagramme en batons avec légende, en comparant la consommation de substances et le facteur abus
res <- chisq.test(tab) :
stocke les variables du test de chi2 dans res
res$observed
: affiche les valeurs obtenues dans le test
res$expected
: calcule la valeur probable en tenant compte des tests statistiques
plot(density(smp.c$age[smp.c$subst.cons==1], na.rm=TRUE), lwd=2, col="red",xlim=c(19,83))
: Crée un diagramme avec une ligne permettant de visualiser l'âge des personnes ayant consommé des substances, colorée en rouge
lines(density(smp.c$age[smp.c$subst.cons==0], na.rm=TRUE), lwd=2, col="blue")
: rajoute sur le schéma la ligne correspondant à ceux n'ayant pas consommé de substances
round(with(smp.c, tapply(age,subst.cons, mean, na.rm=TRUE)),1)
: affiche la moyenne de l'age, avec ou sans consommation de substances (tapply). with permet de ne pas indiquer le nom du tableau pour chaque variable, et round arrondit les résultats
smp.c$subst.cons <- factor (smp.c$subst.cons, levels=c(0,1), labels=c("non", "oui"))
: renomme les valeurs 0 et 1 en non et oui dans la variable, pour faciliter la lecture
t.test(smp.c$age[smp.c$subst.cons == 'non'], smp.c$age[smp.c$subst.cons == 'oui'])
: test de student
aggregate (age ~ subst.cons, data=smp.c, mean)
: affiche la moyenne pour chacune des catégories
aggregate (age ~ subst.cons, data=smp.c, var)
: idem, mais pour la variance
cor (smp.c$n.enfant, smp.c$age, use="pairwise")
: calcul du coefficient de corrélation avec des valeurs nulles
cor (smp.c$n.enfant, smp.c$age, use="pairwise", method="spearman")
: idem, mais test de Spearman
plot(jitter(n.enfant) ~ jitter(age), data=smp.c, pch=19, col=rgb(0,0,0.7,0.5))
: diagramme de points avec taille du point (pch) et couleur, associée en RGB avec le facteur de transparence (ici 0.5)
mod1 <- glm (suicide.hr~abus, data=smp, family="binomial")
: general binary model - régression logistique
exp(mod1$coefficients)
: odd-ratio du (ou des) coefficient(s). Si valeur 2, le risque lié à l'abus est multiplié par 2
drop1(mod1,.~.,test="Chisq")
: effet global d'une variable catégorielle ("explosée en k-1 variables, comme dans la fonction lm. Attention : le test n'est pas F comme avec lm, mais Chisq.
plot(survfit(Surv(alc$t,alc$SEVRE)~1), main="Courbe de maintien dans l'abstinence")
: calcule la survenance de l'événement sur une variable censurée (t)
plot(survfit(Surv(alc$t,alc$SEVRE)~alc$SEXE),col=c('black','red'), main="Courbe de maintien dans l'abstinence")
: affiche les courbes pour deux groupes de sujets (sexe).
survfit(Surv(alc$t, alc$SEVRE)~1)
: calcule les indicateurs, dont la médiane de survie
survdiff(Surv(alc$t,alc$SEVRE)~alc$SEVRE, data=alc)
: calcule les différences entre deux sous-groupes
coxph(Surv(alc$t, alc$SEVRE)~alc$AGE, data=alc)
: vérifie l'association de la survie à une variable quantitative (modèle de Cox)
coxph(Surv(alc$t, alc$SEVRE)~alc$AGE+alc$SEXE+alc$EDVNEG, data=alc)
: idem, mais en combinant plusieurs causes explicatives (vérifier la valeur du p-value)
par(mfrow=c(2,2))
: fragmente la fenêtre graphique de R pour pouvoir représenter 2x2 graphiques
plot(cox.zph(mod2))
: affiche les graphiques pour chacune des variables testées (conditions de vérification du modèle de Cox - les points doivent être alignés sur le plan horizontal
head(subset(smp, prof == 'sans emploi' | prof == 'prof.interm?diaire'|prof == 'cadre', c(age, n.enfant, prof)))
: affiche le sous-ensemble des données pour les professions sélectionnées, avec les variables age, n.enfant, et prof
smpb <- subset(smp, prof == 'sans emploi' | prof == 'prof.intermediaire'|prof == 'cadre', c(age, n.enfant, prof))
: idem, mais stockage dans une variable
smpb$prof <- factor(smpb$prof)
: suppression des valeurs non renseignées (refactorisation de prof). Par défaut, prof contient également les professions non sélectionnées
aggregate(n.enfant ~ prof, data=smpb, mean)
: calcule la moyenne du nbre d'enfants par profession
boxplot(n.enfant ~ prof, data=smpb)
: affiche un diagramme "boite à moustache" pour les données considérées
m <- lm(n.enfant ~ prof, data=smp, subset=prof %in% c('sans emploi', 'prof.interm?diaire', 'cadre')
: calcule la régression linéaire correspondante, ent stockant le résultat dans la variable m
drop1(m, test="F")
: affiche les différents coefficients correspondants
anova(m)
: affiche l'analyse de variance
m <-lm(n.enfant ~ age, data=smp)
: calcule la corrélation linéaire correspondante
coef(m)[2]
ou coef(m)['age']
: affiche le coefficient pour l'age
confint(m)
: affiche l'intervalle de confiance à 95 %
plot(n.enfant ~ age, data=smp)
abline(m)
: affiche les points et la droite de régression dans le même schéma
head(fitted(m))
: affiche les valeurs exactes de la régression
head(resid(m))
: affiche les valeurs résiduelles
smp$n.enfant.bin <- factor(ifelse(smp$n.enfant > 2, 1, 0))
: crée une variable binomiale sur le nbre d'enfants
m <- glm(n.enfant.bin ~ age, data=smp, family=binomial("logit"))
: calcule la régression logistique à partir d'une variable binomiale
head(predict(m))
: calcule les prédictions pour la régression logistique
head(predict(m, type="response"))
: calcule la probabilité pour la régression logistique
exp(5*coef(m)[2])
: calcule le coefficient à 5 ans