Bonjour à vous,

Plus ou moins novice en programmation R j'ai fait un script qui a pour fin de récupérer les paramètres d'une modèle non linéaire ainsi que le RMSE calculé à partir du du modèle "nls". Jusque là, ça marche. Mais je veux répéter cette opération n fois (peut être 50 fois à voir plus tard) et incrémenter une matrice pour chaque nouvelle répétition, soit : une nouvelle ligne avec les nouveaux paramètres et le nouveau RMSE. En gros c'est une cross-validation.

Voici le code, pour une meilleure compréhension je l'ai découpé et commenté. (pour les puristes, je suis sincèrement désolé, mon codage doit vous piquer les yeux....)

mise en place des variables utilisées ensuites :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for(i in 1:10){
 
  n=dim(donnees) # dimension des données de bases
  p=0.75#le pourcentage voulu
  n_train=floor(n*p) # sélection de 75% 
  n_test=n-n_train   
  indiv = sample(1:n) # tirage aléatoire
  indiv_train=indiv[1:n_train] # tirage aléatoire de 75% des données d'entrainements
  indiv_test=indiv[(n_train+1):n] # tirage aléatoire de 25% des données de validations
 
  Dtrain=donnees[indiv_train,] # création de la base d'entrainement
  Dtest=donnees[indiv_test,] # création de la base de validation
  x <- Dtrain$Mean_NDVIlog
  y <- Dtrain$LAI
  X <- Dtest$Mean_NDVIlog
  Y <- Dtest$LAI
recherche du model de régression :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
 
  start <- list()
  model <- nls(y ~ k*exp(b1*x) + b0,start = list(k = 1, b1 = 1, b0 = 1))
récupération des arguments du modèle :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
  summary(model)
  coef <- matrix(summary(model)$coefficients[, "Estimate"], nrow = 1)
 
  k <- matrix(coef[1,1])
  b1 <- matrix(coef[1,2])
  b0 <- matrix(coef[1,3])
Calcul du RMSE :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
   estim <- matrix(k*exp(b1*X)+b0)
  estim
  E <- matrix(estim - Y)
 
  RMSE <- matrix(sqrt(mean((E^2), na.rm = TRUE)))
mettre les paramètre du modèle + le RMSE dans une même matrice :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 parameters <- matrix(nrow=10,ncol=3,byrow=T) ## création de la matrice vide dans laquelle je veux récupérer les différents paramètres
  colnames(parameters) <- c("k","b1","b0") 
  parameters <- cbind(coef, RMSE)
  }
C'est dans cette dernière partie que je suis perdu, comment puis-je faire pour qu'à chaque nouvelle répétition les différents paramètres et le nouvel RMSE soient copier dans une nouvelle ligne de cette matrice (parameters) ?

Je ne pense pas que ce soit compliqué à faire... mais je suis vraiment perdu...
Je vous remercie par avance pour votre aide !
Pierre