Ici, je voudrais résoudre le problème de base de la distribution exponentielle et le problème du montant d'estimation le plus probable qui y est lié avec python.
python
Intervalle d'accès à la page d'accueil de N T(Unité: temps)Est une distribution exponentielle\\
f(t) = 2 e^{-2t}~~~~ (t>0)\\
Obéir. A ce moment P(T\leq 3)Demander.
Tout d'abord, diverses préparations.
python
import sympy as sym
from sympy.plotting import plot
sym.init_printing(use_unicode=True)
%matplotlib inline
oo = sym.oo #Infini
(x,t) = sym.symbols('x t')
Ensuite, dessinons un graphique de la fonction de densité de probabilité.
python
expr =2* sym.exp((-2*t))
#Le graphique de la fonction obtenue est illustré de 0 à 3.
plot(expr, (t, 0, 3))
#Vérifiez également qu'il s'agit d'une fonction de densité de probabilité au cas où.
sym.integrate(expr, (t, 0, oo))
Résolvez le dernier problème donné.
python
sym.integrate(expr, (t, 0, 3))
Résolvons maintenant le problème de l'estimation la plus probable.
python
Intervalle d'accès à la page d'accueil de N T(Unité: temps)Est une distribution exponentielle\\
f(t) = x e^{-xt}~~~~ (t>0)\\
Supposons que vous suiviez. Entrez arbitrairement un ensemble d'observations indépendantes de T et trouvez l'estimation la plus probable de x correspondant à cet ensemble de valeurs.
Définissez une fonction de vraisemblance. La variable devient x au lieu de t. (Habituellement, utilisez λ au lieu de x.)
python
#Tout d'abord, entrez l'ensemble des valeurs observées.
A = list(map(float, input().split()))
#Ensuite, définissez la fonction de vraisemblance.
expr = 1
for t in A:
expr = expr*(x * sym.exp((-x)*t))
print(expr)
#Le graphique de la fonction de vraisemblance avec x comme variable est montré de 0 à 3. Le chiffre 3 n'a pas de signification particulière ici. Tout va bien.
plot(expr, (x, 0, 3))
Ensuite, définissez la fonction de vraisemblance logarithmique.
python
L = sym.log(expr)
print(L)
#Le graphique de la fonction obtenue est illustré.
plot(L, (x, 0, 3))
Calculez où il se différencie à 0.
python
L_1 = L.diff(x,1)
plot(L_1, (x, 1, 3))
sym.solve(L_1, x)
Normalement, vous devez calculer le différentiel de second ordre comme suit et vous assurer qu'il est toujours négatif. Cependant, bien que ce calcul soit facile pour les humains, il ne fonctionne pas car Python ne transforme pas la formule du milieu pour faciliter le calcul. (´ · ω · `) Shobon.
python
L_2 = L_1.diff(x,1)
plot(L_2, (x, 1, 2))
print(L_2)
Recommended Posts