2016-01-19 1 views
0

Je dois ajouter une nouvelle variable dans un ensemble de données existant qui est la simulation d'une exponentielle. J'ai besoin de définir le lambda de cette exponentielle de sorte que la quantité de valeurs inférieure à un sera comprise entre 9% et 14%.SAS: Génération de valeurs aléatoires à partir d'une exponentielle

En résumé:

X ~ Expo (lambda)

Il sera comprise entre 9% et 14% des valeurs inférieures à 1.

Répondre

1

utiliser la fonction rand() avec l'argument 'exponential'; Cependant, si vous voulez que 9% à 14% des valeurs soient < 1, vous devrez résoudre Lambda en utilisant la formule du CDF de la distribution exponentielle. Personnellement, juste pour gagner du temps, je voudrais simuler certaines valeurs de Lambda et sélectionner celle qui correspond aux critères.

data findLambda; 
    do lambda = 0.05 to 0.5 by 0.05;   
     do i = 1 to 5000; 
      rand = rand('exponential')/lambda; 
      LessThan_1_Flag = (rand < 1); 
      output; 
     end; 
    end; 
run; 

proc freq data=findLambda; 
    by Lambda; 
    tables LessThan_1_Flag/nocum norow nocol nofreq; 
run; 

Vous trouverez qu'une valeur lambda entre 0,04 et 0,09 générera ce que vous recherchez.

0

RANEXP(seed) génère une norme aléatoire exponentielle. Divisez cela par lambda.

x=ranexp(seed)/lambda;