Esempio n. 1
0
 def summary(self):
     if len(self.free_rvs) == 1:
         pfun = FunDistr(self.nddistr,
                         breakPoints=self.nddistr.Vars[0].range())
         pfun.summary()
     else:
         raise RuntimeError("Too many variables.")
Esempio n. 2
0
def iid_unknown(X, n, k, **kwargs):
    """It gives distribution of sample _unknown on level k based on sample size of n."""
    fun = PiecewiseFunction([])
    for i in xrange(k, n+1):
        fun += iid_order_stat(X, n, i).get_piecewise_pdf()
    fun2 = (1.0 / (1+n-k)) * fun
    return FunDistr(fun = fun2.toInterpolated(), breakPoints = X.get_piecewise_pdf().getBreaks(), **kwargs)
Esempio n. 3
0
 def plot(self, **kwargs):
     if len(self.all_vars) == 1 and len(self.free_rvs) == 1:
         pfun = FunDistr(self.nddistr, breakPoints = self.nddistr.Vars[0].range())
         pfun.plot(label = str(self.nddistr.Vars[0].getSymname()), **kwargs)
         legend()
     elif len(self.all_vars) == 2 and len(self.free_rvs) == 2:
         plot_2d_distr(self.nddistr, **kwargs)
     elif len(self.all_vars) == 2 and len(self.free_rvs) == 1:
         a, b = self.free_rvs[0].range()
         freesym = self.free_rvs[0].getSym()
         fun = my_lambdify(freesym, self.rv_to_equation[self.dep_rvs[0]], "numpy")
         ax = plot_1d1d_distr(self.nddistr, a, b, fun)
         ax.set_xlabel(self.free_rvs[0].getSymname())
         ax.set_ylabel(self.dep_rvs[0].getSymname())
     else:
         raise RuntimeError("Too many variables.")
Esempio n. 4
0
def iid_order_stat(X, n, k, **kwargs):
    """It gives distribution of $k$-th observation in ordered sample size of n."""
    pdf = X.get_piecewise_pdf()
    cdf = X.get_piecewise_cdf()
    ccdf = 1 - X.get_piecewise_cdf()
    fun = (k * binomial_coeff(n, k)) * pdf * (pow(cdf, k-1) * pow(ccdf, n-k))
    #return PDistr(fun.toInterpolated())
    return FunDistr(fun = fun.toInterpolated(), breakPoints = X.get_piecewise_pdf().getBreaks(), **kwargs)
Esempio n. 5
0
 def as1DDistr(self):
     if len(self.dep_rvs) > 0:
         raise RuntimeError(
             "Cannot get distribution of dependent variable.")
     if len(self.free_rvs) != 1:
         raise RuntimeError("Too many free variables")
     pfun = FunDistr(self.nddistr, breakPoints=self.nddistr.Vars[0].range())
     return pfun
Esempio n. 6
0
 def plot(self, **kwargs):
     if len(self.all_vars) == 1 and len(self.free_rvs) == 1:
         pfun = FunDistr(self.nddistr,
                         breakPoints=self.nddistr.Vars[0].range())
         pfun.plot(label=str(self.nddistr.Vars[0].getSymname()), **kwargs)
         legend()
     elif len(self.all_vars) == 2 and len(self.free_rvs) == 2:
         plot_2d_distr(self.nddistr, **kwargs)
     elif len(self.all_vars) == 2 and len(self.free_rvs) == 1:
         a, b = self.free_rvs[0].range()
         freesym = self.free_rvs[0].getSymname()
         fun = my_lambdify([freesym], self.rv_to_equation[self.dep_rvs[0]],
                           "numpy")
         ax = plot_1d1d_distr(self.nddistr, a, b, fun)
         ax.set_xlabel(self.free_rvs[0].getSymname())
         ax.set_ylabel(self.dep_rvs[0].getSymname())
     elif len(self.all_vars) == 1 and len(self.free_rvs) == 0:
         DiracSegment(self.as_const(), 1).plot(**kwargs)
     else:
         raise RuntimeError("Too many variables.")
Esempio n. 7
0
 def summary(self):
     if len(self.free_rvs) == 1:
         pfun = FunDistr(self.nddistr, breakPoints = self.nddistr.Vars[0].range())
         pfun.summary()
     else:
         raise RuntimeError("Too many variables.")