Commit 089e687d authored by Laurence Viry's avatar Laurence Viry

correct ozone

parent aa6edcb4
Pipeline #11227 passed with stages
in 1 minute and 20 seconds
This diff is collapsed.
......@@ -4,9 +4,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"\n",
"## Etude de la polution de l'air en fonction de données climatiques\n",
"\n",
"(*Cet exemple est tiré du livre \"Statistiques avec R\" de Pierre-André Cornillon (Presse Universitaire de Rennes), il peut être intéressant pour ceux qui sont intéressés par l'interprétation des résultats de le consulter*).\n",
......@@ -27,17 +24,15 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"metadata": {},
"outputs": [],
"source": [
"# Lecture des données\n",
"setwd('/home/viryl/notebooks/CED-IntroR/TP/data')\n",
"...\n",
"ozone <- read.csv(\"ozone.txt\",sep=\"\",row.names=1,header=TRUE)\n",
"names(ozone)\n",
"# Extraction des données utiles\n",
"ozone1 <- \n",
"ozone1 <- ozone[,c(\"maxO3\",\"T12\")]\n",
"names(ozone1)"
]
},
......@@ -51,13 +46,11 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"metadata": {},
"outputs": [],
"source": [
"# Statistiques descriptives des données de l'étude\n",
"..."
"summary(ozone1)"
]
},
{
......@@ -78,7 +71,7 @@
"outputs": [],
"source": [
"# Nuage de point (\"maxO3\",\"T12\")\n",
"..."
"plot(maxO3~T12,data=ozone1,pch=15,cex=0.5)"
]
},
{
......@@ -113,11 +106,11 @@
},
"outputs": [],
"source": [
"reg.simple <- \n",
"reg.simple <- lm(maxO3~T12,data=ozone1)\n",
"names(reg.simple)\n",
"\n",
"reg.simple$coefficients\n",
"class(reg.simple)\n",
"..."
"summary(reg.simple)"
]
},
{
......@@ -139,7 +132,8 @@
"outputs": [],
"source": [
"# Utilisation de la fonction abline\n",
"..."
"plot(maxO3~T12,data=ozone1,pch=15,cex=0.5)\n",
"abline(reg.simple,col=2)"
]
},
{
......@@ -151,9 +145,9 @@
"outputs": [],
"source": [
"plot(maxO3~T12,data=ozone1,pch=15,cex=0.5)\n",
"grillex <- ...\n",
"grilley <- ...\n",
"..."
"grillex <- seq(min(ozone1[,\"T12\"]),max(ozone1[,\"T12\"]),length=100)\n",
"grilley <- reg.simple$coef[1]+ reg.simple$coef[2]*grillex\n",
"lines(grillex,grilley,col=2)"
]
},
{
......@@ -185,7 +179,9 @@
"outputs": [],
"source": [
"xnew <- 19\n",
"..."
"xnew <- as.data.frame(xnew)\n",
"colnames(xnew) <- \"T12\"\n",
"predict(reg.simple,xnew, interval=\"pred\")"
]
},
{
......@@ -219,7 +215,7 @@
"source": [
"### Regression multiple\n",
"\n",
"La régression linéaire multiple permet d'expliquer et/ou prédire une variable quantitative par p variables quantitatives, c'est une généralisation du modèle de régression simple.\n",
"La régression linéaire multiple permet d'expliquer et/ou prédire une variable quantitative par p variables qunatitatives, c'est une généralisation du modèle de régression simple.\n",
"\n",
"On revient à notre problème et on veut analyser la relation entre le maximum journalier de la concentration en ozone et la température à différentes heures de la journée, la nébulosité à différentes heures de la journée, la projection du vent sur l'axe Est-Ouest à différentes heures de la journée et la concentration maximale de la veille du jour considéré.\n",
"\n",
......@@ -239,7 +235,7 @@
"# Lecture des données\n",
"names(ozone)\n",
"# Extraction des données utiles\n",
"ozone2 <- ...\n",
"ozone2 <- ozone[,c('maxO3','T9','T12','T15','Ne9','Ne12','Ne15','Vx9','Vx12','Vx15','maxO3v')]\n",
"names(ozone2)\n",
"summary(ozone2)"
]
......@@ -252,24 +248,8 @@
"\n",
"Pour valider les données, on effectue une analyse univariée des variables(statistiques descriptives, histogramme,...)\n",
"\n",
"Le nombre de variables n'étant pas très élevé, on peut représenter les variables deux par deux sur un même graphique (fonction **pairs**). On pourrait également explorer les données avec une ACP (package FactoMineR, FactoShiny)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# plot \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Le nombre de variables n'étant pas très élevé, on peut représenter les variables deux par deux sur un même graphique (fonction **pairs**). On pourrait également explorer les données avec une ACP (package FactoMineR, FactoShiny).\n",
"\n",
"#### Estimer les paramètres\n",
"\n",
"Pour estimer les paramètres, il faut écrire le modèle. On utilise la fonction **lm** avec une formule décrivant le modèle.<br\\>\n",
......@@ -286,7 +266,7 @@
"outputs": [],
"source": [
"# regression multiple\n",
"reg.mul <-"
"reg.mul <- lm(maxO3 ~ T9+ T12+T15+Ne9+Ne12+Ne15+Vx9+Vx12+Vx15+maxO3v, data=ozone2)"
]
},
{
......@@ -310,7 +290,7 @@
"\n",
"Il est possible avec l'analyse de **reg.mul** de faire un choix des variables à la main. On enlève la moins significative puis on recalcule les estimations et ainsi de suite.\n",
"\n",
"Il existe aussi un package R qui traite du choix des variables: le package **leaps** et la fonction **regsubsets**"
"Il existe aussi un package R qui traite du choix des variables: le package **leaps**"
]
},
{
......@@ -323,7 +303,7 @@
"source": [
"library(\"leaps\", lib.loc=\"~/R/lib\")\n",
"library(\"lattice\")\n",
"choix <- \n",
"choix <- regsubsets(maxO3 ~ ., data=ozone2, nbest=1,nvmax=11)\n",
"plot(choix)"
]
},
......@@ -343,7 +323,7 @@
"outputs": [],
"source": [
"# regression après selection des variables\n",
"reg.fin <- \n",
"reg.fin <- lm(maxO3~T12+Ne9+Vx9+maxO3v,data=ozone2)\n",
"summary(reg.fin)"
]
},
......@@ -351,9 +331,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Analyser les résidus: \n",
"\n",
"Même traitement qu'avec la régression simple.\n",
"#### Analyser les résidus: même traitement qu'avec la régression simple\n",
"\n",
"#### Prévoir une nouvelle valeur: même traitement qu'avec la régression simple"
]
......@@ -369,8 +347,8 @@
"# Prediction + interval de confiance\n",
"xnew <- matrix(c(19,3,30,6.5),nrow=1)\n",
"colnames(xnew) <- c(\"T12\",\"Ne9\",\"Vx9\",\"maxO3v\")\n",
"xnew <- \n",
"ynew <- \n",
"xnew <- as.data.frame(xnew)\n",
"ynew <- predict(reg.fin,xnew,interval=\"pred\")\n",
"class(ynew)\n",
"dimnames(ynew)"
]
......@@ -401,7 +379,7 @@
"# Lecture des données\n",
"names(ozone)\n",
"# Extraction des données utiles\n",
"ozone3 <- ...\n",
"ozone3 <- ozone[,c('maxO3','vent')]\n",
"names(ozone3)\n",
"summary(ozone3)"
]
......@@ -426,7 +404,7 @@
"outputs": [],
"source": [
"# boxplot par modalité\n",
"..."
"plot(maxO3 ~vent, data=ozone3,pch=15,cex=0.5)"
]
},
{
......@@ -447,7 +425,7 @@
"outputs": [],
"source": [
"# Estimation des parametres\n",
"reg.aov1 <- "
"reg.aov1 <- lm(maxO3 ~vent,data=ozone3)"
]
},
{
......@@ -458,7 +436,8 @@
},
"outputs": [],
"source": [
"# Tableau d'analyse de variance\n"
"# Tableau d'analyse de variance\n",
"anova(reg.aov1)"
]
},
{
......@@ -535,7 +514,7 @@
"# Lecture des données\n",
"names(ozone)\n",
"# Extraction des données utiles\n",
"ozone4 <- ...\n",
"ozone4 <- ozone[,c('maxO3','vent','pluie')]\n",
"names(ozone4)\n",
"summary(ozone4)"
]
......@@ -560,7 +539,7 @@
"outputs": [],
"source": [
"# Representation des donnees\n",
"...\n",
"boxplot(maxO3~vent*pluie,data=ozone4,cex=0.5)\n",
"# Interaction\n",
"par(mfrow=c(1,2))\n",
"with(ozone,interaction.plot(vent,pluie,maxO3))\n",
......@@ -583,7 +562,7 @@
"outputs": [],
"source": [
"# Choisir le modèle\n",
"mod.int <- \n",
"mod.int <- lm(maxO3~vent*pluie,data=ozone4)\n",
"anova(mod.int)"
]
},
......@@ -596,7 +575,7 @@
"outputs": [],
"source": [
"# Choisir le modèle\n",
"mod.ssint <- \n",
"mod.ssint <- lm(maxO3~vent+pluie,data=ozone4)\n",
"anova(mod.ssint)"
]
},
......@@ -617,7 +596,7 @@
},
"outputs": [],
"source": [
"..."
"summary(mod.ssint)"
]
},
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment