Existe-t-il un moyen, en utilisant un package Python établi (par exemple SciPy), de définir ma propre fonction de densité de probabilité (sans aucune donnée préalable, juste ), afin que je puisse ensuite faire des calculs avec elle (comme obtenir la variance de la variable aléatoire continue)? Bien sûr, je pourrais prendre, disons, SymPy ou Sage, créer une fonction symbolique et faire les opérations, mais je me demande si au lieu de faire tout ce travail moi-même, je peux utiliser un package déjà implémenté.
python
statistics
probability
astrojuanlu
la source
la source
Réponses:
Vous devez sous- classer la classe rv_continuous dans scipy.stats
maintenant mon_cv est une variable aléatoire continue avec le PDF donné et la plage [0,1]
Notez que dans cet exemple
my_pdf
etmy_cv
sont des noms arbitraires (qui auraient pu être n'importe quoi), mais ne_pdf
sont pas arbitraires; et_cdf
sont des méthodesst.rv_continuous
dont l'une doit être écrasée pour que le sous-classement fonctionne.la source
3*x**2
, ici), ou la variable aléatoire résultante donne des résultats incorrects (vous pouvez vérifiermy_cv.median()
, par exemple). J'ai corrigé le code.x
[0, 1]. Pouvez-vous clarifier?my_cv.rvs()
(qui peut prendre unsize
argument, pour obtenir plusieurs échantillons en une seule fois). C'est ce que je suppose de la documentation ( docs.scipy.org/doc/scipy/reference/generated/… ).Vous devriez vérifier sympy.stats. Il fournit une interface pour gérer les variables aléatoires. L'exemple suivant fournit une variable aléatoire
X
définie sur l'intervalle unitaire avec la densité2x
Si vous êtes intéressé, cette abstraction peut gérer des manipulations assez complexes.
la source