답변:
scipy.stats 에서 rv_continuous 클래스 를 서브 클래 싱해야합니다.
import scipy.stats as st
class my_pdf(st.rv_continuous):
def _pdf(self,x):
return 3*x**2 # Normalized over its range, in this case [0,1]
my_cv = my_pdf(a=0, b=1, name='my_pdf')
이제 my_cv는 주어진 PDF와 범위 [0,1]의 연속 랜덤 변수입니다.
참고이 예에서 my_pdf
와 my_cv
임의의 이름 (즉 어떤 수 있었다), 그러나있는 _pdf
것입니다 하지 임의; 그와 _cdf
의 방법이 있습니다 st.rv_continuous
작업에 서브 클래 싱 위해서는 덮어해야 그 중 하나.
3*x**2
, here)를 제공하거나 결과 임의 변수가 잘못된 결과를 생성합니다 ( my_cv.median()
예 : 확인 가능 ). 코드를 수정했습니다.
x
[0, 1] 범위를 넘어야 함을 암시하는 것 같습니다 . 당신은 명확히 할 수 있습니까?
my_cv.rvs()
(한 size
번에 여러 샘플을 얻기 위해 인수를 취할 수 있음 ). 이것이 문서 ( docs.scipy.org/doc/scipy/reference/generated/… ) 에서 추측 한 것 입니다.
sympy.stats를 확인해야합니다. 임의의 변수를 처리하는 인터페이스를 제공합니다. 다음 예제는 X
밀도로 단위 간격에 정의 된 임의 변수를 제공합니다.2x
In [1]: from sympy.stats import *
In [2]: x = Symbol('x')
In [3]: X = ContinuousRV(x, 2*x, Interval(0, 1))
In [4]: P(X>.5)
Out[4]: 0.750000000000000
In [5]: Var(X) # variance
Out[5]: 1/18
In [6]: E(2*cos(X)+X**2) # complex expressions are ok too
Out[6]: -7/2 + 4⋅cos(1) + 4⋅sin(1)
관심이 있다면이 추상화는 상당히 복잡한 조작을 처리 할 수 있습니다.