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.")
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)
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.")
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)
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
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.")
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.")