2015-08-25 1 views
1

J'essaie de reproduire une analyse de survie en utilisant la distribution de Weibull que j'ai déjà produite dans SAS - Je travaille maintenant à partir d'une machine sans licence alors j'utilise R (les deux de Windows). Mes données d'entrée (censurées à droite) ressemble à:R Survival Analysis: erreur dans survreg en utilisant Weibull

> head(mydata) 
    ID   Key Time Score Event Censor 
1 1231231 ZXC 28 182.34 0  1 
2 4564564 ASD 28 320.04 0  1 
3 7897897 QWE 28 306.32 0  1 
4 9879879 QWE 28 211.92 0  1 
5 6546546 ASD 28 276.14 0  1 
6 3213213 ZXC 28 331.50 0  1 

avec les binaires étant l'événement et Censeur, le score variant entre environ 150 et 450 et le temps entre 1 et 28. Il y a quelques 30.000 lignes dans l'ensemble de données d'entrée.

Lorsque je tente:

mydatasr <- survreg(Surv(Time, Censor) ~ Score, dist = "w") 

Je reçois un message d'avertissement:

Dans survreg.fit (X, Y, poids, offset, init = init, controlvals = contrôle,: Ran sur itérations et ne convergent,

et pas de sortie.

J'ai mer rched pour ce msg en ligne (et à travers ce site) mais n'ont pas réussi à trouver quelque chose qui indique ce que le problème pourrait être. Je n'ai eu aucun problème de convergence mettant les mêmes données à travers (proc logistic et) lifereg dans SAS.

+0

Vous ne vous attendez à aucune sortie à moins d'avoir tapé le nom de cet objet pour appeler la fonction 'print.survreg'. L'affectation ne provoque pas nécessairement l'exécution des méthodes 'print'. –

Répondre

1

Il est difficile de savoir en l'absence de données. Vous pouvez doubler (ou comme illustré ci-dessous, triple) le nombre d'itérations qui par défaut 30:

(mydatasr <- survreg(Surv(Time, Censor) ~ Score , dist = "w", control = list(maxiter=90)) 

Voir survreg.control pour d'autres options?. Je suppose également que vous avez peut-être manqué qu'un objet Surv ait une parenthèse fermante avant la formule

+0

Oops - Je pense que la parenthèse fermante s'est perdue pendant que je déguisais mes données! J'ai essayé d'augmenter le nombre d'itérations, mais je n'ai toujours pas obtenu de résultats significatifs, même lorsque j'ai tronqué la longueur de mes données d'entrée à environ 70 lignes. Je pense que je vais devoir retourner à SAS. – Zephyr

+0

Il est assez fréquent sur la liste de diffusion de Rhelp que lorsque SAS produit un résultat et que R ne le fasse pas, et que les données soient également fournies pour l'analyse, il se peut que SAS fournisse la mauvaise réponse. Vous devriez vérifier le résultat en traçant les dangers non-paramétriques pour voir si un modèle de Weibull a réellement du sens. –

+0

Merci pour le heads-up! Malheureusement, l'outil de choix dans ma société est SAS - j'attends juste une licence. Cependant, nous faisons une validation croisée de nos résultats :) – Zephyr

0

Essayez ceci:

survreg(Surv(Time, Censor) ~ Score, data=mydata, dist = "w", scale=1) 
+0

Merci, mais est-ce que cela ne se rapproche pas seulement de la distribution de Weibull à une distribution exponentielle? – Zephyr