{"action":"created","comment":{"url":"https://api.github.com/repos/statsmodels/statsmodels/pulls/comments/69267507","id":69267507,"diff_hunk":"@@ -261,85 +280,263 @@ def var_loglike(resid, omega, nobs):\n \n     .. math::\n \n-        -\\left(\\frac{T}{2}\\right)\n-        \\left(\\ln\\left|\\Omega\\right|-K\\ln\\left(2\\pi\\right)-K\\right)\n+       -\\left(\\frac{nobs}{2}\\right)\n+       \\left(\\ln\\left|cov_sigma_mle\\right|-neqs\\ln\\left(2\\pi\\right)-neqs\\right)\n     \"\"\"\n-    logdet = logdet_symm(np.asarray(omega))\n-    neqs = len(omega)\n+\n+    logdet = logdet_symm(np.asarray(cov_resid_mle))\n+    neqs = len(cov_resid_mle)\n     part1 = - (nobs * neqs / 2) * np.log(2 * np.pi)\n     part2 = - (nobs / 2) * (logdet + neqs)\n     return part1 + part2\n \n def _reordered(self, order):\n     #Create new arrays to hold rearranged results from .fit()\n-    endog = self.endog\n-    endog_lagged = self.endog_lagged\n+    Y = self.Y\n+    # X are the lagged endogenous variables\n+    X = self.X\n     params = self.params\n-    sigma_u = self.sigma_u\n-    names = self.names\n+    cov_resid = self.cov_resid\n+    names = self.model.endog_names\n     k_ar = self.k_ar\n-    endog_new = np.zeros([np.size(endog,0),np.size(endog,1)])\n-    endog_lagged_new = np.zeros([np.size(endog_lagged,0), np.size(endog_lagged,1)])\n-    params_new_inc, params_new = [np.zeros([np.size(params,0), np.size(params,1)])\n-                                  for i in range(2)]\n-    sigma_u_new_inc, sigma_u_new = [np.zeros([np.size(sigma_u,0), np.size(sigma_u,1)])\n-                                    for i in range(2)]\n-    num_end = len(self.params[0])\n+    k_trend = self.k_trend\n+    neqs = self.neqs\n+    Y_reordered = np.zeros([np.size(Y,0),np.size(Y,1)])\n+    X_reordered = np.zeros([np.size(X, 0),\n+                                 np.size(X, 1)])\n+    params_reordered_inc, params_reordered = [np.zeros([np.size(params,0),\n+                                        np.size(params,1)]) for i in range(2)]\n+    cov_resid_reordered_inc, cov_resid_reordered = [np.zeros([np.size(cov_resid,0),\n+                                    np.size(cov_resid,1)]) for i in range(2)]\n+\n     names_new = []\n \n     #Rearrange elements and fill in new arrays\n-    k = self.k_trend\n     for i, c in enumerate(order):\n-        endog_new[:,i] = self.endog[:,c]\n-        if k > 0:\n-            params_new_inc[0,i] = params[0,i]\n-            endog_lagged_new[:,0] = endog_lagged[:,0]\n+        Y_reordered[:,i] = Y[:,c]\n+        if k_trend > 0:\n+            params_reordered_inc[0,i] = params[0,i]\n+            X_reordered[:,0] = X[:,0]\n         for j in range(k_ar):\n-            params_new_inc[i+j*num_end+k,:] = self.params[c+j*num_end+k,:]\n-            endog_lagged_new[:,i+j*num_end+k] = endog_lagged[:,c+j*num_end+k]\n-        sigma_u_new_inc[i,:] = sigma_u[c,:]\n+            params_reordered_inc[i + j*neqs + k_trend, :] = params[c + j * neqs +\n+                                                                    k_trend, :]\n+            X_reordered[:,i + j*neqs + k_trend] = X[:, c + j * neqs + k_trend]\n+        cov_resid_reordered_inc[i,:] = cov_resid[c,:]\n         names_new.append(names[c])\n     for i, c in enumerate(order):\n-        params_new[:,i] = params_new_inc[:,c]\n-        sigma_u_new[:,i] = sigma_u_new_inc[:,c]\n+        params_reordered[:,i] = params_reordered_inc[:,c]\n+        cov_resid_reordered[:,i] = cov_resid_reordered_inc[:,c]\n+\n+    #TODO: reset cached names and do this at data level?\n+    #What's the best way to achieve this? We can't just return self.model\n+    # right?\n+    self.endog_names = names_new\n+    names_new = util.make_lag_names(names_new, k_ar, k_trend)\n+    return VARResults(self.model, Y_reordered, X_reordered, params_reordered,\n+                      cov_resid_reordered, k_ar, names_new)\n+\n+_var_math_doc = \"\"\"\n+    .. math::\n \n-    return VARResults(endog=endog_new, endog_lagged=endog_lagged_new,\n-                      params=params_new, sigma_u=sigma_u_new,\n-                      lag_order=self.k_ar, model=self.model,\n-                      trend='c', names=names_new, dates=self.dates)\n+       y_t = A_1 y_{t-1} + \\\\ldots + A_p y_{t-p} + u_t\n \n-#-------------------------------------------------------------------------------\n-# VARProcess class: for known or unknown VAR process\n+    where\n \n-class VAR(tsbase.TimeSeriesModel):\n-    r\"\"\"\n+    .. math::\n+\n+       u_t \\sim {\\sf Normal}(0, \\Sigma_u)\"\"\"\n+\n+_var_model_doc = \"\"\"\n     Fit VAR(p) process and do lag order selection\n \n-    .. math:: y_t = A_1 y_{t-1} + \\ldots + A_p y_{t-p} + u_t\n+    \"\"\" + _var_math_doc\n \n-    Parameters\n-    ----------\n-    endog : array-like\n+_var_params_doc = \"\"\"Y : array-like\n         2-d endogenous response variable. The independent variable.\n     dates : array-like\n         must match number of rows of endog\n+    nlags : int\n+        The number of lags to use in the model fitting.\n+    names : array-like\n+        Names is deprecated. Use a DataFrame or a structured array to give\n+        names to VAR. Must match number of columns of endog\"\"\"\n \n+\n+_var_reference_doc = \"\"\"\n     References\n     ----------\n-    Lutkepohl (2005) New Introduction to Multiple Time Series Analysis\n+    Lutkepohl (2005) New Introduction to Multiple Time Series Analysis\"\"\"\n+\n+def _get_info_criteria(cov_resid_mle, nobs, neqs, k_ar, k_trend):\n+    free_params = k_ar * neqs ** 2 + neqs * k_trend\n+    df_resid = nobs - (neqs * k_ar + k_trend)\n+    df_model = neqs * k_ar + k_trend\n+    ld = util.get_logdet(cov_resid_mle)\n+\n+    # See Lutkepohl pp. 146-150\n+\n+    aic = ld + (2. / nobs) * free_params\n+    bic = ld + (np.log(nobs) / nobs) * free_params\n+    hqic = ld + (2. * np.log(np.log(nobs)) / nobs) * free_params\n+    fpe = ((nobs + df_model) / df_resid) ** neqs * np.exp(ld)\n+    return aic, bic, hqic, fpe\n+\n+def _estimate_var_ic(Y, k_ar, k_trend, trim=0, trend='c'):\n+    \"\"\"\n+    Helper function to fit VAR that aids in lag order selection\n+\n+    Y is expected to be an array.\n+    trim is number of variables to trim from the beginning of Y. It's used\n+    so that the ICs are comparable across fits with different lags.\n+    \"\"\"\n+    Y = Y[trim:]\n+    X = util.get_lagged_y(Y, k_ar, trend=trend)\n+    Y_sample = Y[k_ar:]\n+\n+    #TODO check -QR is O(k**3) and SVD is O(nobs*k**2)\n+    params = np.linalg.lstsq(X, Y_sample)[0]\n+    resid = Y_sample - np.dot(X, params)\n+\n+    nobs, neqs = Y_sample.shape\n+\n+    # MLE estimate of covariance matrix of residuals\n+    cov_resid_mle = np.dot(resid.T, resid) / nobs\n+    return _get_info_criteria(cov_resid_mle, nobs, neqs, k_ar, k_trend)\n+\n+def select_order_fit(Y, maxlags=None, ic=\"aic\", trend=\"c\", verbose=False):\n+    \"\"\"\n+    Return results from the best lag order according to information criterion\n+\n+    Parameters\n+    ----------\n+    Y : array-like\n+        The endogenous variables\n+    maxlags : int\n+        Maximum number of lags to check for order selection, defaults to\n+        12 * (nobs/100.)**(1./4), see select_order function\n+    ic : {'aic', 'fpe', 'hqic', 'bic', None}\n+        Information criterion to use for VAR order selection:\n+\n+        * aic : Akaike\n+        * fpe : Final prediction error\n+        * hqic : Hannan-Quinn\n+        * bic : Bayesian a.k.a. Schwarz\n+    trend : str {\"c\", \"ct\", \"ctt\", \"nc\"}\n+        Available options are:\n+\n+        * \"c\" - add constant\n+        * \"ct\" - constant and trend\n+        * \"ctt\" - constant, linear and quadratic trend\n+        * \"nc\" - co constant, no trend\n+\n+        Note that these are prepended to the columns of X.\n+    verbose : bool\n+        Print order selection output to the screen. Default is False.\n+\n+    Returns\n+    -------\n+    fitted : VARResults\n+        A VARResults instance using the best lag order indicated by `ic`.\n     \"\"\"\n-    def __init__(self, endog, dates=None, freq=None, missing='none'):\n-        super(VAR, self).__init__(endog, None, dates, freq, missing=missing)\n+    Y_array = np.asarray(Y)\n+    if data_util._is_structured_ndarray(Y_array):\n+        Y_array = Y_array.view((float, len(Y_array.dtype)))\n+\n+    if maxlags is None:\n+        maxlags = int(round(12*(len(Y)/100.)**(1/4.)))\n+\n+    k_trend = util.get_trendorder(trend)\n+    ics = defaultdict(list)\n+    for k_ar in range(maxlags + 1):\n+        # exclude some periods so same nobs used for each lag order\n+        res = _estimate_var_ic(Y_array, k_ar, k_trend, trim=maxlags - k_ar,\n+                               trend=trend)\n+        ics[\"aic\"].append(res[0])\n+        ics[\"bic\"].append(res[1])\n+        ics[\"hqic\"].append(res[2])\n+        ics[\"fpe\"].append(res[3])\n+\n+    selected_orders = dict((k, mat(v).argmin())\n+                           for k, v in ics.iteritems())\n+    try:\n+        nlags = selected_orders[ic]\n+    except:\n+        KeyError(\"ic %s is not understood\" % ic)\n+    return VAR(Y, nlags).fit(trend=trend)\n+\n+class VAR(tsbase.TimeSeriesModel):\n+    __doc__ = tsbase._tsa_doc % {\"model\" : _var_model_doc,\n+                                 \"params\" : _var_params_doc,\n+                                 \"extra_params\" : tsbase._missing_param_doc,\n+                                 \"extra_sections\" : _var_reference_doc}\n+    def __init__(self, Y, nlags=None, dates=None, names=None, freq=None,\n+                 missing='none'):\n+        if nlags is None:\n+            from warnings import warn\n+            warn(\"In the 0.6.0 release nlags will not be optional in the \"\n+                 \"model constructor.\", FutureWarning)\n+        else:\n+            self.k_ar = nlags\n+        super(VAR, self).__init__(Y, None, dates, freq, missing=missing)\n         if self.endog.ndim == 1:\n-            raise ValueError(\"Only gave one variable to VAR\")\n-        self.y = self.endog #keep alias for now\n-        self.neqs = self.endog.shape[1]\n+            raise ValueError(\"Only one variable given to VAR. Expects > 1.\")\n+        if names is not None:\n+            import warnings\n+            warnings.warn(\"The names argument is deprecated and will be \"\n+                          \"removed in 0.6.0. Use a pandas object or structured \"\n+                          \"array for names.\", FutureWarning)\n+            self.names = names\n+        else:\n+            self.names = self.endog_names\n+        self.Y = self.endog #keep alias for now\n+        self.neqs = self.Y.shape[1]\n+\n \n     def _get_predict_start(self, start, k_ar):\n         if start is None:\n             start = k_ar\n         return super(VAR, self)._get_predict_start(start)\n \n+    def loglike(self, params, k_ar=None):\n+        r\"\"\"\n+        Returns the value of the VAR(p) log-likelihood.\n+\n+        Parameters\n+        ----------\n+        params : ndarray\n+            The parameters in the order given in VARResults.\n+        k_ar : int, optional\n+            The number of lags if the equation has not yet been fit.\n+\n+        Returns\n+        -------\n+        llf : float\n+            The value of the loglikelihood function for a VAR(p) model\n+\n+        Notes\n+        -----\n+        The loglikelihood function for the VAR(p) is\n+\n+        .. math::\n+\n+           -\\left(\\frac{nobs}{2}\\right)\n+           \\left(\\ln\\left|cov_sigma_mle\\right|-neqs\\ln\\left(2\\pi\\right)-neqs\\right)\n+        \"\"\"\n+        if k_ar is None:\n+            try:\n+                k_ar = self.k_ar\n+            except:\n+                raise ValueError(\"Must give k_ar, if the model has not been \"\n+                                 \"fit\")\n+\n+        Y_sample = self.Y[k_ar:]\n+        nobs = len(Y_sample)\n+        X = util.get_lagged_y(Y, k_ar, trend=trend)","path":"statsmodels/tsa/vector_ar/var_model.py","position":419,"original_position":419,"commit_id":"a04dcbbfb50bba91191ef2f67303db4bd00fa5b3","original_commit_id":"a04dcbbfb50bba91191ef2f67303db4bd00fa5b3","user":{"login":"josef-pkt","id":440735,"avatar_url":"https://avatars.githubusercontent.com/u/440735?v=3","gravatar_id":"","url":"https://api.github.com/users/josef-pkt","html_url":"https://github.com/josef-pkt","followers_url":"https://api.github.com/users/josef-pkt/followers","following_url":"https://api.github.com/users/josef-pkt/following{/other_user}","gists_url":"https://api.github.com/users/josef-pkt/gists{/gist_id}","starred_url":"https://api.github.com/users/josef-pkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josef-pkt/subscriptions","organizations_url":"https://api.github.com/users/josef-pkt/orgs","repos_url":"https://api.github.com/users/josef-pkt/repos","events_url":"https://api.github.com/users/josef-pkt/events{/privacy}","received_events_url":"https://api.github.com/users/josef-pkt/received_events","type":"User","site_admin":false},"body":"why is this in loglike?\r\nwe should create `lagged_endog` or `regressors` only once","created_at":"2016-07-01T08:41:27Z","updated_at":"2016-07-01T08:41:27Z","html_url":"https://github.com/statsmodels/statsmodels/pull/3028#discussion_r69267507","pull_request_url":"https://api.github.com/repos/statsmodels/statsmodels/pulls/3028","_links":{"self":{"href":"https://api.github.com/repos/statsmodels/statsmodels/pulls/comments/69267507"},"html":{"href":"https://github.com/statsmodels/statsmodels/pull/3028#discussion_r69267507"},"pull_request":{"href":"https://api.github.com/repos/statsmodels/statsmodels/pulls/3028"}}},"pull_request":{"url":"https://api.github.com/repos/statsmodels/statsmodels/pulls/3028","id":74180123,"html_url":"https://github.com/statsmodels/statsmodels/pull/3028","diff_url":"https://github.com/statsmodels/statsmodels/pull/3028.diff","patch_url":"https://github.com/statsmodels/statsmodels/pull/3028.patch","issue_url":"https://api.github.com/repos/statsmodels/statsmodels/issues/3028","number":3028,"state":"open","locked":false,"title":"Var cleanup rebased","user":{"login":"josef-pkt","id":440735,"avatar_url":"https://avatars.githubusercontent.com/u/440735?v=3","gravatar_id":"","url":"https://api.github.com/users/josef-pkt","html_url":"https://github.com/josef-pkt","followers_url":"https://api.github.com/users/josef-pkt/followers","following_url":"https://api.github.com/users/josef-pkt/following{/other_user}","gists_url":"https://api.github.com/users/josef-pkt/gists{/gist_id}","starred_url":"https://api.github.com/users/josef-pkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josef-pkt/subscriptions","organizations_url":"https://api.github.com/users/josef-pkt/orgs","repos_url":"https://api.github.com/users/josef-pkt/repos","events_url":"https://api.github.com/users/josef-pkt/events{/privacy}","received_events_url":"https://api.github.com/users/josef-pkt/received_events","type":"User","site_admin":false},"body":"rebased version of #815  Skipper's VAR cleanup\r\n\r\nsee original PR for TODO and DONE list for this PR\r\nsee #2274 for a SUMM issue for VAR cleanup\r\n\r\nmany manually edited merge conflicts (many of the merge conflicts were in view numpy compatibility, adding type keyword, compatibility fixes by Pierre)\r\n\r\nI cannot run the entire tests right now because matplotlib segfaults on my computer, in this case in `statsmodels.tsa.vector_ar.tests.test_var.TestVARResults.test_plot_cum_effects`\r\n\r\n\r\ncode analysis in Eclipse/PyDev still shows several red lines, i.e. bugs.\r\n\r\nThis should be compared to statespace VARMAX for consistency, especially names and shapes.\r\n\r\nDo we have a glossary for names used in VAR? e.g. attributes for AR part and for deterministic/trend/exog and for combined/all regressors.\r\n\r\nextras\r\n\r\n`wald_test_terms` would be useful to test for lags or for variables (like granger causality)\r\nt_test is still NotImplementedError: possible solution: reshape params, call super, reshape back (reshape needs to match cov_params)\r\n","created_at":"2016-06-17T02:16:57Z","updated_at":"2016-07-01T08:41:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6967d0c6abf653ae1e4be0b895019b3461100913","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/statsmodels/statsmodels/milestones/10","html_url":"https://github.com/statsmodels/statsmodels/milestones/0.9","labels_url":"https://api.github.com/repos/statsmodels/statsmodels/milestones/10/labels","id":1362664,"number":10,"title":"0.9","description":"The milestone is currently for a rough roadmap","creator":{"login":"josef-pkt","id":440735,"avatar_url":"https://avatars.githubusercontent.com/u/440735?v=3","gravatar_id":"","url":"https://api.github.com/users/josef-pkt","html_url":"https://github.com/josef-pkt","followers_url":"https://api.github.com/users/josef-pkt/followers","following_url":"https://api.github.com/users/josef-pkt/following{/other_user}","gists_url":"https://api.github.com/users/josef-pkt/gists{/gist_id}","starred_url":"https://api.github.com/users/josef-pkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josef-pkt/subscriptions","organizations_url":"https://api.github.com/users/josef-pkt/orgs","repos_url":"https://api.github.com/users/josef-pkt/repos","events_url":"https://api.github.com/users/josef-pkt/events{/privacy}","received_events_url":"https://api.github.com/users/josef-pkt/received_events","type":"User","site_admin":false},"open_issues":33,"closed_issues":2,"state":"open","created_at":"2015-10-18T23:31:11Z","updated_at":"2016-06-25T23:07:25Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/statsmodels/statsmodels/pulls/3028/commits","review_comments_url":"https://api.github.com/repos/statsmodels/statsmodels/pulls/3028/comments","review_comment_url":"https://api.github.com/repos/statsmodels/statsmodels/pulls/comments{/number}","comments_url":"https://api.github.com/repos/statsmodels/statsmodels/issues/3028/comments","statuses_url":"https://api.github.com/repos/statsmodels/statsmodels/statuses/a04dcbbfb50bba91191ef2f67303db4bd00fa5b3","head":{"label":"josef-pkt:var_cleanup_rebased","ref":"var_cleanup_rebased","sha":"a04dcbbfb50bba91191ef2f67303db4bd00fa5b3","user":{"login":"josef-pkt","id":440735,"avatar_url":"https://avatars.githubusercontent.com/u/440735?v=3","gravatar_id":"","url":"https://api.github.com/users/josef-pkt","html_url":"https://github.com/josef-pkt","followers_url":"https://api.github.com/users/josef-pkt/followers","following_url":"https://api.github.com/users/josef-pkt/following{/other_user}","gists_url":"https://api.github.com/users/josef-pkt/gists{/gist_id}","starred_url":"https://api.github.com/users/josef-pkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josef-pkt/subscriptions","organizations_url":"https://api.github.com/users/josef-pkt/orgs","repos_url":"https://api.github.com/users/josef-pkt/repos","events_url":"https://api.github.com/users/josef-pkt/events{/privacy}","received_events_url":"https://api.github.com/users/josef-pkt/received_events","type":"User","site_admin":false},"repo":{"id":1885313,"name":"statsmodels","full_name":"josef-pkt/statsmodels","owner":{"login":"josef-pkt","id":440735,"avatar_url":"https://avatars.githubusercontent.com/u/440735?v=3","gravatar_id":"","url":"https://api.github.com/users/josef-pkt","html_url":"https://github.com/josef-pkt","followers_url":"https://api.github.com/users/josef-pkt/followers","following_url":"https://api.github.com/users/josef-pkt/following{/other_user}","gists_url":"https://api.github.com/users/josef-pkt/gists{/gist_id}","starred_url":"https://api.github.com/users/josef-pkt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josef-pkt/subscriptions","organizations_url":"https://api.github.com/users/josef-pkt/orgs","repos_url":"https://api.github.com/users/josef-pkt/repos","events_url":"https://api.github.com/users/josef-pkt/events{/privacy}","received_events_url":"https://api.github.com/users/josef-pkt/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/josef-pkt/statsmodels","description":"main repo of statsmodels","fork":true,"url":"https://api.github.com/repos/josef-pkt/statsmodels","forks_url":"https://api.github.com/repos/josef-pkt/statsmodels/forks","keys_url":"https://api.github.com/repos/josef-pkt/statsmodels/keys{/key_id}","collaborators_url":"https://api.github.com/repos/josef-pkt/statsmodels/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/josef-pkt/statsmodels/teams","hooks_url":"https://api.github.com/repos/josef-pkt/statsmodels/hooks","issue_events_url":"https://api.github.com/repos/josef-pkt/statsmodels/issues/events{/number}","events_url":"https://api.github.com/repos/josef-pkt/statsmodels/events","assignees_url":"https://api.github.com/repos/josef-pkt/statsmodels/assignees{/user}","branches_url":"https://api.github.com/repos/josef-pkt/statsmodels/branches{/branch}","tags_url":"https://api.github.com/repos/josef-pkt/statsmodels/tags","blobs_url":"https://api.github.com/repos/josef-pkt/statsmodels/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/josef-pkt/statsmodels/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/josef-pkt/statsmodels/git/refs{/sha}","trees_url":"https://api.github.com/repos/josef-pkt/statsmodels/git/trees{/sha}","statuses_url":"https://api.github.com/repos/josef-pkt/statsmodels/statuses/{sha}","languages_url":"https://api.github.com/repos/josef-pkt/statsmodels/languages","stargazers_url":"https://api.github.com/repos/josef-pkt/statsmodels/stargazers","contributors_url":"https://api.github.com/repos/josef-pkt/statsmodels/contributors","subscribers_url":"https://api.github.com/repos/josef-pkt/statsmodels/subscribers","subscription_url":"https://api.github.com/repos/josef-pkt/statsmodels/subscription","commits_url":"https://api.github.com/repos/josef-pkt/statsmodels/commits{/sha}","git_commits_url":"https://api.github.com/repos/josef-pkt/statsmodels/git/commits{/sha}","comments_url":"https://api.github.com/repos/josef-pkt/statsmodels/comments{/number}","issue_comment_url":"https://api.github.com/repos/josef-pkt/statsmodels/issues/comments{/number}","contents_url":"https://api.github.com/repos/josef-pkt/statsmodels/contents/{+path}","compare_url":"https://api.github.com/repos/josef-pkt/statsmodels/compare/{base}...{head}","merges_url":"https://api.github.com/repos/josef-pkt/statsmodels/merges","archive_url":"https://api.github.com/repos/josef-pkt/statsmodels/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/josef-pkt/statsmodels/downloads","issues_url":"https://api.github.com/repos/josef-pkt/statsmodels/issues{/number}","pulls_url":"https://api.github.com/repos/josef-pkt/statsmodels/pulls{/number}","milestones_url":"https://api.github.com/repos/josef-pkt/statsmodels/milestones{/number}","notifications_url":"https://api.github.com/repos/josef-pkt/statsmodels/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/josef-pkt/statsmodels/labels{/name}","releases_url":"https://api.github.com/repos/josef-pkt/statsmodels/releases{/id}","deployments_url":"https://api.github.com/repos/josef-pkt/statsmodels/deployments","created_at":"2011-06-12T17:30:37Z","updated_at":"2015-11-25T10:06:25Z","pushed_at":"2016-06-28T11:47:20Z","git_url":"git://github.com/josef-pkt/statsmodels.git","ssh_url":"git@github.com:josef-pkt/statsmodels.git","clone_url":"https://github.com/josef-pkt/statsmodels.git","svn_url":"https://github.com/josef-pkt/statsmodels","homepage":"statsmodels","size":25401,"stargazers_count":9,"watchers_count":9,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":15,"mirror_url":null,"open_issues_count":1,"forks":15,"open_issues":1,"watchers":9,"default_branch":"master"}},"base":{"label":"statsmodels:master","ref":"master","sha":"8e445c1b994259f40471a0585d90f24bc3f37694","user":{"login":"statsmodels","id":717666,"avatar_url":"https://avatars.githubusercontent.com/u/717666?v=3","gravatar_id":"","url":"https://api.github.com/users/statsmodels","html_url":"https://github.com/statsmodels","followers_url":"https://api.github.com/users/statsmodels/followers","following_url":"https://api.github.com/users/statsmodels/following{/other_user}","gists_url":"https://api.github.com/users/statsmodels/gists{/gist_id}","starred_url":"https://api.github.com/users/statsmodels/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/statsmodels/subscriptions","organizations_url":"https://api.github.com/users/statsmodels/orgs","repos_url":"https://api.github.com/users/statsmodels/repos","events_url":"https://api.github.com/users/statsmodels/events{/privacy}","received_events_url":"https://api.github.com/users/statsmodels/received_events","type":"Organization","site_admin":false},"repo":{"id":1885237,"name":"statsmodels","full_name":"statsmodels/statsmodels","owner":{"login":"statsmodels","id":717666,"avatar_url":"https://avatars.githubusercontent.com/u/717666?v=3","gravatar_id":"","url":"https://api.github.com/users/statsmodels","html_url":"https://github.com/statsmodels","followers_url":"https://api.github.com/users/statsmodels/followers","following_url":"https://api.github.com/users/statsmodels/following{/other_user}","gists_url":"https://api.github.com/users/statsmodels/gists{/gist_id}","starred_url":"https://api.github.com/users/statsmodels/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/statsmodels/subscriptions","organizations_url":"https://api.github.com/users/statsmodels/orgs","repos_url":"https://api.github.com/users/statsmodels/repos","events_url":"https://api.github.com/users/statsmodels/events{/privacy}","received_events_url":"https://api.github.com/users/statsmodels/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/statsmodels/statsmodels","description":"Statsmodels: statistical modeling and econometrics in Python","fork":false,"url":"https://api.github.com/repos/statsmodels/statsmodels","forks_url":"https://api.github.com/repos/statsmodels/statsmodels/forks","keys_url":"https://api.github.com/repos/statsmodels/statsmodels/keys{/key_id}","collaborators_url":"https://api.github.com/repos/statsmodels/statsmodels/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/statsmodels/statsmodels/teams","hooks_url":"https://api.github.com/repos/statsmodels/statsmodels/hooks","issue_events_url":"https://api.github.com/repos/statsmodels/statsmodels/issues/events{/number}","events_url":"https://api.github.com/repos/statsmodels/statsmodels/events","assignees_url":"https://api.github.com/repos/statsmodels/statsmodels/assignees{/user}","branches_url":"https://api.github.com/repos/statsmodels/statsmodels/branches{/branch}","tags_url":"https://api.github.com/repos/statsmodels/statsmodels/tags","blobs_url":"https://api.github.com/repos/statsmodels/statsmodels/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/statsmodels/statsmodels/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/statsmodels/statsmodels/git/refs{/sha}","trees_url":"https://api.github.com/repos/statsmodels/statsmodels/git/trees{/sha}","statuses_url":"https://api.github.com/repos/statsmodels/statsmodels/statuses/{sha}","languages_url":"https://api.github.com/repos/statsmodels/statsmodels/languages","stargazers_url":"https://api.github.com/repos/statsmodels/statsmodels/stargazers","contributors_url":"https://api.github.com/repos/statsmodels/statsmodels/contributors","subscribers_url":"https://api.github.com/repos/statsmodels/statsmodels/subscribers","subscription_url":"https://api.github.com/repos/statsmodels/statsmodels/subscription","commits_url":"https://api.github.com/repos/statsmodels/statsmodels/commits{/sha}","git_commits_url":"https://api.github.com/repos/statsmodels/statsmodels/git/commits{/sha}","comments_url":"https://api.github.com/repos/statsmodels/statsmodels/comments{/number}","issue_comment_url":"https://api.github.com/repos/statsmodels/statsmodels/issues/comments{/number}","contents_url":"https://api.github.com/repos/statsmodels/statsmodels/contents/{+path}","compare_url":"https://api.github.com/repos/statsmodels/statsmodels/compare/{base}...{head}","merges_url":"https://api.github.com/repos/statsmodels/statsmodels/merges","archive_url":"https://api.github.com/repos/statsmodels/statsmodels/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/statsmodels/statsmodels/downloads","issues_url":"https://api.github.com/repos/statsmodels/statsmodels/issues{/number}","pulls_url":"https://api.github.com/repos/statsmodels/statsmodels/pulls{/number}","milestones_url":"https://api.github.com/repos/statsmodels/statsmodels/milestones{/number}","notifications_url":"https://api.github.com/repos/statsmodels/statsmodels/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/statsmodels/statsmodels/labels{/name}","releases_url":"https://api.github.com/repos/statsmodels/statsmodels/releases{/id}","deployments_url":"https://api.github.com/repos/statsmodels/statsmodels/deployments","created_at":"2011-06-12T17:04:50Z","updated_at":"2016-06-29T21:01:02Z","pushed_at":"2016-06-30T21:38:47Z","git_url":"git://github.com/statsmodels/statsmodels.git","ssh_url":"git@github.com:statsmodels/statsmodels.git","clone_url":"https://github.com/statsmodels/statsmodels.git","svn_url":"https://github.com/statsmodels/statsmodels","homepage":"http://statsmodels.sourceforge.net/devel/","size":38135,"stargazers_count":1507,"watchers_count":1507,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":744,"mirror_url":null,"open_issues_count":1250,"forks":744,"open_issues":1250,"watchers":1507,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/statsmodels/statsmodels/pulls/3028"},"html":{"href":"https://github.com/statsmodels/statsmodels/pull/3028"},"issue":{"href":"https://api.github.com/repos/statsmodels/statsmodels/issues/3028"},"comments":{"href":"https://api.github.com/repos/statsmodels/statsmodels/issues/3028/comments"},"review_comments":{"href":"https://api.github.com/repos/statsmodels/statsmodels/pulls/3028/comments"},"review_comment":{"href":"https://api.github.com/repos/statsmodels/statsmodels/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/statsmodels/statsmodels/pulls/3028/commits"},"statuses":{"href":"https://api.github.com/repos/statsmodels/statsmodels/statuses/a04dcbbfb50bba91191ef2f67303db4bd00fa5b3"}}}}
{"actor":{"display_login":"josef-pkt"}}