2016-12-10 3 views
0

Dies ist höchstwahrscheinlich, weil ich weiß nicht, wie den Standard verwendet SciPy Funktionsmethode erwarten. Wenn ich benutze:scipy.stats.uniform.expect einen anderen Wert als die manuelle Berechnung hat

from scipy.stats import uniform 
    uniform.expect(lambda k: k**2,lb=-0.2,ub=0.2) 

Ich habe Wert: 0,0026666666666666666

Wenn ich manuelle Berechnung verwenden:

np.mean(np.random.uniform(-0.2,0.2,1000)**2) 

ich ,013235491320680141 bekam, was der richtige Wert ist ich erwarte. Also, was habe ich falsch mit Standard erwarten oder integrale Funktion? Irgendwelche Hilfe bitte.

+0

Dokumentation für [ 'scipy.stats.rv_continuous.expect' ist hier] (https://docs.scipy.org/doc/scipy/reference/generated/scipy. stats.rv_continuous.expect.html # scipy.stats.rv_continuous.expect) – Eric

+0

ich habe aber noch nicht wissen, wie man den richtigen Wert zu erhalten. Es gibt kein Beispiel in der Dokumentation. –

+0

Ihr Verständnis von "ub" und "lb" ist falsch. Sie sind keine Parameter für die gleichmäßige Verteilung, weil 'expect' nicht nur eine Methode dieser Verteilung ist. 'Dist.expect (f, lb, ub)' Mittel _ "Erwartungswert von' f (x) '', wo x ~ dist', so dass 'lb Eric

Antwort

3

Wenn Sie the documentation for expect, ub und lb betrachten, meinen Sie nicht, was Sie denken, dass sie tun. Sie sind Grenzen des Integrals, keine Parameter für die Verteilung.

Sie eigentlich wollen:

scipy.stats.uniform(loc=-0.2, scale=0.4).expect(lambda x: x**2) 
Verwandte Themen