IPython console for SymPy 1.7.dev (Python 3.6.9-64-bit) (ground types:
python)
These commands were executed:
>>> from __future__ import division
>>> from sympy import *
>>> x, y, z, t = symbols('x y z t')
>>> k, m, n = symbols('k m n', integer=True)
>>> f, g, h = symbols('f g h', cls=Function)
>>> init_printing()
Documentation can be found at https://docs.sympy.org/dev
In [1]: from sympy.stats import ContinuousRV
In [2]: from sympy import Lambda, log, Pow, exp, symbols, Interval, oo
In [3]: _BETA = 10.56
In [5]: _ETA = -90
In [6]: _ALPHA = 3.11
In [7]: x, beta, alpha, eta = symbols("x, beta, alpha, eta")
In [8]: log_weibull_pdf = ((beta / (alpha * (1 - x - eta))) *
...: (Pow(log(1 - x - eta) / alpha, beta - 1)) *
...: (exp(-Pow(log(1 - x - eta) / alpha, beta))))
In [9]: log_weibull_pdf.subs({beta: _BETA,
...: alpha: _ALPHA,
...: eta: _ETA}
...:
...:
...:
...:
...: )
Out[9]:
10.56
-6.25821230086363e-6⋅log (91 - x) 9.56
6.60867218971199e-5⋅ℯ ⋅log (91 - x)
──────────────────────────────────────────────────────────────────────────
91 - x
In [10]: pdf = _
In [11]: X = ContinuousRV(x, pdf, set=Interval(-oo, -_ETA))
In [12]: X
Out[12]: x
In [14]: from sympy.stats import density
In [15]: density(X)(y)
Out[15]:
⎧ 10.56
⎪ -6.25821230086363e-6⋅log (91 - y) 9.56
⎪6.60867218971199e-5⋅ℯ ⋅log (91 - y)
⎨──────────────────────────────────────────────────────────────────────────
f
⎪ 91 - y
⎪
⎩ 0
or y ≥ -∞ ∧ y ≤ 90
otherwise
Is the above what you were trying to do?
On Sun, Oct 11, 2020 at 8:55 PM [email protected] <[email protected]> wrote:
> Here is my attempt with ContinuousRV:
>
> from sympy.stats import ContinuousRV
> from sympy import Lambda, log, Pow, exp, symbols, Interval, oo
>
> # Parameters
> _BETA = 10.56
> _ETA = -90
> _ALPHA = 3.11
>
> x, beta, alpha, eta = symbols("x, beta, alpha, eta")
>
> log_weibull_pdf = ((beta / (alpha * (1 - x - eta))) *
> (Pow(log(1 - x - eta) / alpha, beta - 1)) *
> (exp(-Pow(log(1 - x - eta) / alpha, beta))))
> X = ContinuousRV(x, log_weibull_pdf.subs({beta: _BETA,
> alpha: _ALPHA,
> eta: _ETA}),
> set=Interval(-oo, -_ETA))
>
> which fails with:
>
> ValueError: x**w where w is irrational is not defined for negative x
>
> --
> Seb
>
>
> On Sunday, October 11, 2020 at 1:51:16 AM UTC-5 czgdp1807 wrote:
>
>> Hi,
>>
>> I think for creating RVs with custom distributions, one can use,
>> ContinuousRV, DiscreteRV Or FiniteRV depending on the type of
>> distribution. You can take a look at
>> https://docs.sympy.org/latest/modules/stats.html#examples
>> Note that the PDF/PMF should be a SymPy object.
>>
>> With Regards,
>> Gagandeep Singh
>> Github - https://github.com/czgdp1807
>> LinkedIn - https://www.linkedin.com/in/czgdp1807
>>
>> On Sun, 11 Oct, 2020, 3:45 AM [email protected], <[email protected]> wrote:
>>
>>> Hello,
>>>
>>> I'm trying to set up a custom distribution with the following function
>>> describing its PDF:
>>>
>>> def pdf(x, beta, alpha, eta):
>>> t0 = beta / (alpha * (1 - x - eta))
>>> t1 = pow(np.log(1 - x - eta) / alpha, beta - 1)
>>> t2 = np.exp(-pow(np.log(1 - x - eta) / alpha, beta))
>>> return t0 * t1 * t2
>>>
>>> It's a particular parameterization of the Log-Weibull distribution, with
>>> beta and alpha being the shape and scale parameters, respectively, and eta
>>> acts as a shift parameter representing the upper bound of the sample space,
>>> which is then defined as -inf < x < eta. I'm interested in drawing random
>>> variates, computing the above PDF, and CDF.
>>>
>>> I have limited experience with sympy, and none with sympy.stats, but it
>>> seems as if what I need is sympy.stats.ContinuousDistributionHandmade.
>>> However, I'd appreciate any pointers.
>>>
>>> Thanks,
>>> --
>>> Seb
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "sympy" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/sympy/8f73147b-7032-464d-b95c-a1b68537c1a7n%40googlegroups.com
>>> <https://groups.google.com/d/msgid/sympy/8f73147b-7032-464d-b95c-a1b68537c1a7n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/16120812-5243-4f41-869e-7d03288dfb97n%40googlegroups.com
> <https://groups.google.com/d/msgid/sympy/16120812-5243-4f41-869e-7d03288dfb97n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
--
With regards,
Gagandeep Singh
Github - https://github.com/czgdp1807/
Linkedin - https://www.linkedin.com/in/czgdp1807/
<https://www.linkedin.com/in/gdp1/>
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/CAAvS0gU73da00AwSCN00xM5u0nEn3UHwQEDjuXr-dyTcSUcQBA%40mail.gmail.com.