Hoe bereken ik verwachte waarden van een Poisson verdeelde willekeurige variabele in Python met behulp van scipy?

stemmen
0

Ik wil voor het berekenen van een verwachte waarde van een functie van een Poisson verdeelde stochast met behulp scipy.

import scipy.stats as stats
from scipy.stats import poisson, norm

G = poisson(mu=30)
G.dist.expect(func=lambda x:(x+1), lb=0, ub=np.inf, *G.args, **G.kwds)    

Dit resulteert in een fout:

File ipython-input-3-da8a2a80eba8, regel 2 in module G.dist.expect (func = lambda x: (x + 1), lb = 0, ub = np.inf, G.args *, ** G.kwds)

TypeError: verwachten () kreeg een onverwachte trefwoord argument 'mu'

Als ik probeer hetzelfde met een normale willekeurige variabele

F = norm(loc=100,scale=30) 
F.dist.expect(func=lambda x:(x+1), lb=0, ub=np.inf, *F.args, **F.kwds)  

de code werkt en retourneert 101,0029332762359.

Hoe moet ik correct definiëren de rv G, zodat ik de verwachting met behulp van een functie kan berekenen? Ik gebruik Python 2.7.8 (standaard 26 Jul 2014 15:25:14), ipython 2.1.0.

Best Wishes, Johannes

De vraag is gesteld op 30/07/2014 om 09:02
user
In andere talen...                            


1 antwoorden

stemmen
4

Sommige functies hun posities in plaats van trefwoord argumenten. stats.poissonis dist.expecteen voorbeeld hiervan. De fout

TypeError: expect() got an unexpected keyword argument 'mu'

zegt dat expectniet had verwacht keyword argument mu. Maar als je net voorbij de waarde van muals een positionele argument dan zul je dat vinden G = stats.poisson(30)werkt:

import numpy as np
import scipy.stats as stats

G = stats.poisson(30)
print(G.dist.expect(lambda x: (x+1), G.args, lb=0, ub=np.inf))
# 31.0

Ook het G.args moet worden doorgegeven als het tweede argument aan expect. U kunt dit zien door te kijken naar de hulp doc string voor G.dist.expect:

In [14]: help(G.dist.expect)
Help on method expect in module scipy.stats._distn_infrastructure:

expect(self, func=None, args=(), loc=0, lb=None, ub=None, conditional=False) method of scipy.stats._discrete_distns.poisson_gen instance

gebruik daarom

G.dist.expect(lambda x: (x+1), G.args, lb=0, ub=np.inf)

in plaats van

G.dist.expect(func=lambda x:(x+1), lb=0, ub=np.inf, *G.args, **G.kwds)

G.kwds is een leeg dict, dus het maakt niet uit of je wilt doorgeven aan het einde of niet.

antwoordde op 30/07/2014 om 09:14
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more