Aide pour un script fait sur R svp

Fermé
arimadiver Messages postés 1 Date d'inscription lundi 10 février 2014 Statut Membre Dernière intervention 10 février 2014 - 10 févr. 2014 à 16:07
Bonjour à tous,
J'ai fait un script sur R (que vous allez voir ci-dessous) de corrélation entre deux séries de données mais à la fin de ma boucle en fin de script j'ai ce message d'erreur que je ne comprends pas:
Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf


Merci d'avance pour votre aide.


Voici mon script:

monthyear<-"month"; # "month" ou "year" On considère les variables au niveau du mois ou de l'année
sectmoy<-FALSE; # TRUE ou FALSE selon que l'on fait ou pas de moyenne par secteur
variab<-"kpar"; #Spécification de la varibale environnementale à considérer

choixsat<-"modis";# Choix du satellite
decal<- 0; # En mois, décalage appliqué à la variable environnementale avant d'évaluer le lien avec le recrutement Mettre 0 si pas de décalage


####Chemin d'accès à ma série des résidus
R<-read.csv2("N:/AGENTS/Loic/PENECLIM/residus.csv",header=TRUE,row.names=1);

######convertir une colonne que j'ai attribué à une autre colonne (pour qu'il détecte que c'est des chiffres et non des caractères)
R$residus<-as.numeric(as.character(R$residus));

####comme j'ai une colonne en date que je dois transformer en format date (car elle est en facteur )
R$Date_SSB<- as.Date(R$Date_SSB,format="%d/%m/%Y")
####Sélection des dates
dat1<-as.Date("01/07/1989",format="%d/%m/%Y");#date de début
dat2<-as.Date("01/04/2012",format="%d/%m/%Y");#date de fin



###Chemins d'accès à ma série de variables environnementales
setwd(paste("C:/AAA PENECLIM SATELLITE/guyanes/",choixsat,sep=""));# On définit le chemin des données par setwd (pour l'afficher, taper getwd())
varfile<-read.csv2(paste(variab,"moySectStratMonthBRASIL",".csv",sep=""),header=TRUE,row.names=1)
varfile$AN<-as.numeric(substr(rownames(varfile),start=1,stop=4));
varfile$MOIS<-as.numeric(substr(rownames(varfile),start=6,stop=nchar(rownames(varfile)))); # On sélectionne jusqu'au dernier caractère
varfile$MOIS<-varfile$MOIS+decal;# On introduit ici le décalage dans les dates pour la variable environnementale
moissup12<-which(varfile$MOIS>12);#Indices des dates qui posent pb quand mois>12
varfile$AN[moissup12]<- varfile$AN[moissup12]+1 # Corrige le problème des mois>12 en rajoutant 1 an
varfile$MOIS[moissup12]<-varfile$MOIS[moissup12]-12; # Corrige le mois dans un second temps
moisinf1<-which(varfile$MOIS<1)
varfile$AN[moisinf1]<- varfile$AN[moisinf1]-1;#Correction de l'année
varfile$MOIS[moisinf1]<-varfile$MOIS[moisinf1]+12; # Corrige le mois dans un second temps

orderdates<-order(as.Date(paste(rownames(varfile),"_15",sep=""),format="%Y_%m_%d"),decreasing=F); #Donne l'ordre croissant des dates
sortedvar<-varfile[orderdates,];#Reclasse la variable sleon le même ordre
rownames(sortedvar)<-as.character(as.Date(paste(rownames(varfile),"01",sep="_"),format="%Y_%m_%d"))

## On prend les secteurs-strates 1 par 1
# On initialise une matrice des pentes de rrégression et des p.values
cormat<-matrix(data=NA,nrow=ncol(varfile)-2,ncol=2,dimnames=list(colnames(varfile)[1:(ncol(varfile)-2)],c("Slope","p.value")));
for (i in rownames(cormat)){ ##### début la boucle (i représente le nom de la ligne sélectionnée qui correspond au secteur-strate)

commdates<-intersect(as.character(R$Date_SSB),as.character(rownames(sortedvar)));# On sélectionne les dates communes aux 2 séries
RDate_SSB<-as.character(R$Date_SSB[is.element(el=as.character(R$Date_SSB),set=commdates)]);# Dans la série de R, on prend les valeurs qui apparaissent aux dates communes
varsel<-sortedvar[is.element(el=rownames(sortedvar),set=commdates),i];# Idem pour la série de variable environnemental
residus<-R$residus[is.element(el=as.character(R$Date_SSB),set=RDate_SSB)]





sortieanova<-anova(modlin<-glm(residus~varsel),test="Chisq")
sortiesummary<-summary(modlin)
cormat[i,"Slope"]<- coefficients(sortiesummary)["varsel","Estimate"];
cormat[i,"p.value"]<-sortieanova["varsel","Pr(>Chi)"]
windows() ###### ouvrir fenetre pour graphe recrutement/variab env
par(mar=c(7,5,3,5))
plot(x=as.Date(RDate_SSB,format="%Y-%m-%d"),y=residus,type="b",pch=21, col="pink",bg="black",ylab="Résidus",las=1,lwd=3,xlab="",xaxt="n",main=i);# là on a mis la série de recrutement
axis(side=1,at=seq.Date(from=as.Date(RDate_SSB,format="%Y-%m-%d")[1],to=as.Date (RDate_SSB,format="%Y-%m-%d")[length(RDate_SSB)],by="12 months"),labels=as.character(seq.Date(from=as.Date(RDate_SSB,format="%Y-%m-%d")[1],to=as.Date(RDate_SSB,format="%Y-%m-%d")[length(RDate_SSB)],by="12 months")),las=2) ####axe des abcisses
par(new=T);# Pour réinitialiser les paramètres du grpahique (dont l'échelle des x) (ON CHANGE l'échelle)
plot(x=as.Date(commdates,format="%Y_%m_%d"), y=varsel,col="royalblue",lwd=2,lty=2,xaxt="n",yaxt="n",xlab="",ylab="",type="l"); #### là j'ajoute la série de la variable environnementale
axis(side=4,at=seq(floor(min(varsel,na.rm=TRUE)),ceiling(max(varsel,na.rm=TRUE)),by=0.2),labels= seq(floor(min(varsel,na.rm=TRUE)),ceiling(max(varsel,na.rm=TRUE)),by=0.2),las=1)#On rajoute un axe supplémentaire du côté droit de la figure
mtext(side=4,text=variab,line=3);# On rajoute un nom d'axe dans la marge
legend(legend=c("Résidus",variab),col=c("pink","royalblue"),lwd=c(2,2),pch=c(21,NA),y=2.4,x=as.Date(paste(commdates[length(commdates)-40]),format="%Y_%m_%d"))


windows() ###### j'ouvre une nouvelle fenetre pour faire graphe résidus
plot(modlin,1,main=paste("residus pour",i,sep=" ")) #### modèle résidus



} ####fin boucle