Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
LEGO Icons 10331 – Le martin-pêcheur
35 €
Voir le deal

Execution d'une boucle dans R (comparaison de modèles)

2 participants

Aller en bas

Execution d'une boucle dans R (comparaison de modèles) Empty Execution d'une boucle dans R (comparaison de modèles)

Message par Sara.b Lun 25 Avr 2011 - 18:11

Bonjour,

J'effectue une simulation sous R pour comparer les estimations des coefficients de 3 modèles différents.
J'ai déclaré une fonction et j'aimerai qu'elle retourne une matrice contenant les coefficients estimés de chaque modèle mais lorsque j'execute mon code, la fonction ne retourne pas la matrice des coefficients et je n'arrive donc pas a répéter la simulation. (pourtant j'ai bien mis
Code:
return(matricecoeff)
)
En fait, au final j'aimerai avoir une matrice contenant les 50 coefficients pour chacun des 3 modèles et pour chacune des répétitions.
Quelqu'un pourrait-il m'aider svp? Merci

Voici mon code

Code:
Simu <- function(x , inputrates){
   n=50  #Nombre d'individus
   p=50 #Nombre de covariables
   beta0=c(5, 10, 15, 20, 30,rep(0,45 ))
   #Matrice de covariables: Xi iid N(0,1)
   Z<-matrix(rnorm(n*p), nrow=n, ncol=p)
   #Temps de survie:
   h<-as.vector(exp(Z %*% beta0)) ## (myrates)
   X<-rexp(n, rate=h) ### generate r.v (y)
   C<-runif(n, 0, 10)
   delta<-ifelse(C>=X, 1, 0)
   sum(delta)
   T<-ifelse(C>=X, X, C) ##obs
   opt1 <- optL1(Surv(T, delta), Z, model = c("cox"))
   fitpenaliz1 <- penalized(Surv(T, delta) ~ Z, model = c("cox"),lambda1 = opt1$lambda)  ## modele 1
   opt2 <- optL2(Surv(T, delta), Z, model = c("cox"))
   fitpenaliz2 <- penalized(Surv(T, delta) ~ Z, lambda1 = opt1$lambda, lambda2=opt2$lambda) ## modele 2
   fitcox <- coxph(Surv(T, delta) ~ Z) ## modele 3
   print(show(fitpenaliz1))
        print(show(fitpenaliz2))
   matricecoeff<-cbind(coefficients(fitpenaliz1,"all"),coefficients(fitpenaliz2,"all"),fitcox$coefficients,beta0)
   print(matricecoeff)
   return(matricecoeff)  ### CE QUE DEVRAIT ME RETOURNER LA FONCTION
   }

result <- matrix(NA, nrow=500, ncol=10) #creat a matrix to hold outcome
for(i in 1:2)  result[,i]<-Simu(x,h) #run the simulation 100 times
result




Sara.b

Nombre de messages : 5
Date d'inscription : 09/04/2011

Revenir en haut Aller en bas

Execution d'une boucle dans R (comparaison de modèles) Empty Re: Execution d'une boucle dans R (comparaison de modèles)

Message par popotam Mer 27 Avr 2011 - 7:31

Bonjour,
Peux-tu nous coller la sortie R lorsque tu exécutes ce code ?

popotam

Nombre de messages : 371
Date d'inscription : 27/09/2006

Revenir en haut Aller en bas

Execution d'une boucle dans R (comparaison de modèles) Empty Re: Execution d'une boucle dans R (comparaison de modèles)

Message par Sara.b Mer 27 Avr 2011 - 15:00

Voila ce que j'obtiens
les lambda viennent de opt1 opt2 qui cherche le lambda optimal que j'ai utilisé dans penalized juste après.
Et de Z1 a Z50 c'est la matrice des coefficients normalement.

Code:

lambda= 8.742625        cvl= -88.11895
lambda= 14.14586        cvl= -102.9206
lambda= 5.40324        cvl= -76.10757
lambda= 3.339386        cvl= -65.90617
lambda= 2.063854        cvl= -56.14304
lambda= 1.275532        cvl= -50.30437
lambda= 0.788322        cvl= -50.11779
lambda= 0.9971534      cvl= -49.45798
lambda= 1.016880        cvl= -49.47775
lambda= 0.9795054      cvl= -49.4479
lambda= 0.9064798      cvl= -49.57615
lambda= 0.9634997      cvl= -49.46042
lambda= 0.9812251      cvl= -49.44759
lambda= 0.982271        cvl= -49.44774
lambda= 0.9811211      cvl= -49.44757
lambda= 0.980504        cvl= -49.44764
lambda= 0.9808645      cvl= -49.44756
lambda= 0.9807439      cvl= -49.44719
lambda= 0.9806522      cvl= -49.4479
# nonzero coefficients: 21
lambda= Inf    cvl= -110.8122
lambda= 1      cvl= -Inf
lambda= 10      cvl= -98.50537
lambda= 100    cvl= -107.0860
lambda= 38.81464        cvl= -103.7225
lambda= 62.18536        cvl= -105.5588
lambda= 24.37073        cvl= -101.71
lambda= 15.44391        cvl= -99.80623
lambda= 9.926824        cvl= -98.49124
lambda= 6.517081        cvl= -98.3699
lambda= 7.438601        cvl= -98.24071
lambda= 7.970077        cvl= -98.24033
lambda= 7.708109        cvl= -98.2352
lambda= 7.709143        cvl= -98.2352
lambda= 7.702138        cvl= -98.2352
lambda= 7.702454        cvl= -98.2352
lambda= 7.705123        cvl= -98.2352
lambda= 7.703474        cvl= -98.2352
# nonzero coefficients: 34
Penalized cox regression object
50 regression coefficients of which 21 are non-zero

Loglikelihood =  -42.25657
L1 penalty =    17.49231      at lambda1 =  0.9807439
NULL
Penalized cox regression object
50 regression coefficients of which 34 are non-zero

Loglikelihood =  -75.13242
L1 penalty =    5.083972      at lambda1 =  0.9807439
L2 penalty =    17.59238      at lambda2 =  7.702454
NULL
                                          beta0
Z1  0.934633201  0.329680070  -60.646101    5
Z2  1.307607833  0.218029773  -62.319020    10
Z3  2.570426147  0.334155875  -51.013958    15
Z4  3.764282132  0.632999783  143.355463    20
Z5  6.543611249  1.120773484  145.021562    30
Z6  0.000000000  0.017167219    7.954792    0
Z7  -0.315894550 -0.226416654 -165.790578    0
Z8  0.003413201  0.016801598  88.675320    0
Z9  0.000000000  0.122356549    0.623370    0
Z10 -0.179328692 -0.112003856  40.157180    0
Z11  0.000000000  0.020401483  24.765920    0
Z12 -0.082484534 -0.056110429  -65.526218    0
Z13  0.000000000 -0.159032712  138.802194    0
Z14  0.000000000  0.095527427  92.523579    0
Z15  0.000000000  0.000000000  -23.221909    0
Z16  0.000000000 -0.042107875  -48.066070    0
Z17 -0.179416545 -0.140522911  24.141441    0
Z18  0.000000000 -0.031849842  27.440237    0
Z19  0.000000000  0.000000000  -70.883585    0
Z20  0.000000000  0.000000000  -48.005574    0
Z21 -0.234579161 -0.043290962  14.481060    0
Z22  0.000000000  0.162144821  -44.697359    0
Z23  0.002545019  0.000000000  28.301230    0
Z24  0.000000000  0.034790860  -33.985575    0
Z25 -0.331161307 -0.005816624  -45.411149    0
Z26 -0.213167750 -0.012132014  -41.091454    0
Z27  0.000000000  0.000000000  -39.971252    0
Z28  0.120660208  0.000000000  20.072143    0
Z29  0.000000000  0.244046068  -65.740012    0
Z30  0.359634195  0.000000000  93.354988    0
Z31  0.000000000  0.059009977  20.050101    0
Z32  0.000000000  0.000000000  18.812193    0
Z33  0.000000000  0.000000000  -4.225204    0
Z34 -0.022317885  0.000000000  49.597900    0
Z35  0.000000000 -0.133494541  -89.106451    0
Z36  0.045978975  0.105267846  43.082192    0
Z37  0.000000000  0.000000000  51.769421    0
Z38  0.000000000  0.000000000  -13.690962    0
Z39  0.000000000  0.106943827  80.056849    0
Z40  0.000000000  0.000000000  -59.088016    0
Z41  0.000000000 -0.177279926  42.132991    0
Z42  0.000000000  0.000000000  71.678881    0
Z43  0.000000000  0.000000000  32.182090    0
Z44  0.000000000  0.029305456  -10.419076    0
Z45  0.000000000  0.039130332  31.273784    0
Z46  0.000000000 -0.058180069  40.645038    0
Z47 -0.381255441 -0.208219273  -74.982952    0
Z48  0.000000000 -0.012954286  -26.200500    0
Z49 -0.241713569 -0.075847730  -38.006424    0
Z50  0.001641444  0.000000000    6.959149    0
Erreur dans result[, i] <- Simu(x, h) :
  le nombre d'objets à remplacer n'est pas multiple de la taille du remplacement
De plus : Il y a eu 50 avis ou plus (utilisez warnings() pour voir les 50 premiers)


Sara.b

Nombre de messages : 5
Date d'inscription : 09/04/2011

Revenir en haut Aller en bas

Execution d'une boucle dans R (comparaison de modèles) Empty Re: Execution d'une boucle dans R (comparaison de modèles)

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum