Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Execution d'une boucle dans R (comparaison de modèles)
2 participants
Page 1 sur 1
Execution d'une boucle dans R (comparaison de modèles)
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
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
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
Re: Execution d'une boucle dans R (comparaison de modèles)
Bonjour,
Peux-tu nous coller la sortie R lorsque tu exécutes ce code ?
Peux-tu nous coller la sortie R lorsque tu exécutes ce code ?
popotam- Nombre de messages : 371
Date d'inscription : 27/09/2006
Re: Execution d'une boucle dans R (comparaison de modèles)
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.
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
Sujets similaires
» Equivalent dans une boucle ?
» Créer des objets différents dans une boucle
» Boucle for pour chercher le maximum dans une colonne
» Comparaison des coefficients de modèles
» Constantes non significatives dans mes modèles de regression
» Créer des objets différents dans une boucle
» Boucle for pour chercher le maximum dans une colonne
» Comparaison des coefficients de modèles
» Constantes non significatives dans mes modèles de regression
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum