Un début ?

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Un début ?

Messagepar Luc Giraud » 20 Fév 2017, 10:53

Bonjour à toutes et à tous,

Je débute ...
Je souhaiterais représenter une série statistique continue donnée dans la capture jointe
Image
J'ai saisi
#Série statistique continue ( Exemple du cours )
temps<-c(1,2,3,4,5,6,7)
effectifs<-c(170,309,432,221,103,41,24)
coul=rainbow(7)
barplot(temps,effectifs, col=coul, main="Répartition des temps passés par jour devant le téléviseur" , xlab="Temps en heures", ylab="effectifs")
Ca ne me convient pas, il faudrait que tous les rectangles aient la même base( toutes les classes ont pour amplitude 1)...
Par ailleurs je cherche la fonction permettant de tracer l'histogramme des effectifs cumulés croissants, puis le polygone des effectifs cumulés croissants.

Merci d'avance

Luc

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Un début ?

Messagepar Pierre-Yves Berrard » 20 Fév 2017, 12:09

Luc Giraud a écrit :barplot(temps,effectifs, col=coul, main="Répartition des temps passés par jour devant le téléviseur" , xlab="Temps en heures", ylab="effectifs")
Ca ne me convient pas, il faudrait que tous les rectangles aient la même base( toutes les classes ont pour amplitude 1).

Bonjour,
Si vous regardez l'aide de la fonction barplot, le premier argument est height et le deuxième width. Je vous laisse chercher quel argument est à utiliser pour le libellé associé à chaque barre.
PY

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 20 Fév 2017, 13:07

Je reviens vers vous :
J'ai testé ce #Série statistique continue ( Exemple du cours )
temps<-c(1,2,3,4,5,6,7)
effectifs<-c(170,309,432,221,103,41,24)
N=sum(effectifs)
freq=effectifs/N

coul=rainbow(7)
barplot( effectifs,temps,lwd = 1, width = 1,col=coul, main="Répartition des temps passés par jour devant le téléviseur" , xlab="Temps en heures", ylab="effectifs")


Hélas, je souhaiterais l'histogramme et non des barres de même largeur ...
Je veux bien un indice de plus .

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 20 Fév 2017, 13:13

J'ai trouvé ceci :
#Série statistique continue ( Exemple du cours )
temps<-c(0.5,1.5,2.5,3.5,4.5,5.5,6.5)
effectifs<-c(170,309,432,221,103,41,24)

coul=rainbow(7)
barplot( effectifs,temps,space=NULL,lwd = 1, width = 1,col=coul, main="Répartition des temps passés par jour devant le téléviseur" , xlab="Temps en heures", ylab="effectifs")
On peut faire mieux ?

Merci d'avance

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Un début ?

Messagepar Pierre-Yves Berrard » 20 Fév 2017, 13:32

  • Pour faire ressembler à un histogramme votre diagramme en bâton, vous pouvez mettre

    Code : Tout sélectionner

    space = 0

  • Sinon, il y a la fonction hist, mais elle s'applique à des micro-données (pas des données tabulées).
    On peut toutefois reconstituer (à peu près) les données avec rep() et appliquer la fonction.

    Code : Tout sélectionner

    hist(
      rep(temps, effectifs),
      breaks = 0:7,
      freq = TRUE # (FALSE pour pourcentages)
    )
PY

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 20 Fév 2017, 14:05

Un grand merci !
Pour l'histogramme des effectifs cumulés croissants :

Code : Tout sélectionner

temps<-c(0.5,1.5,2.5,3.5,4.5,5.5,6.5)
effectifs<-c(170,309,432,221,103,41,24)
N=sum(effectifs)
freq=effectifs/N
effc=cumsum(effectifs)
 fc=cumsum(freq)
 hist(
   rep(temps, effc),
   breaks = 0:7,col=coul, main="Histogramme des effectifs cumulés croissants",, xlab="Temps en heures", ylab="effectifs cumulés")
   freq = TRUE # (FALSE pour pourcentages)
 )


Il ne me reste plus que le polygone des effectifs cumulés croissants ..

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Un début ?

Messagepar Pierre-Yves Berrard » 20 Fév 2017, 14:24

Code : Tout sélectionner

lines(
  x = temps,
  y = effc,
  type = "o"
)

Attention, il faut tracer l'histogramme avant d'exécuter ce code.
PY

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 20 Fév 2017, 14:39

Merci !
C'est juste parfait ...

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 20 Fév 2017, 16:58

Sans abuser, si les classes n'ont pas la même amplitude ...
J'ai essayé ceci :
Exercice
Image

Code : Tout sélectionner

# Exercice
 

salaires=c(1100,1350,1750,2500,6500)               
effectifs=c(326,112,35,8,3)
coul=rainbow(5)
hist(
  rep(salaires, effectifs),
  breaks = c(1000:1200, 1200:1500, 1500:2000, 2000:3000, 3000:10000),col=coul, main="Histogramme des salaires", xlab="Salaire en euros", ylab="effectifs ")
freq = TRUE # (FALSE pour pourcentages))

Mais je débouche sur une erreur ...

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Un début ?

Messagepar Pierre-Yves Berrard » 20 Fév 2017, 19:35

Une erreur de syntaxe pour breaks (il faut donner un vecteur contenant les bornes) et une parenthèse refermée trop tôt après ylab.

Code : Tout sélectionner

hist(
  rep(salaires, effectifs),
  breaks = c(1000, 1200, 1500, 2000, 3000, 10000),
  freq = FALSE,
  col = coul,
  main = "Histogramme des salaires",
  xlab = "Salaire en euros",
  ylab = "effectifs"
)

Avec des classes de tailles différentes, l'aide de R nous indique qu'il faut utiliser obligatoirement freq=FALSE, sinon les aires ne sont pas correctes.
PY

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 21 Fév 2017, 13:31

Merci !
Je continue ...
Je souhaite faire le bilan du Bac Blanc dans mon lycée.
Les notes sont stockées dans le fichier joint:
http://casedesmaths.net/images/1.TS/Annee-2016-2017/Bac-Blanc/Notes-BBlanc-TS-21-fev.csv
Comment trier simplement les données de la colonnes Moyenne Generale
pour obtenir par exemple un camenbert donnant les Refusés, les élèves passant l'Oral et les Reçus ?

Ce que j'ai fait :

Code : Tout sélectionner

don=Notes_BBlanc_TS_21_fev
boxplot(don$`Moyenne Generale`)
summary(don$`Moyenne Generale`)
h=hist(don$`Moyenne Generale`,col=250,probability=TRUE)
h
coul=rainbow(7)
boxplot(don$`Moyenne Generale`~don$Classe,col=coul, main ="Bac Blanc TS Maths Janvier 2017")
notes=c(4,9,15)

effectifs=c(37,48,142)

coul=rainbow(3)
hist(
  rep(notes, effectifs),
  breaks = c(0,8,10,20),
  freq = FALSE,
  col = coul,
  main = "Histogramme classes d'amplitude distincte",
  xlab = "x",
  ylab = "effectifs"
)

pie(notes,effectifs,col=coul,main="Bac Blanc TS 2017")



Je suis preneur d'améliorations ...
Merci d'avance

Luc

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Un début ?

Messagepar Pierre-Yves Berrard » 21 Fév 2017, 14:42

Quelques fonctions utiles pour cet exemple :

  1. Importer les données : ?read.delim2
  2. Créer une variable indiquant le statut (échec, oral, admis) : au choix ?cut, ?findInterval, ?ifelse ...
  3. Compter le nombre d'échecs, d'oraux, d'admis : ?table
  4. Trier par effectifs croissants ou décroissants : ?sort
Bonne lecture. ;-)
PY

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 21 Fév 2017, 16:24

Merci

Désolé, je n'arrive pas à m'en sortir ...
Déjà à la 1ere étape avec l'instruction read.delim2

Une piste serait la bienvenue !

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Un début ?

Messagepar Pierre-Yves Berrard » 21 Fév 2017, 16:43

Code : Tout sélectionner

don <- read.delim2("http://casedesmaths.net/images/1.TS/Annee-2016-2017/Bac-Blanc/Notes-BBlanc-TS-21-fev.csv")
PY

Luc Giraud
Messages : 15
Enregistré le : 20 Fév 2017, 09:46

Re: Un début ?

Messagepar Luc Giraud » 21 Fév 2017, 17:40

Merci . J'avance ...
Voilà où j'en suis :

Code : Tout sélectionner


Notes_finales=c(6,17.91,14.14,16.93,6.26,7.78,9.87,10.35,18.63,11.15,8.02,12.08,10.36,13.96,17.24,10.89,9.64,12.58,17.48,10.44,10.08,14.19,12.98,8.13,15,13.61,10.04,11.76,8.5,13.98,16.16,8.84,11.14,13.79,10.71,11.23,8.43,9.64,10.7,11.43,8.59,9.54,9.04,10.29,14.48,9.63,7.86,10.66,14.27,9.57,10.11,6.18,7.27,6.13,17.02,12.83,8.68,8.58,15.32,10.99,7.62,17.62,10.26,9.82,10.76,11.07,10.97,12.86,10.59,12.76,10.8,13.63,11.98,7.83,13.76,5.78,9.55,7.37,12.58,10.45,9.67,11.81,9.15,10.77,16.23,12.57,9.92,11.38,11.19,9.28,13.66,11.52,8.92,15.45,9.89,7.55,16.92,14.77,14.39,11.56,16,8.24,13.85,12.5,15.2,5.98,12.28,11.43,13.61,14.44,10.84,7.72,12.81,10.63,11.6,12.52,11.32,13,15.36,7.84,7.28,7.52,9.76,5.8,11.48,6.44,16.11,10.84,6.16,11.3,10.32,10.36,4.36,9.13,10.3,16.67,14.4,9,10.71,9.96,7.4,14.96,4.78,13.52,15.38,12,15.73,8.33,7.1,15.71,7.64,6.89,14.67,9.37,15,18.77,13.46,14.23,11.73,10.83,7.57,13.04,5.45,9.68,17.33,10.33,7.66,5.45,13.98,9.71,16.36,14.36,17.14,10.48,11.64,13.36,12.09,10.8,16.27,10.78,9.2,10.07,9.7,9.57,7.2,8.48,14.64,11.75,18.47,14.73,11.05,7,13.35,11.15,11.6,8.75,10.65,8.05,10.5,9.7,12.45,15.5,9.86,10.35,10.09,10.5,11.25,9.35,13.82,9.85,8.15,9.22,6.36,9.2,10.09,15.46,17.3,7.25,8.39,13.14,16.55,6.8,17.63,9.68,8.14)
summary(Notes_finales)
statut=c("Echec","Oral","Admis")

E=0
O=0
R=0
N=length(Notes_finales)

for(n in 1:N) {
ifelse(Notes_finales[n]<8,E<-E+1,E<-E)
ifelse(Notes_finales[n]>=10,R<-R+1,R<-R)
}
O=N-(E+R)
fre=c(E,O,R)/N
 
 pie(notes,fre,col=coul,main="Bac Blanc TS 2017")

 don <- read.delim2("http://casedesmaths.net/images/1.TS/Annee-2016-2017/Bac-Blanc/Notes-BBlanc-TS-21-fev.csv",header=TRUE, colnames("Moyenne Generale"))



Je n'arrive pas à attraper les données de 2eme colonne du tableau avec read.delim2(file, ....)
Et le camenbert serait perfectible ...


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité