'''
The one parameter exponential family distributions used by GLM.
'''
# TODO: quasi, quasibinomial, quasipoisson
# see http://www.biostat.jhsph.edu/~qli/biostatistics_r_doc/library/stats/html/family.html
# for comparison to R, and McCullagh and Nelder
import numpy as np
from scipy import special
from scipy.stats import ss
from . import links as L
from . import varfuncs as V
FLOAT_EPS = np.finfo(float).eps
[docs]class Family(object):
"""
The parent class for one-parameter exponential families.
Parameters
----------
link : a link function instance
Link is the linear transformation function.
See the individual families for available links.
variance : a variance function
Measures the variance as a function of the mean probabilities.
See the individual families for the default variance function.
See Also
--------
:ref:`links`
"""
# TODO: change these class attributes, use valid somewhere...
valid = [-np.inf, np.inf]
links = []
def _setlink(self, link):
"""
Helper method to set the link for a family.
Raises a ValueError exception if the link is not available. Note that
the error message might not be that informative because it tells you
that the link should be in the base class for the link function.
See glm.GLM for a list of appropriate links for each family but note
that not all of these are currently available.
"""
# TODO: change the links class attribute in the families to hold
# meaningful information instead of a list of links instances such as
# [<statsmodels.family.links.Log object at 0x9a4240c>,
# <statsmodels.family.links.Power object at 0x9a423ec>,
# <statsmodels.family.links.Power object at 0x9a4236c>]
# for Poisson...
self._link = link
if not isinstance(link, L.Link):
raise TypeError("The input should be a valid Link object.")
if hasattr(self, "links"):
validlink = link in self.links
validlink = max([isinstance(link, _) for _ in self.links])
if not validlink:
errmsg = "Invalid link for family, should be in %s. (got %s)"
raise ValueError(errmsg % (repr(self.links), link))
def _getlink(self):
"""
Helper method to get the link for a family.
"""
return self._link
# link property for each family is a pointer to link instance
link = property(_getlink, _setlink, doc="Link function for family")
def __init__(self, link, variance):
self.link = link()
self.variance = variance
[docs] def starting_mu(self, y):
"""
Starting value for mu in the IRLS algorithm.
Parameters
----------
y : array
The untransformed response variable.
Returns
-------
mu_0 : array
The first guess on the transformed response variable.
Notes
-----
mu_0 = (endog + mean(endog))/2.
Notes
-----
Only the Binomial family takes a different initial value.
"""
return (y + y.mean())/2.
[docs] def weights(self, mu):
"""
Weights for IRLS steps
Parameters
----------
mu : array-like
The transformed mean response variable in the exponential family
Returns
-------
w : array
The weights for the IRLS steps
Notes
-----
`w` = 1 / (link'(`mu`)**2 * variance(`mu`))
"""
return 1. / (self.link.deriv(mu)**2 * self.variance(mu))
[docs] def deviance(self, endog, mu, scale=1.):
"""
Deviance of (endog,mu) pair.
Deviance is usually defined as twice the loglikelihood ratio.
Parameters
----------
endog : array-like
The endogenous response variable
mu : array-like
The inverse of the link function at the linear predicted values.
scale : float, optional
An optional scale argument
Returns
-------
Deviance : array
The value of deviance function defined below.
Notes
-----
Deviance is defined
.. math::
\sum_i(2 loglike(y_i, y_i) - 2 * loglike(y_i, mu_i)) / scale
where y is the endogenous variable. The deviance functions are
analytically defined for each family.
"""
raise NotImplementedError
[docs] def resid_dev(self, endog, mu, scale=1.):
"""
The deviance residuals
Parameters
----------
endog : array
The endogenous response variable
mu : array
The inverse of the link function at the linear predicted values.
scale : float, optional
An optional argument to divide the residuals by scale
Returns
-------
Deviance residuals.
Notes
-----
The deviance residuals are defined for each family.
"""
raise NotImplementedError
[docs] def fitted(self, lin_pred):
"""
Fitted values based on linear predictors lin_pred.
Parameters
-----------
lin_pred : array
Values of the linear predictor of the model.
dot(X,beta) in a classical linear model.
Returns
--------
mu : array
The mean response variables given by the inverse of the link
function.
"""
return self.link.inverse(lin_pred)
[docs] def predict(self, mu):
"""
Linear predictors based on given mu values.
Parameters
----------
mu : array
The mean response variables
Returns
-------
lin_pred : array
Linear predictors based on the mean response variables. The value
of the link function at the given mu.
"""
return self.link(mu)
[docs] def loglike(self, endog, mu, scale=1.):
"""
The loglikelihood function.
Parameters
----------
endog : array
Usually the endogenous response variable.
mu : array
Usually but not always the fitted mean response variable.
Returns
-------
llf : float
The value of the loglikelihood evaluated at (endog,mu).
Notes
-----
This is defined for each family. endog and mu are not restricted to
`endog` and `mu` respectively. For instance, the deviance function
calls both loglike(endog, endog) and loglike(endog,mu) to get the
likelihood ratio.
"""
raise NotImplementedError
[docs] def resid_anscombe(self, endog, mu):
"""
The Anscome residuals.
See also
--------
statsmodels.families.family.Family docstring and the `resid_anscombe`
for the individual families for more information.
"""
raise NotImplementedError
[docs]class Poisson(Family):
"""
Poisson exponential family.
Parameters
----------
link : a link instance, optional
The default link for the Poisson family is the log link. Available
links are log, identity, and sqrt. See statsmodels.family.links for
more information.
Attributes
----------
Poisson.link : a link instance
The link function of the Poisson instance.
Poisson.variance : varfuncs instance
`variance` is an instance of
statsmodels.genmod.families.family.varfuncs.mu
See also
--------
statsmodels.genmod.families.family.Family
:ref:`links`
"""
links = [L.log, L.identity, L.sqrt]
variance = V.mu
valid = [0, np.inf]
def __init__(self, link=L.log):
self.variance = Poisson.variance
self.link = link()
def _clean(self, x):
"""
Helper function to trim the data so that is in (0,inf)
Notes
-----
The need for this function was discovered through usage and its
possible that other families might need a check for validity of the
domain.
"""
return np.clip(x, FLOAT_EPS, np.inf)
[docs] def resid_dev(self, endog, mu, scale=1.):
"""Poisson deviance residual
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional argument to divide the residuals by scale
Returns
-------
resid_dev : array
Deviance residuals as defined below
Notes
-----
resid_dev = sign(endog-mu)*sqrt(2*endog*log(endog/mu)-2*(endog-mu))
"""
endog_mu = self._clean(endog/mu)
return np.sign(endog - mu) * np.sqrt(2 * endog *
np.log(endog_mu) -
2 * (endog - mu))/scale
[docs] def deviance(self, endog, mu, scale=1.):
'''
Poisson deviance function
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional scale argument
Returns
-------
deviance : float
The deviance function at (endog,mu) as defined below.
Notes
-----
If a constant term is included it is defined as
:math:`deviance = 2*\\sum_{i}(Y*\\log(Y/\\mu))`
'''
endog_mu = self._clean(endog/mu)
return 2*np.sum(endog*np.log(endog_mu))/scale
[docs] def loglike(self, endog, mu, scale=1.):
"""
Loglikelihood function for Poisson exponential family distribution.
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
The default is 1.
Returns
-------
llf : float
The value of the loglikelihood function evaluated at
(endog,mu,scale) as defined below.
Notes
-----
llf = scale * sum(-mu + endog*log(mu) - gammaln(endog+1))
where gammaln is the log gamma function
"""
return scale * np.sum(-mu + endog*np.log(mu)-special.gammaln(endog+1))
[docs] def resid_anscombe(self, endog, mu):
"""
Anscombe residuals for the Poisson exponential family distribution
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
Returns
-------
resid_anscombe : array
The Anscome residuals for the Poisson family defined below
Notes
-----
resid_anscombe is defined
.. math:
(3/2.)*(endog^{2/3.} - \\mu**(2/3.))/\\mu^{1/6.}
"""
return (3/2.)*(endog**(2/3.)-mu**(2/3.))/mu**(1/6.)
[docs]class Gaussian(Family):
"""
Gaussian exponential family distribution.
Parameters
----------
link : a link instance, optional
The default link for the Gaussian family is the identity link.
Available links are log, identity, and inverse.
See statsmodels.family.links for more information.
Attributes
----------
Gaussian.link : a link instance
The link function of the Gaussian instance
Gaussian.variance : varfunc instance
`variance` is an instance of statsmodels.family.varfuncs.constant
See also
--------
statsmodels.genmod.families.family.Family
:ref:`links`
"""
links = [L.log, L.identity, L.inverse_power]
variance = V.constant
def __init__(self, link=L.identity):
self.variance = Gaussian.variance
self.link = link()
[docs] def resid_dev(self, endog, mu, scale=1.):
"""
Gaussian deviance residuals
Parameters
-----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional argument to divide the residuals by scale
Returns
-------
resid_dev : array
Deviance residuals as defined below
Notes
--------
`resid_dev` = (`endog` - `mu`)/sqrt(variance(`mu`))
"""
return (endog - mu) / np.sqrt(self.variance(mu))/scale
[docs] def deviance(self, endog, mu, scale=1.):
"""
Gaussian deviance function
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional scale argument
Returns
-------
deviance : float
The deviance function at (endog,mu) as defined below.
Notes
--------
`deviance` = sum((endog-mu)**2)
"""
return np.sum((endog-mu)**2)/scale
[docs] def loglike(self, endog, mu, scale=1.):
"""
Loglikelihood function for Gaussian exponential family distribution.
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
Scales the loglikelihood function. The default is 1.
Returns
-------
llf : float
The value of the loglikelihood function evaluated at
(endog,mu,scale) as defined below.
Notes
-----
If the link is the identity link function then the
loglikelihood function is the same as the classical OLS model.
llf = -(nobs/2)*(log(SSR) + (1 + log(2*pi/nobs)))
where SSR = sum((endog-link^(-1)(mu))**2)
If the links is not the identity link then the loglikelihood
function is defined as
llf = sum((`endog`*`mu`-`mu`**2/2)/`scale` - `endog`**2/(2*`scale`) - \
(1/2.)*log(2*pi*`scale`))
"""
if isinstance(self.link, L.Power) and self.link.power == 1:
# This is just the loglikelihood for classical OLS
nobs2 = endog.shape[0]/2.
SSR = ss(endog-self.fitted(mu))
llf = -np.log(SSR) * nobs2
llf -= (1+np.log(np.pi/nobs2))*nobs2
return llf
else:
# Return the loglikelihood for Gaussian GLM
return np.sum((endog * mu - mu**2/2)/scale - endog**2/(2 * scale)
- .5*np.log(2 * np.pi * scale))
[docs] def resid_anscombe(self, endog, mu):
"""
The Anscombe residuals for the Gaussian exponential family distribution
Parameters
----------
endog : array
Endogenous response variable
mu : array
Fitted mean response variable
Returns
-------
resid_anscombe : array
The Anscombe residuals for the Gaussian family defined below
Notes
--------
`resid_anscombe` = `endog` - `mu`
"""
return endog-mu
[docs]class Gamma(Family):
"""
Gamma exponential family distribution.
Parameters
----------
link : a link instance, optional
The default link for the Gamma family is the inverse link.
Available links are log, identity, and inverse.
See statsmodels.family.links for more information.
Attributes
----------
Gamma.link : a link instance
The link function of the Gamma instance
Gamma.variance : varfunc instance
`variance` is an instance of statsmodels.family.varfuncs.mu_squared
See also
--------
statsmodels.genmod.families.family.Family
:ref:`links`
"""
links = [L.log, L.identity, L.inverse_power]
variance = V.mu_squared
def __init__(self, link=L.inverse_power):
self.variance = Gamma.variance
self.link = link()
def _clean(self, x):
"""
Helper function to trim the data so that is in (0,inf)
Notes
-----
The need for this function was discovered through usage and its
possible that other families might need a check for validity of the
domain.
"""
return np.clip(x, FLOAT_EPS, np.inf)
[docs] def deviance(self, endog, mu, scale=1.):
"""
Gamma deviance function
Parameters
-----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional scale argument
Returns
-------
deviance : float
Deviance function as defined below
Notes
-----
`deviance` = 2*sum((endog - mu)/mu - log(endog/mu))
"""
endog_mu = self._clean(endog/mu)
return 2 * np.sum((endog - mu)/mu - np.log(endog_mu))
[docs] def resid_dev(self, endog, mu, scale=1.):
r"""
Gamma deviance residuals
Parameters
-----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional argument to divide the residuals by scale
Returns
-------
resid_dev : array
Deviance residuals as defined below
Notes
-----
`resid_dev` is defined
.. math:
sign(endog - \mu) * \sqrt{-2*(-(endog-\mu)/\mu + \log(endog/\mu))}
"""
endog_mu = self._clean(endog/mu)
return np.sign(endog - mu) * np.sqrt(-2 * (-(endog - mu)/mu +
np.log(endog_mu)))
[docs] def loglike(self, endog, mu, scale=1.):
"""
Loglikelihood function for Gamma exponential family distribution.
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
The default is 1.
Returns
-------
llf : float
The value of the loglikelihood function evaluated at
(endog,mu,scale) as defined below.
Notes
--------
llf = -1/scale * sum(endog/mu + log(mu) + (scale-1)*log(endog) +\
log(scale) + scale*gammaln(1/scale))
where gammaln is the log gamma function.
"""
return - 1./scale * np.sum(endog/mu + np.log(mu) + (scale - 1) *
np.log(endog) + np.log(scale) + scale *
special.gammaln(1./scale))
# in Stata scale is set to equal 1 for reporting llf
# in R it's the dispersion, though there is a loss of precision vs.
# our results due to an assumed difference in implementation
[docs] def resid_anscombe(self, endog, mu):
"""
The Anscombe residuals for Gamma exponential family distribution
Parameters
----------
endog : array
Endogenous response variable
mu : array
Fitted mean response variable
Returns
-------
resid_anscombe : array
The Anscombe residuals for the Gamma family defined below
Notes
-----
resid_anscombe = 3*(endog**(1/3.)-mu**(1/3.))/mu**(1/3.)
"""
return 3*(endog**(1/3.)-mu**(1/3.))/mu**(1/3.)
[docs]class Binomial(Family):
"""
Binomial exponential family distribution.
Parameters
----------
link : a link instance, optional
The default link for the Binomial family is the logit link.
Available links are logit, probit, cauchy, log, and cloglog.
See statsmodels.family.links for more information.
Attributes
----------
Binomial.link : a link instance
The link function of the Binomial instance
Binomial.variance : varfunc instance
`variance` is an instance of statsmodels.family.varfuncs.binary
See also
--------
statsmodels.genmod.families.family.Family
:ref:`links`
Notes
-----
endog for Binomial can be specified in one of three ways.
"""
links = [L.logit, L.probit, L.cauchy, L.log, L.cloglog, L.identity]
variance = V.binary # this is not used below in an effort to include n
def __init__(self, link=L.logit): # , n=1.):
# TODO: it *should* work for a constant n>1 actually, if data_weights
# is equal to n
self.n = 1
# overwritten by initialize if needed but always used to initialize
# variance since endog is assumed/forced to be (0,1)
self.variance = V.Binomial(n=self.n)
self.link = link()
[docs] def starting_mu(self, y):
"""
The starting values for the IRLS algorithm for the Binomial family.
A good choice for the binomial family is
starting_mu = (y + .5)/2
"""
return (y + .5)/2
[docs] def initialize(self, endog):
'''
Initialize the response variable.
Parameters
----------
endog : array
Endogenous response variable
Returns
--------
If `endog` is binary, returns `endog`
If `endog` is a 2d array, then the input is assumed to be in the format
(successes, failures) and
successes/(success + failures) is returned. And n is set to
successes + failures.
'''
if (endog.ndim > 1 and endog.shape[1] > 1):
y = endog[:, 0]
self.n = endog.sum(1) # overwrite self.n for deviance below
return y*1./self.n
else:
return endog
[docs] def deviance(self, endog, mu, scale=1.):
'''
Deviance function for either Bernoulli or Binomial data.
Parameters
----------
endog : array-like
Endogenous response variable (already transformed to a probability
if appropriate).
mu : array
Fitted mean response variable
scale : float, optional
An optional scale argument
Returns
--------
deviance : float
The deviance function as defined below
Notes
-----
If the endogenous variable is binary:
`deviance` = -2*sum(I_one * log(mu) + (I_zero)*log(1-mu))
where I_one is an indicator function that evalueates to 1 if
endog_i == 1. and I_zero is an indicator function that evaluates to
1 if endog_i == 0.
If the model is ninomial:
`deviance` = 2*sum(log(endog/mu) + (n-endog)*log((n-endog)/(n-mu)))
where endog and n are as defined in Binomial.initialize.
'''
if np.shape(self.n) == () and self.n == 1:
one = np.equal(endog, 1)
return -2 * np.sum(one * np.log(mu + 1e-200) + (1-one) *
np.log(1 - mu + 1e-200))
else:
return 2 * np.sum(self.n * (endog * np.log(endog/mu + 1e-200) +
(1 - endog) * np.log((1 - endog) /
(1 - mu) +
1e-200)))
[docs] def resid_dev(self, endog, mu, scale=1.):
"""
Binomial deviance residuals
Parameters
-----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional argument to divide the residuals by scale
Returns
-------
resid_dev : array
Deviance residuals as defined below
Notes
-----
If `endog` is binary:
resid_dev = sign(endog-mu)*sqrt(-2*log(I_one*mu + I_zero*(1-mu)))
where I_one is an indicator function that evaluates as 1 if endog == 1
and I_zero is an indicator function that evaluates as 1 if endog == 0.
If `endog` is binomial:
resid_dev = sign(endog - mu) * sqrt(2 * n * (endog * log(endog/mu) +
(1 - endog) * log((1 - endog)/(1 - mu))))
where endog and n are as defined in Binomial.initialize.
"""
mu = self.link._clean(mu)
if np.shape(self.n) == () and self.n == 1:
one = np.equal(endog, 1)
return np.sign(endog-mu)*np.sqrt(-2 * np.log(one * mu + (1 - one) *
(1 - mu)))/scale
else:
return (np.sign(endog - mu) *
np.sqrt(2 * self.n * (endog * np.log(endog/mu + 1e-200) +
(1 - endog) * np.log((1 - endog)/(1 - mu) +
1e-200)))/scale)
[docs] def loglike(self, endog, mu, scale=1.):
"""
Loglikelihood function for Binomial exponential family distribution.
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
The default is 1.
Returns
-------
llf : float
The value of the loglikelihood function evaluated at
(endog,mu,scale) as defined below.
Notes
--------
If `endog` is binary:
`llf` = scale*sum(endog*log(mu/(1-mu))+log(1-mu))
If `endog` is binomial:
`llf` = scale*sum(gammaln(n+1) - gammaln(y+1) - gammaln(n-y+1) +\
y*log(mu/(1-mu)) + n*log(1-mu)
where gammaln is the log gamma function and y = endog*n with endog
and n as defined in Binomial initialize. This simply makes y the
original number of successes.
"""
if np.shape(self.n) == () and self.n == 1:
return scale * np.sum(endog * np.log(mu/(1 - mu) + 1e-200) +
np.log(1 - mu))
else:
y = endog * self.n # convert back to successes
return scale * np.sum(special.gammaln(self.n + 1) -
special.gammaln(y + 1) -
special.gammaln(self.n - y + 1) + y *
np.log(mu/(1 - mu)) + self.n *
np.log(1 - mu))
[docs] def resid_anscombe(self, endog, mu):
'''
The Anscombe residuals
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
Returns
-------
resid_anscombe : array
The Anscombe residuals as defined below.
Notes
-----
sqrt(n)*(cox_snell(endog)-cox_snell(mu))/(mu**(1/6.)*(1-mu)**(1/6.))
where cox_snell is defined as
cox_snell(x) = betainc(2/3., 2/3., x)*betainc(2/3.,2/3.)
where betainc is the incomplete beta function
The name 'cox_snell' is idiosyncratic and is simply used for
convenience following the approach suggested in Cox and Snell (1968).
Further note that
cox_snell(x) = x**(2/3.)/(2/3.)*hyp2f1(2/3.,1/3.,5/3.,x)
where hyp2f1 is the hypergeometric 2f1 function. The Anscombe
residuals are sometimes defined in the literature using the
hyp2f1 formulation. Both betainc and hyp2f1 can be found in scipy.
References
----------
Anscombe, FJ. (1953) "Contribution to the discussion of H. Hotelling's
paper." Journal of the Royal Statistical Society B. 15, 229-30.
Cox, DR and Snell, EJ. (1968) "A General Definition of Residuals."
Journal of the Royal Statistical Society B. 30, 248-75.
'''
cox_snell = lambda x: (special.betainc(2/3., 2/3., x)
* special.beta(2/3., 2/3.))
return np.sqrt(self.n) * ((cox_snell(endog) - cox_snell(mu)) /
(mu**(1/6.) * (1 - mu)**(1/6.)))
[docs]class InverseGaussian(Family):
"""
InverseGaussian exponential family.
Parameters
----------
link : a link instance, optional
The default link for the inverse Gaussian family is the
inverse squared link.
Available links are inverse_squared, inverse, log, and identity.
See statsmodels.family.links for more information.
Attributes
----------
InverseGaussian.link : a link instance
The link function of the inverse Gaussian instance
InverseGaussian.variance : varfunc instance
`variance` is an instance of statsmodels.family.varfuncs.mu_cubed
See also
--------
statsmodels.genmod.families.family.Family
:ref:`links`
Notes
-----
The inverse Guassian distribution is sometimes referred to in the
literature as the wald distribution.
"""
links = [L.inverse_squared, L.inverse_power, L.identity, L.log]
variance = V.mu_cubed
def __init__(self, link=L.inverse_squared):
self.variance = InverseGaussian.variance
self.link = link()
[docs] def resid_dev(self, endog, mu, scale=1.):
"""
Returns the deviance residuals for the inverse Gaussian family.
Parameters
-----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional argument to divide the residuals by scale
Returns
-------
resid_dev : array
Deviance residuals as defined below
Notes
-----
`dev_resid` = sign(endog-mu)*sqrt((endog-mu)**2/(endog*mu**2))
"""
return np.sign(endog-mu) * np.sqrt((endog-mu)**2/(endog*mu**2))/scale
[docs] def deviance(self, endog, mu, scale=1.):
"""
Inverse Gaussian deviance function
Parameters
-----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional scale argument
Returns
-------
deviance : float
Deviance function as defined below
Notes
-----
`deviance` = sum((endog=mu)**2/(endog*mu**2))
"""
return np.sum((endog-mu)**2/(endog*mu**2))/scale
[docs] def loglike(self, endog, mu, scale=1.):
"""
Loglikelihood function for inverse Gaussian distribution.
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
The default is 1.
Returns
-------
llf : float
The value of the loglikelihood function evaluated at
(endog,mu,scale) as defined below.
Notes
-----
`llf` = -(1/2.)*sum((endog-mu)**2/(endog*mu**2*scale)
+ log(scale*endog**3) + log(2*pi))
"""
return -.5 * np.sum((endog - mu)**2/(endog * mu**2 * scale)
+ np.log(scale * endog**3) + np.log(2 * np.pi))
[docs] def resid_anscombe(self, endog, mu):
"""
The Anscombe residuals for the inverse Gaussian distribution
Parameters
----------
endog : array
Endogenous response variable
mu : array
Fitted mean response variable
Returns
-------
resid_anscombe : array
The Anscombe residuals for the inverse Gaussian distribution as
defined below
Notes
-----
`resid_anscombe` = log(endog/mu)/sqrt(mu)
"""
return np.log(endog/mu)/np.sqrt(mu)
[docs]class NegativeBinomial(Family):
"""
Negative Binomial exponential family.
Parameters
----------
link : a link instance, optional
The default link for the negative binomial family is the log link.
Available links are log, cloglog, identity, nbinom and power.
See statsmodels.family.links for more information.
alpha : float, optional
The ancillary parameter for the negative binomial distribution.
For now `alpha` is assumed to be nonstochastic. The default value
is 1. Permissible values are usually assumed to be between .01 and 2.
Attributes
----------
NegativeBinomial.link : a link instance
The link function of the negative binomial instance
NegativeBinomial.variance : varfunc instance
`variance` is an instance of statsmodels.family.varfuncs.nbinom
See also
--------
statsmodels.genmod.families.family.Family
:ref:`links`
Notes
-----
Power link functions are not yet supported.
"""
links = [L.log, L.cloglog, L.identity, L.nbinom, L.Power]
# TODO: add the ability to use the power links with an if test
# similar to below
variance = V.nbinom
def __init__(self, link=L.log, alpha=1.):
self.alpha = alpha
self.variance = V.NegativeBinomial(alpha=self.alpha)
if isinstance(link, L.NegativeBinomial):
self.link = link(alpha=self.alpha)
else:
self.link = link()
def _clean(self, x):
"""
Helper function to trim the data so that is in (0,inf)
Notes
-----
The need for this function was discovered through usage and its
possible that other families might need a check for validity of the
domain.
"""
return np.clip(x, FLOAT_EPS, np.inf)
[docs] def deviance(self, endog, mu, scale=1.):
r"""
Returns the value of the deviance function.
Parameters
-----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional scale argument
Returns
-------
deviance : float
Deviance function as defined below
Notes
-----
`deviance` = sum(piecewise)
where piecewise is defined as
If :math:`Y_{i} == 0`:
.. math::
piecewise_i = 2\log(1+\alpha*\mu)/\alpha
If :math:`Y_{i} > 0`:
.. math::
piecewise_i = math2 Y \log(Y/\mu)-2/\alpha(1+\alpha Y) * \log((1+\alpha Y)/(1+\alpha\mu))
"""
iszero = np.equal(endog, 0)
notzero = 1 - iszero
tmp = np.zeros(len(endog))
endog_mu = self._clean(endog/mu)
tmp = iszero * 2 * np.log(1 + self.alpha * mu)/self.alpha
tmp += notzero * (2 * endog * np.log(endog_mu) - 2/self.alpha *
(1 + self.alpha*endog) *
np.log((1 + self.alpha * endog) /
(1 + self.alpha * mu)))
return np.sum(tmp)/scale
[docs] def resid_dev(self, endog, mu, scale=1.):
r'''
Negative Binomial Deviance Residual
Parameters
----------
endog : array-like
`endog` is the response variable
mu : array-like
`mu` is the fitted value of the model
scale : float, optional
An optional argument to divide the residuals by scale
Returns
--------
resid_dev : array
The array of deviance residuals
Notes
-----
`resid_dev` = sign(endog-mu) * sqrt(piecewise)
where piecewise is defined as
If :math:`Y_i = 0`:
.. math::
piecewise_i = 2*log(1+alpha*mu)/alpha
If :math:`Y_i > 0`:
.. math::
piecewise_i = 2*Y*log(Y/\mu) - 2/\alpha * (1 + \alpha * Y) * \log((1 + \alpha * Y)/(1 + \alpha * \mu))
'''
iszero = np.equal(endog, 0)
notzero = 1 - iszero
tmp = np.zeros(len(endog))
tmp = iszero * 2 * np.log(1 + self.alpha * mu)/self.alpha
tmp += notzero * (2 * endog * np.log(endog/mu) - 2/self.alpha *
(1 + self.alpha * endog) *
np.log((1 + self.alpha * endog) /
(1 + self.alpha * mu)))
return np.sign(endog - mu) * np.sqrt(tmp)/scale
[docs] def loglike(self, endog, lin_pred=None):
"""
The loglikelihood function for the negative binomial family.
Parameters
----------
endog : array-like
Endogenous response variable
lin_pred : array-like
The linear predictor of the model. This is dot(exog,params),
plus the offset if present.
Returns
-------
llf : float
The value of the loglikelihood function evaluated at
(endog,mu,scale) as defined below.
Notes
-----
sum(endog*log(alpha*exp(lin_pred)/(1+alpha*exp(lin_pred))) -
log(1+alpha*exp(lin_pred))/alpha + constant)
where constant is defined as::
constant = gammaln(endog + 1/alpha) - gammaln(endog + 1) -
gammaln(1/alpha)
"""
# don't need to specify mu
if lin_pred is None:
raise AttributeError('The loglikelihood for the negative binomial'
' requires that the fitted values be '
'provided via the `lin_pred` keyword '
'argument.')
constant = (special.gammaln(endog + 1/self.alpha) -
special.gammaln(endog+1) - special.gammaln(1/self.alpha))
exp_lin_pred = np.exp(lin_pred)
return (np.sum(endog * np.log(self.alpha * exp_lin_pred /
(1 + self.alpha * exp_lin_pred)) -
np.log(1 + self.alpha * exp_lin_pred)/self.alpha + constant))
[docs] def resid_anscombe(self, endog, mu):
"""
The Anscombe residuals for the negative binomial family
Parameters
----------
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
Returns
-------
resid_anscombe : array
The Anscombe residuals as defined below.
Notes
-----
`resid_anscombe` = (hyp2f1(-alpha*endog)-hyp2f1(-alpha*mu)+\
1.5*(endog**(2/3.)-mu**(2/3.)))/(mu+alpha*mu**2)**(1/6.)
where hyp2f1 is the hypergeometric 2f1 function parameterized as
hyp2f1(x) = hyp2f1(2/3.,1/3.,5/3.,x)
"""
hyp2f1 = lambda x : special.hyp2f1(2/3., 1/3., 5/3., x)
return ((hyp2f1(-self.alpha * endog) - hyp2f1(-self.alpha * mu) +
1.5 * (endog**(2/3.)-mu**(2/3.))) /
(mu + self.alpha*mu**2)**(1/6.))


Luga Data was written with extensibility in mind. The common, essential features are available out of the box, for anything else, you can extend and customize.
Whenever you want to write a custom dataSet class, you first have to choose between three different base classes to extend:
For this example we are going to write a custom dataSet to consume tab-separated values (TSV). Since we want to fetch TSV using XHR, we will use luga.data.HttpDataSet as base class.
Let's take a look at the code, one bit at time. First, we ensure our dataSet inherit from luga.data.HttpDataSet.
luga.extend(luga.data.HttpDataSet, this, [options]);
The most important part is the .loadRecords() method. This method is abstract in luga.data.HttpDataSet and must be implemented by any class extending it. It's the method that gets invoked after a successfully XHR request.
We perform a few actions here. We keep a copy of the raw TSV data. Then we use a TSV-specific extractRecords() private method to turn the TSV string into an array of objects/records. Finally, we insert all records at once. This will trigger a "dataChanged" notification and any associated region will reflect the new state:
/**
* Retrieve TSV data from an HTTP response
* @param {luga.xhr.response} response
* @override
*/
this.loadRecords = function(response){
self.rawTsv = response.responseText;
const records = extractRecords(response.responseText);
self.insert(records);
};
There are also a couple more public and private methods, that are specific to TSV. We recommend you to take a look at the complete source code inside luga.data.TsvDataset
Here you can see the dataSet in action, retrieving data from a TSV file.


05/09/14 Thinking styles
Looking at the Gregorian thinking styles, I see a mix of all of them but mainly 'abstract sequential' and 'abstract random' thinking fitting best for me. Stimulating environments and maintaining friendly relationships are important and I know I am growing the most when I have the opportunity to work and learn with others - class mates and instructors. Harmony is therefore important.
At the same time, I am analyzing situations before making a decision and this also requires the opportunity to be/ work alone from time to time. In order to succeed at DBC I'll try to remember why I chose to this path and to remember my goals. I am doing this for me and it is a great chance, a unique opportunity to learn, grow and think differently. DBC is providing the place to achieve it and I will be working with fantastic class mates. We are all facing the same fears. I hope I won't be stuck in bad moments but will be able to remember my motivation that brought me here. And furthermore to identify the source of negative feelings by reflecting my own behaviour, my way of thinking which will at the end also help me understand my colleagues.


Life after
Rye High
Building a career as a developer
Rich Gilbank
Who is this guy?
I like the cut of your jib.
About me
- New Media alum
- Open Source fan
- Software Developer, Entrepreneur
- Burrito enthusiast
wat
- (e)commerce platform
- Founded 2006
- 500k merchants
- Billions in GMV
- Publicly traded on the NYSE, TSX
- Always hiring
Product growth
Experiment → Product → Platform
Garage
- AR / VR
- Web Bluetooth
- Machine Learning
- Gaming / Unity
- Bluetooth Beacons
- Offline sales / Blockchain
Extracurriculars
- NodeSchool Toronto
- FullStack TO
- FITC
- Meetup hosting
So?
How does this help me?
How to get hired
According to this one guy
Clean up your online persona
- Website / portfolio
- Social
- Open Source / pro bono work
Know what's on
your resume
Be prepared
- Have questions in mind
- Ask about the company culture
- Ask about the role(s)
- Ask about growth opportunities
- Ask about the team
- Ask what the best and worst parts of the job are
- Do your research on the company (and the interviewer if possible)
What I look for when hiring
- Resourcefulness
- Communication
- Eagerness to learn
- Care for the business, not just the stack
- (ugh) fit
"85% of your financial success is due to your personality and ability to communicate, negotiate, and lead. Shockingly, only 15% is due to technical knowledge."
—Carnegie Institute of Technology
Stay human
- Bring examples of your best work
- Be prepared to answer how you have or would face adversity
- Explain your thought process
- Don't leave it at "I don't know"
- Learn how to find answers
github.com/h5bp/Front-end-Developer-Interview-Questions
Thanks!
🐦Twitter: @richgilbank
🖥Github: @richgilbank
Questions? 🤷
- Freelance / Contracting
- Startups
- Enterprise work
- Tech stacks
- Agencies
- Salaries
- Stock options
- Interviews
- Jobs
- Burnout
- Ecommerce
- UX
- Development
- Open Source
- Communities, events, networking
- Speaking
- Resources
- Other...


test title
We've auto-chosen a profile image for you.
We've grabbed the following image from the gravatar image associated with your registered e-mail address.
Is it okay to use this photo?
We've grabbed the following image from the gravatar image associated with your registered e-mail address.
Is it okay to use this photo?
| Class | Druid | Hunter | Mage | Paladin | Priest | Rogue | Shaman | Warlock | Warrior |
|---|
| Class | Opponent | Result | DateTime |
|---|


| getArgs :: IO [String] |
| getProgName :: IO String |
However, this is hard-to-impossible to implement on some non-Unix OSes, so instead, for maximum portability, we just return the leafname of the program as invoked. Even then there are some differences between platforms: on Windows, for example, a program invoked as foo is probably really FOO.EXE, and that is what getProgName will return.
| getEnv :: String -> IO String |
This computation may fail with:


{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Medical Record" %}{% endblock %} {% block inner %}
{% trans 'Are you sure you want to delete this medical record?' %}


Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use css3 for animations, and data-attributes for local title storage.
Hover over the links below to see tooltips:
Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral.
Trigger the tooltip via javascript:
$('#example').tooltip(options)
| Name | type | default | description |
|---|---|---|---|
| animation | boolean | true | apply a css fade transition to the tooltip |
| placement | string|function | 'top' | how to position the tooltip - top | bottom | left | right |
| selector | string | false | If a selector is provided, tooltip objects will be delegated to the specified targets. |
| title | string | function | '' | default title value if `title` tag isn't present |
| trigger | string | 'hover' | how tooltip is triggered - hover | focus | manual |
| delay | number | object | 0 |
delay showing and hiding the tooltip (ms) If a number is supplied, delay is applied to both hide/show Object structure is: |
For performance reasons, the Tooltip and Popover data-apis are opt in. If you would like to use them just specify a selector option.
hover over me
Attaches a tooltip handler to an element collection.
Reveals an element's tooltip.
$('#element').tooltip('show')
Hides an element's tooltip.
$('#element').tooltip('hide')
Toggles an element's tooltip.
$('#element').tooltip('toggle')


This is a project to try out coding for Leap Motion in Javascript. I figured a game would be best so I considered a few and decided on a pong game. I wrote this over one evening for fun and will submit it to the 3D Jam contest by Leap Motion. Please note this game needs ES6 Arrow functions and Classes to work. Chrome works out of the box and Edge with Experimental Features Javascript turned on work.


| 16711 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16712 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16713 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
onLocationChanged |
Unknown |
Unknown |
| 16714 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 16715 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 16716 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 16717 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 16718 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 16719 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16720 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 16721 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 16722 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16723 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16724 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16725 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 16726 |
INTERNET |
openConnection |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 16727 |
INTERNET |
openConnection |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 16728 |
INTERNET |
openConnection |
Unknown |
Unknown |
onLocationChanged |
Unknown |
Unknown |
| 16729 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 16730 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 16731 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16732 |
INTERNET |
openConnection |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 16733 |
INTERNET |
openConnection |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 16734 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16735 |
SEND_SMS |
sendTextMessage |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 16736 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 16737 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 16738 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 16739 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 16740 |
READ_PHONE_STATE |
getDeviceId |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 16741 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 16742 |
VIBRATE |
notify |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 16743 |
VIBRATE |
notify |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 16744 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16745 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16746 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 16747 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 16748 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16749 |
READ_PHONE_STATE |
getDeviceId |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 16750 |
READ_PHONE_STATE |
getDeviceId |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 16751 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 16752 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 16753 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16754 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16755 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16756 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 16757 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 16758 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16759 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16760 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16761 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 16762 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 16763 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16764 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16765 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16766 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 16767 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 16768 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16769 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16770 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 16771 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 16772 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 16773 |
INTERNET |
openConnection |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 37467 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37468 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37469 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
onLocationChanged |
Unknown |
Unknown |
| 37470 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 37471 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 37472 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 37473 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 37474 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 37475 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37476 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 37477 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 37478 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37479 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37480 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37481 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 37482 |
INTERNET |
openConnection |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 37483 |
INTERNET |
openConnection |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 37484 |
INTERNET |
openConnection |
Unknown |
Unknown |
onLocationChanged |
Unknown |
Unknown |
| 37485 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 37486 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 37487 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37488 |
INTERNET |
openConnection |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 37489 |
INTERNET |
openConnection |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 37490 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37491 |
SEND_SMS |
sendTextMessage |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 37492 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 37493 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 37494 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 37495 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 37496 |
READ_PHONE_STATE |
getDeviceId |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 37497 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 37498 |
VIBRATE |
notify |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 37499 |
VIBRATE |
notify |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 37500 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37501 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37502 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 37503 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 37504 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37505 |
READ_PHONE_STATE |
getDeviceId |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 37506 |
READ_PHONE_STATE |
getDeviceId |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 37507 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 37508 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 37509 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37510 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37511 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37512 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 37513 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 37514 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37515 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37516 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37517 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 37518 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 37519 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37520 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37521 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37522 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 37523 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 37524 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37525 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37526 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 37527 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 37528 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 37529 |
INTERNET |
openConnection |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 62029 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62030 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62031 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
onLocationChanged |
Unknown |
Unknown |
| 62032 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 62033 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 62034 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 62035 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 62036 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 62037 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62038 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 62039 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 62040 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62041 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62042 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62043 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 62044 |
INTERNET |
openConnection |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 62045 |
INTERNET |
openConnection |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 62046 |
INTERNET |
openConnection |
Unknown |
Unknown |
onLocationChanged |
Unknown |
Unknown |
| 62047 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 62048 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 62049 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62050 |
INTERNET |
openConnection |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 62051 |
INTERNET |
openConnection |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 62052 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62053 |
SEND_SMS |
sendTextMessage |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 62054 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 62055 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 62056 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 62057 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 62058 |
READ_PHONE_STATE |
getDeviceId |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 62059 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 62060 |
VIBRATE |
notify |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 62061 |
VIBRATE |
notify |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 62062 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62063 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62064 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 62065 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 62066 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62067 |
READ_PHONE_STATE |
getDeviceId |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 62068 |
READ_PHONE_STATE |
getDeviceId |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 62069 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 62070 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 62071 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62072 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62073 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62074 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 62075 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 62076 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62077 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62078 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62079 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 62080 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 62081 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62082 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62083 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62084 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 62085 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 62086 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62087 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62088 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 62089 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 62090 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 62091 |
INTERNET |
openConnection |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 78979 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 78980 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 78981 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
onLocationChanged |
Unknown |
Unknown |
| 78982 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 78983 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 78984 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 78985 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 78986 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 78987 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 78988 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 78989 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 78990 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 78991 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 78992 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 78993 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 78994 |
INTERNET |
openConnection |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 78995 |
INTERNET |
openConnection |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 78996 |
INTERNET |
openConnection |
Unknown |
Unknown |
onLocationChanged |
Unknown |
Unknown |
| 78997 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 78998 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 78999 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79000 |
INTERNET |
openConnection |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 79001 |
INTERNET |
openConnection |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 79002 |
INTERNET |
openConnection |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79003 |
SEND_SMS |
sendTextMessage |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 79004 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 79005 |
INTERNET |
<init> |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 79006 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 79007 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 79008 |
READ_PHONE_STATE |
getDeviceId |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |
| 79009 |
READ_PHONE_STATE |
getDeviceId |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 79010 |
VIBRATE |
notify |
service |
onStart |
Unknown |
com.airpush.android.PushServiceStart14387 |
Unknown |
| 79011 |
VIBRATE |
notify |
service |
onStart |
Unknown |
Unknown |
Unknown |
| 79012 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79013 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79014 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 79015 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 79016 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79017 |
READ_PHONE_STATE |
getDeviceId |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 79018 |
READ_PHONE_STATE |
getDeviceId |
Unknown |
Unknown |
Unknown |
Unknown |
onClick |
| 79019 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 79020 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 79021 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79022 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79023 |
ACCESS_NETWORK_STATE |
getActiveNetworkInfo |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79024 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 79025 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 79026 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79027 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79028 |
ACCESS_COARSE_LOCATION |
getLastKnownLocation |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79029 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 79030 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 79031 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79032 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79033 |
ACCESS_COARSE_LOCATION |
requestLocationUpdates |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79034 |
READ_PHONE_STATE |
getDeviceId |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 79035 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
android.intent.action.BOOT_COMPLETED |
Unknown |
| 79036 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79037 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79038 |
READ_PHONE_STATE |
getDeviceId |
receiver |
onReceive |
Unknown |
Unknown |
Unknown |
| 79039 |
INTERNET |
openConnection |
activity |
onCreate |
Unknown |
Unknown |
Unknown |
| 79040 |
INTERNET |
openConnection |
activity |
onResume |
Unknown |
Unknown |
Unknown |
| 79041 |
INTERNET |
openConnection |
activity |
onActivityResult |
Unknown |
Unknown |
Unknown |


User Guide
Interaction with the model is accomplished by invoking the ITMAreadBLoss()
function with the appropriate
arguments. Refer to the API for a description of the arguments.
Here is a simple example:
from pyitm.itm import ITMAreadBLoss
# define arguments
EPS = 15.0
SGM = 0.005
EN0 = 301.0
ModVar = 2
deltaH = 90.0
tht_m = 10.0
rht_m = 1.0
TSiteCriteria = 1
RSiteCriteria = 0
radio_climate = 5
pol = 1
pctTime = 0.7
pctLoc = 0.5
pctConf = 0.90
dist_km = 10.0
frq_mhz = 100.0
dbloss = ITMAreadBLoss(ModVar, deltaH, tht_m, rht_m, dist_km,
TSiteCriteria, RSiteCriteria, EPS, SGM, EN0,
frq_mhz, radio_climate, pol, pctTime, pctLoc, pctConf)
print("dbloss: {}dB".format(round(dbloss, 2)))
System Parameters
Frequency
The model is valid for frequencies between 20MHz and 20GHz. Frequency parameter is expressed in units of MHz.
Distance
The model is valid for distances between 1km and 2000km. The distance parameter is expressed in km and represents the great circle distance between the transmit and received antenna.
Antenna Heights (rht_m, tht_m)
The antenna heigh parameters are expressed in m and represent the center of the radiation above the ground. The model is valid for antenna heights in the range 0.5-3000m.
Polarization
The model assumes the antenna polarization is the same for both of the receive and transmit antennas. The polarization argument must be one of the following values:
Polarization |
Value |
Horizontal |
0 |
Vertical |
1 |
Environmental Parameters
Terrain Irregularity Parameter (deltaH)
This parameter is used to characterize the random irregularities in the height of the terrain between the transmit and receive antenna should represent the interdecile range of the terrain elevations (top and bottom 10% of values removed). Suggested values for classes of terrain topography are listed below.
Terrain |
deltaH |
Flat (or smooth water) |
0 |
Plains |
30 |
Hills |
90 |
Mountains |
200 |
Rugged mountains |
500 |
Average terrain should use a value of 90.
Electrical Ground Constants (EPS, SGM)
Suggested values for the relative permittivity and conductivity of earth are presribed below.
Condition |
Relative Permittivity |
Conductivity |
Average ground |
15 |
0.005 |
Poor ground |
4 |
0.001 |
Good ground |
25 |
0.020 |
Fresh water |
81 |
0.010 |
Sea water |
81 |
5.0 |
For most purposes, use the constants for average ground.
Surface Refractivity and Climate
The surface refractivity represents the normal value of refractivity near the ground (surface) and is measured in N-units (parts per million). The model also uses a qualitative radio_climate argument to characterize the atmosphere and its variability in time. The model recognizes specific enumerated climate categories and the associated surface refractivity is given in the table below.
Climate |
Surface Refractivity (Ns) |
radio_climate |
Equatorial (Congo) |
360 |
1 |
Continental Subtropical (Sudan) |
320 |
2 |
Maritime Subtropical (West Coast of Africa) |
370 |
3 |
Desert (Sahara) |
280 |
4 |
Continental Temperate |
301 |
5 |
Maritime Temperate, over land |
320 |
6 |
Maritime Temperate, over sea |
350 |
7 |
The Surface refractivity value must be in the range 250-400.
Deployment Parameters
Siting Criteria
The Siting Criteria is a qualitative assessment used for the RSiteCriteria and TSiteCriteria model arguments to describe the quality of antenna deployment. The three valid enumerations for siting criteria are listed in the table below.
Siting Criteria |
Value |
Random |
0 |
Careful |
1 |
Very Careful |
2 |
When most of the terminals are sited on high ground with some effort to locate them where signals appear strong, we say the siting is very careful. When terminals are located at elevated sites but no attempt has been made to specifically select hilltops or other advantaged points where signals are strong, we would classify it as a careful site. If there is an equal chance that the terminal siting could be good or poor, we classify it as random.
Statistical Parameters
Time, Location, and confidence
There are 3 model arguments that are used to characterize the parameter reliability of the system. Each of these arguments are expressed as floating point values in the range 0.01-0.99 and represent the reliability or confidence interval percentage.
time: Percentage of time the system is expected to operate. Note that this should represent long-term availability and not short term fluctuations in service due to fading.
Location: Percentage of locations in which the receiver is expected to operate
Confidence: Confidence level of the returned channel attenuation values.
Model variability
This is a brief explanation of the statistical parameters used in the model. For a more complete discussion on the topic, refer to the ITU documentation referenced at the bottom of the page. The model variability argument can take on 1 of 4 enumerated values which dictate how the underlying statistical parameters of the model are treated. The model considers the 1st order statistics to be related to Time, Location, and Situation reliability. The confidence intervals are related to these individual (or combined) reliability parameters.
[0] Single Message Mode: This mode combines all 3 kinds of variability into a one-dimensional random variable. The time and location reliability percentage arguments are not used in this mode. The system is only characterized by the confidence level argument. For example, a system operating in this mode can be described as “There is a 95% probability that the channel attenuation is 87.4dB”.
[1] Individual Mode: This mode combines situation and location variability into a single variable and treats time variability seperately. The location argument is ignored. Here, the Time reliability argument means time availability and the confidence measures the combined situation/location variability. In this mode, you could say something like “For at least 70% of the time, there is a 90% probability that the channel attenuation is 50.7dB”.
[2] Mobile Mode: This mode combines location and time variability since for a mobile node location is a function of time. The location argument is ignored. Reliability means Time/location variability and the confidence measures situation variability. In this mode, you could say “For at least 80% of the time there is a probability that 95% of like situations will have a channel loss of 100.9dB”.
[3] Broadcast Mode: All 3 kinds of variability are treated seperately. In this mode, you could say “In 90% of like situation there will be at least 70% of the locations where the attenuation will not exceed 32.6dB for at least 95% of the time”.
Sources


With the (Random number) pick of the (random year) NHL draft.... the (Random Team) select (Name) from (Country)
Created by Start Bootstrap