2017-08-21 3 views
0

J'ai essayé d'intégrer une distribution de Weibull de 0 à une valeur donnée, pour estimer un taux de défaillance basé sur un modèle de distribution. toutes mes tentatives ont été de me donner la « valeur de fonction non finie » erreur j'ai essayé d'utiliser ifelse et sapply, et les deux ont échoué à résoudre le problème .. iciR problème d'intégration: valeur de fonction non finie

est mon code à ce jour:

f <- function (y) ((beta1/y) * ((y/alpha1)^beta1) * exp(-((y/alpha1)^beta1))); 
f1 <- function (y) sapply(y,f); 
R = integrate(f1, 1e-10, 10); 

s'il vous plaît laissez-moi savoir si je manque quelque chose d'évident ..

+0

Veuillez formater votre question. Au moins en utilisant des blocs de code (avec 4 caractères d'espaces). Cela étant dit, Bienvenue sur SO. – Kanak

+1

Que sont alpha1 et beta1? – G5W

+0

alpha1 et beta1 sont les paramètres de ma distribution de weibull. Ils vont de 1 à 7 de alpha, et de 0,9 à 3 pour la bêta. Je calcule réellement cette intégrale pour une gamme de distributions différentes, d'où les variables. –

Répondre

0

Vous devez déclarer beta1 et alpha1. Essayez ceci:

f <- function (y, alpha1, beta1) { 
    (beta1/y) * ((y/alpha1)^beta1) * exp(-((y/alpha1)^beta1)) 
} 
f1 <- function (y, alpha1, beta1) { 
    sapply(y,f, alpha1, beta1) 
} 
R <- integrate(f1, 1e-10, 10, alpha1 = 1, beta1 = 0.9) 

Vous pouvez parcourir les valeurs alpha1 et beta1.