On Github ElCep / maps6-SYSBIO
Par Etienne DELAY / laboratoire GEOLAB UMR 6042 CNRSSur twitter : @ElCepModélisation des Phénomènes Spatiaux / MAPS-618 décembre 2013 / MSH-Paris
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).Un travail de groupe qui commence lors de MAPS-5 à Oléron en juin 2013
Nous voulions tous travailler sur une question autour des paysages, en lien avec l'agriculture
P. Coquillard et D.R.C. Hill 1997
“un modèle a pour fonction d'être un instrument de facilitation d'une médiation”M.S. Morgan et M. Morrison 1999
R. Thom 2009
Les interactions entre les cellules seront basées sur une fonction d'utilité
U=r∗alpha+s∗bêtaoù
Les mêmes valeurs sont utilisées de manière croisée
Nous avons voulu donner une suite à ce travail, mais l'opposition bio VS OGM n'était pas forcément utilisable. Nous avons donc choisi de nous intéresser à une réalité moins tranchée :
Des données en openData pour 2010
Le script R est en annexe
La gamme de valeurs pour l'initialisation du modèle sera donc entre 91 et 100
→600 000 simulations
Tout l'espace des paramètres
La partie supérieure
Le nombre d'agriculteurs(y) en fonction d'alpha (x) pour différentes valeurs de seuil
Et si on associe les résultats à la carte ? Juste pour voir !
entre 0, 10 et 20% des revenus
entre 0, 10 et 20% des revenus
Si les aides ↑, pas de surpriseEt si on associe les résultats à la carte ? Juste pour voir !
Si l'objectif est de conserver une coexistence des pratiques
Attribuer une valeur de α par département pour explorer dans le temps les dynamiques spatiales
A l'heure du bilan, maps5 a été :
#script pour l'article MAPS5 sur l'agriculture biologique #l'objectif est de pouvoir proposer une carte des départements FR avec des données de la bio ##les données ont été téléchargées sur data.gouv.fr #les données du RGA http://www.data.gouv.fr/DataSet/551794 #les surfaces en AB http://www.data.gouv.fr/DataSet/30378864 #le nombre de producteurs http://www.data.gouv.fr/DataSet/30378896 #auteur : E.DELAY (GEOLAB université de Limoges) rm(list=ls()) setwd("~/git/publications/maps5/data/data_bio/") #lecture des données chargées depuis data.gouv.fr data_agri_general<-read.csv("Donnees_principales__canton_departements_.csv", head=TRUE, sep=";",quote = '"') data_exp_bio<-read.csv("departements_Bio.csv", head=TRUE, sep=";",quote = '"') data_surf_bio<-read.csv("surface_bio_departements.csv", head=TRUE, sep=";") #on ne peut travailler que sur 2010, seule année en commun, donc il faut découper les données #data general sur l'agriculture data_agri_ge2010<-subset(data_agri_general,select=c(Libellé.du.département,X2010, X2010.2)) colnames(data_agri_ge2010)<-c("departement","nb.exploit","surf") data_agri_ge2010$departement<-as.character(data_agri_ge2010$departement) data_surf_agri2010<-as.data.frame(rowsum(data_agri_ge2010[,3],group=data_agri_ge2010$departement)) #data sur le nombre d'exploitants en Bio data_exp_bio2010<-subset(data_exp_bio, Annee==2010,select=c(Annee,id_departement,Departement,Producteurs)) #data sur les surfaces en bio data_surf_bio2010<-subset(data_surf_bio, Annee==2010) for(i in c(6:9)){ data_surf_bio2010[,i]<-as.numeric(data_surf_bio2010[,i]) } data_surf_bio2010$Surf.tot<-data_surf_bio2010[,6] + data_surf_bio2010[,7] + data_surf_bio2010[,8] + data_surf_bio2010[,9] data_surf_bio2010D<-as.data.frame(as.table(rowsum(data_surf_bio2010[,10],group=data_surf_bio2010$Departement))) data_surf_bio2010D$Var1<-as.character(data_surf_bio2010D$Var1) data_surf_bio2010D$Freq<-as.numeric(data_surf_bio2010D$Freq) table.agri<-NULL for(i in 1 : length(data_surf_bio2010D[,1])){ #98 valeurs for(j in 1 : length(data_agri_ge2010[,1])) { #100 valeurs if(toupper(data_agri_ge2010$departement[j])==data_surf_bio2010D$Var1[i]){ tps<-as.data.frame(c(data_surf_bio2010D[i,], data_agri_ge2010[j,])) table.agri<-rbind(table.agri, tps) } } } #reconfigurer le data.frame avec seulement les colonnes à conserver dans l'ordre table.agri<-table.agri[,c("departement", "nb.exploit", "Freq","surf")] colnames(table.agri)<-c("departement", "nb.exploit", "surf.bio","surf.tot") #calcul du pct de terre en Bio table.agri$pct.bio<- (table.agri$surf.bio * 100) / table.agri$surf.tot boxplot(table.agri$pct.bio, outline = FALSE) summary(table.agri$pct.bio) ##ICI on se retrouve avec des valeurs aberrantes pour certains départements... donc ##il faut les supprimer for (i in 1 : length(table.agri[,1])){ if (table.agri$pct.bio[i]> 15) { table.agri$pct.bio[i]<-NA } } ## la partie qui s'intéresse au nombre de fermes bio par département for (i in 1 : length(table.agri[,1])){ for (j in 1 : length(data_exp_bio2010[,1])){ if (toupper(table.agri$departement[i])==data_exp_bio2010$Departement[j]){ table.agri$agri.bio[i]<-data_exp_bio2010$Producteurs[j] } } } #reconfigurer le data.frame avec seulement les colonnes à conserver dans l'ordre table.agri<-table.agri[,c("departement", "surf.bio","surf.tot","pct.bio","agri.bio","nb.exploit")] table.agri$pct.agri.bio<- (table.agri$agri.bio * 100) / table.agri$nb.exploit summary(table.agri$pct.agri.bio) #le dernier decile est autour de 10% boxplot(table.agri$pct.agri.bio, outline = FALSE) #il faut là encore supprimer les valeurs abusives for (i in 1 : length(table.agri[,1])){ if (table.agri$pct.agri.bio[i]> 10) { table.agri$pct.agri.bio[i]<-NA } } ##Maintenant on veut faire une belle carte avec les départements français! #chargement des librairies library("rgdal") library("maptools") library("ggplot2") library("plyr") library("grid")##librairie pour arranger les graphes les uns à coté des autres avec ggplot #chargement du shapeFile dep_shp<-readOGR(dsn="/home/delaye/git/publications/maps5/data/shp_dep/", layer="departement_geofla") dep_shp@data$NOM_DEPT<-as.character(dep_shp@data$NOM_DEPT) ##A la sortie de la boucle j'ai les pct de bio dans le shp for (i in 1 : length(table.agri[,1])){ for (j in 1 : length(dep_shp@data$NOM_DEPT)){ if (toupper(table.agri$departement[i])==dep_shp@data$NOM_DEPT[j]){ dep_shp@data$pct.bio[j]<-table.agri$pct.bio[i] dep_shp@data$pct.agri.bio[j]<-table.agri$pct.agri.bio[i] } } } ##let's go for ggplot2 dep_shp@data$id<-rownames(dep_shp@data) dep_shp.point<-fortify(dep_shp,region="id") dep_shp.df<-join(dep_shp.point, dep_shp@data, by="id") write.csv(dep_shp.df, "dep_shp_df.csv") p<-ggplot()+ geom_polygon(data=dep_shp.df, aes(x=long,y=lat,group=group,fill=pct.bio))+ theme_bw()+ coord_equal() q<-ggplot()+ geom_polygon(data=dep_shp.df, aes(x=long,y=lat,group=group,fill=pct.agri.bio))+ theme_bw()+ coord_equal() vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y) grid.newpage() pushViewport(viewport(layout = grid.layout(1, 2))) print(p, vp = vplayout(1, 1)) print(q, vp = vplayout(1, 2)) # q # q