Ë
    £�Dj¨8  ã                   ó  — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZ ddlmZmZ  G d„ d	e«      Zd
„ Zi Zd„ ed<   d„ ed<   d„ ed<   ej*                  ed<   eed<   dd„Zd„ Zdd„Z G d„ de«      Zy)aM  
Quantile regression model

Model parameters are estimated using iterated reweighted least squares. The
asymptotic covariance matrix estimated using kernel density estimation.

Author: Vincent Arel-Bundock
License: BSD-3
Created: 2013-03-19

The original IRLS function was written for Matlab by Shapour Mohammadi,
University of Tehran, 2008 (shmohammadi@gmail.com), with some lines based on
code written by James P. Lesage in Applied Econometrics Using MATLAB(1999).PP.
73-4.  Translated to python with permission from original author by Christian
Prinoth (christian at prinoth dot name).
é    N)Úpinv)Únorm)Úcache_readonly)ÚRegressionModelÚRegressionResultsÚRegressionResultsWrapper)ÚConvergenceWarningÚIterationLimitWarningc                   ó4   ‡ — e Zd ZdZˆ fd„Zd„ Z	 	 dd„Zˆ xZS )ÚQuantRegaË  Quantile Regression

    Estimate a quantile regression model using iterative reweighted least
    squares.

    Parameters
    ----------
    endog : array or dataframe
        endogenous/response variable
    exog : array or dataframe
        exogenous/explanatory variable(s)

    Notes
    -----
    The Least Absolute Deviation (LAD) estimator is a special case where
    quantile is set to 0.5 (q argument of the fit method).

    The asymptotic covariance matrix is estimated following the procedure in
    Greene (2008, p.407-408), using either the logistic or gaussian kernels
    (kernel argument of the fit method).

    References
    ----------
    General:

    * Birkes, D. and Y. Dodge(1993). Alternative Methods of Regression, John Wiley and Sons.
    * Green,W. H. (2008). Econometric Analysis. Sixth Edition. International Student Edition.
    * Koenker, R. (2005). Quantile Regression. New York: Cambridge University Press.
    * LeSage, J. P.(1999). Applied Econometrics Using MATLAB,

    Kernels (used by the fit method):

    * Green (2008) Table 14.2

    Bandwidth selection (used by the fit method):

    * Bofinger, E. (1975). Estimation of a density function using order statistics. Australian Journal of Statistics 17: 1-17.
    * Chamberlain, G. (1994). Quantile regression, censoring, and the structure of wages. In Advances in Econometrics, Vol. 1: Sixth World Congress, ed. C. A. Sims, 171-209. Cambridge: Cambridge University Press.
    * Hall, P., and S. Sheather. (1988). On the distribution of the Studentized quantile. Journal of the Royal Statistical Society, Series B 50: 381-391.

    Keywords: Least Absolute Deviation(LAD) Regression, Quantile Regression,
    Regression, Robust Estimation.
    c                 óJ   •— | j                  |«       t        ‰| �  ||fi |¤Ž y ©N)Ú_check_kwargsÚsuperÚ__init__)ÚselfÚendogÚexogÚkwargsÚ	__class__s       €únC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels/regression/quantile_regression.pyr   zQuantReg.__init__M   s%   ø€ Ø×Ñ˜6Ô"Ü‰Ñ˜ Ñ/¨Ó/ó    c                 ó   — |S )zE
        QuantReg model whitener does nothing: returns data.
        © )r   Údatas     r   ÚwhitenzQuantReg.whitenQ   s	   € ð ˆr   c                 óx
  — |dk  s|dk\  rt        d«      ‚g d¢}||vrt        ddj                  |«      z   «      ‚t        |   }|dk(  rt        }n#|dk(  rt        }n|d	k(  rt
        }nt        d
«      ‚| j                  }	| j                  }
| j                  }t        j                  j                  | j                  «      }|| _        t        | j                  | j                  z
  «      | _        | j                  | j                  z
  | _        d}|
}t        j"                  |
j$                  d   «      }d}d}t'        g g ¬«      }||k  �rØ||kD  �rÒ|�sÏ|dz  }|}t        j(                  |j*                  |
«      }t        j(                  |j*                  |	«      }t        j(                  t-        |«      |«      }|	t        j(                  |
|«      z
  }t        j.                  |«      dk  }||   dk\  dz  dz
  dz  ||<   t        j0                  |dk  ||z  d|z
  |z  «      }t        j.                  |«      }|
|dd…t        j2                  f   z  }t        j4                  t        j.                  ||z
  «      «      }|d   j7                  |«       |d   j7                  t        j8                  ||z  «      «       |dk\  rV|dz  dk(  rNt;        dd«      D ]?  }t        j<                  ||d   |    k(  «      sŒ#d}t?        j@                  dtB        «        n ||k  r	||kD  r|s�ŒÏ||k(  r)t?        j@                  dtE        |«      z   dz   tF        «       |	t        j(                  |
|«      z
  }tI        jJ                  |d«      tI        jJ                  |d«      z
  } |||«      }tM        t        jN                  |	«      |dz  «      tQ        jR                  ||z   «      tQ        jR                  ||z
  «      z
  z  }d||z  z  t        jT                   |||z  «      «      z  }|dk(  r“t        j0                  |dkD  ||z  dz  d|z
  |z  dz  «      }t-        t        j(                  |
j*                  |
«      «      }t        j(                  |
j*                  |t        j2                  dd…f   z  |
«      }||z  |z  }nL|dk(  r<d|z  dz  |z  d|z
  z  t-        t        j(                  |
j*                  |
«      «      z  }nt        d«      ‚tW        | ||¬ «      } || _,        || _-        d|z  | _.        || _/        || _0        tc        | «      S )!aö  
        Solve by Iterative Weighted Least Squares

        Parameters
        ----------
        q : float
            Quantile must be strictly between 0 and 1
        vcov : str, method used to calculate the variance-covariance matrix
            of the parameters. Default is ``robust``:

            - robust : heteroskedasticity robust standard errors (as suggested
              in Greene 6th edition)
            - iid : iid errors (as in Stata 12)

        kernel : str, kernel to use in the kernel density estimation for the
            asymptotic covariance matrix:

            - epa: Epanechnikov
            - cos: Cosine
            - gau: Gaussian
            - par: Parzene

        bandwidth : str, Bandwidth selection method in kernel density
            estimation for asymptotic covariance estimate (full
            references in QuantReg docstring):

            - hsheather: Hall-Sheather (1988)
            - bofinger: Bofinger (1975)
            - chamberlain: Chamberlain (1994)
        r   é   z"q must be strictly between 0 and 1)ÚbiwÚcosÚepaÚgauÚparzkernel must be one of z, Ú	hsheatherÚbofingerÚchamberlainz;bandwidth must be in 'hsheather', 'bofinger', 'chamberlain'é
   F)ÚparamsÚmseç�íµ ÷Æ°>é   Nr(   r)   i,  éd   TzConvergence cycle detectedzMaximum number of iterations (z
) reached.éK   é   gq=
×£põ?ç      ð?ÚrobustÚiidzvcov must be 'robust' or 'iid')Únormalized_cov_params)2Ú	ExceptionÚjoinÚkernelsÚhall_sheatherr%   r&   r   r   ÚnobsÚnpÚlinalgÚmatrix_rankÚrankÚfloatÚ
k_constantÚdf_modelÚdf_residÚonesÚshapeÚdictÚdotÚTr   ÚabsÚwhereÚnewaxisÚmaxÚappendÚmeanÚrangeÚallÚwarningsÚwarnr	   Ústrr
   ÚstatsÚscoreatpercentileÚminÚstdr   ÚppfÚsumÚQuantRegResultsÚqÚ
iterationsÚsparsityÚ	bandwidthÚhistoryr   )!r   rW   ÚvcovÚkernelrZ   Úmax_iterÚp_tolr   Ú
kern_namesr   r   r7   Ú	exog_rankÚn_iterÚxstarÚbetaÚdiffÚcycler[   Úbeta0ÚxtxÚxtyÚresidÚmaskÚiiÚeÚiqreÚhÚfhat0ÚdÚxtxiÚxtdxÚlfits!                                    r   ÚfitzQuantReg.fitW   s¦  € ðB �Š6�Q˜!’VÜÐ@ÓAÐAâ8ˆ
Ø˜Ñ#ÜÐ4°t·y±yÀÓ7LÑLÓMÐMä˜V‘_ˆFà˜Ò#Ü%‰IØ˜*Ò$Ü ‰IØ˜-Ò'Ü#‰IäÐYÓZÐZà—
‘
ˆØ�y‰yˆØ�y‰yˆÜ—I‘I×)Ñ)¨$¯)©)Ó4ˆ	ØˆŒ	Ü˜dŸi™i¨$¯/©/Ñ9Ó:ˆŒØŸ	™	 D§I¡IÑ-ˆŒØˆØˆä�w‰w�t—z‘z !‘}Ó%ˆð ˆØˆä ¨Ô+ˆØ�xÓ D¨5£LºØ�a‰KˆFØˆEÜ—&‘&˜Ÿ™ $Ó'ˆCÜ—&‘&˜Ÿ™ %Ó(ˆCÜ—6‘6œ$˜s›) SÓ)ˆDØœBŸF™F 4¨Ó.Ñ.ˆEä—6‘6˜%“= 7Ñ*ˆDØ! $™K¨1Ñ,°Ñ1°AÑ5¸Ñ@ˆE�$‰KÜ—H‘H˜U Q™Y¨¨E©	°A°a±C¸5±=ÓAˆEÜ—F‘F˜5“MˆEØ˜5¢¤B§J¡J Ñ/Ñ/ˆEÜ—6‘6œ"Ÿ&™& ¨¡Ó.Ó/ˆDØ�HÑ×$Ñ$ TÔ*Ø�E‰N×!Ñ!¤"§'¡'¨%°©+Ó"6Ô7à˜#’ F¨S¡L°AÒ$5ä  2›,ò �BÜ—v‘v˜d g¨hÑ&7¸¸Ñ&<Ñ<Õ=Ø $˜Ü Ÿ™Ð&BÔDVÔWÙð	ð' �xÒ D¨5¢L»ð2 �XÒÜ�M‰MÐ:¼SÀ»]ÑJØ&ñ'Ü(=ô?ð ”B—F‘F˜4 Ó&Ñ&ˆô ×&Ñ& q¨"Ó-´×0GÑ0GÈÈ2Ó0NÑNˆÙ�d˜AÓˆÜ”—‘�u“Ø�t‘óÜ $§¡¨¨Q©£´$·(±(¸1¸q¹5³/Ñ AñCˆð �d˜Q‘h‘¤"§&¡&©°°A±«Ó"7Ñ7ˆà�8ÒÜ—‘˜˜Q™  5¡¨1¡°°!±°U©{¸QÑ.>Ó?ˆAÜœŸ™˜tŸv™v tÓ,Ó-ˆDÜ—6‘6˜$Ÿ&™& 1¤R§Z¡Z² ]Ñ#3Ñ3°TÓ:ˆDØ˜$‘; Ñ%‰DØ�UŠ]Ø˜‘J ‘? QÑ&¨!¨a©%Ñ0´4¼¿¹¸t¿v¹vÀtÓ8LÓ3MÑM‰DäÐ<Ó=Ð=ä˜t TÀÔFˆàˆŒØ ˆŒØ˜U™
ˆŒØˆŒØˆŒä'¨Ó-Ð-r   )ç      à?r0   r!   r$   éè  r*   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ru   Ú__classcell__)r   s   @r   r   r       s#   ø„ ñ*ôX0òð @KØ!%÷H.r   r   c           	      ó  — t        j                  t        j                  | «      dk  dd| dz  z  z
  dt        j                  | «      dz  z  z   ddt        j                  | «      z
  dz  z  dz  «      }d|t        j                  | «      dkD  <   |S )	Nrv   gUUUUUUõ?g       @r+   é   r   g      @r   ©r8   rF   rE   )ÚuÚzs     r   Ú_parzenr‚   â   s|   € Ü
�‰”—‘˜“˜b‘ $¨¨a°©d©Ñ"2°R¼"¿&¹&À»)ÀQ¹,Ñ5FÑ"FØ�qœ2Ÿ6™6 !›9‘} qÑ(Ñ(¨2Ñ-ó	/€Aà€A„b‡f�fˆQƒi�!�mÑØ€Hr   c                 óz   — dd| dz  z
  dz  z  t        j                  t        j                  | «      dk  dd«      z  S )Ng      î?r   r+   r   r   ©r€   s    r   ú<lambda>r…   ê   s6   € ˜8 q¨1¨a©4¡x°!¡mÑ3´b·h±h¼r¿v¹vÀa»yÈA¹~ÈqÐRSÓ6TÑT€ r   r   c                 ó°   — t        j                  t        j                  | «      dk  dt        j                  dt         j                  z  | z  «      z   d«      S )Nrv   r   r+   r   )r8   rF   rE   r    Úpir„   s    r   r…   r…   ë   s:   € œ2Ÿ8™8¤B§F¡F¨1£I°¡O°Q¼¿¹ÀÄBÇEÁEÁ	ÈAÁÓ9NÑ5NÐPQÓR€ r   r    c                 ót   — dd| dz  z
  z  t        j                  t        j                  | «      dk  dd«      z  S )Ng      è?r   r+   r   r   r„   s    r   r…   r…   ì   s1   € ˜6 Q q¨!¡t¡VÑ,¬r¯x©x¼¿¹¸q»	ÀQ¹ÈÈ1Ó/MÑM€ r   r!   r"   r#   c                 óÖ   — t        j                  |«      }dt        j                  |«      dz  z  }d|dz  z  dz   }| dz  t        j                  d|dz  z
  «      dz  z  ||z  dz  z  }|S )Ng      ø?g       @r/   gUUUUUUÕ¿gUUUUUUå?gUUUUUUÕ?)r   rT   Úpdf)ÚnrW   Úalphar�   ÚnumÚdenro   s          r   r6   r6   ö   sm   € Ü�‰�‹€AØ
”—‘˜“˜R‘Ñ
€CØ
ˆq�"‰u‰*�r‰/€CØ	ˆG‰”t—x‘x  U¨R¡Z¡Ó0°4Ñ8Ñ8¸CÀ#¹IÈÑ;NÑN€AØ€Hr   c                 óÆ   — dt        j                  dt        j                  |«      z  «      dz  z  }dt        j                  |«      dz  z  dz   dz  }| dz  ||z  dz  z  }|S )Ng      @r+   é   r   gš™™™™™É¿gš™™™™™É?)r   rŠ   rT   )r‹   rW   r�   rŽ   ro   s        r   r%   r%   þ   sb   € Ø
”4—8‘8˜A¤§¡¨£™OÓ,¨aÑ/Ñ
/€CØŒt�x‰x˜‹{˜A‰~Ñ Ñ! AÑ
%€CØ	ˆG‰˜˜c™	 VÑ,Ñ,€AØ€Hr   c                 óv   — t        j                  d|dz  z
  «      t        j                  |d|z
  z  | z  «      z  S )Nr   r+   )r   rT   r8   Úsqrt)r‹   rW   rŒ   s      r   r&   r&     s3   € Ü�8‰8�A˜ ™	‘MÓ"¤R§W¡W¨Q°°A±©Y¸©]Ó%;Ñ;Ð;r   c                   ó  — e Zd ZdZed„ «       Zd„ Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zdd„Zy)rV   z'Results instance for the QuantReg modelc                 óÒ  — | j                   }| j                  j                  }| j                  }t	        j
                  |dk  d|z
  |z  ||z  «      }t	        j                  |«      }|t        j                  ||dz  «      z
  }t	        j
                  |dk  d|z
  |z  ||z  «      }t	        j                  |«      }dt	        j                  |«      t	        j                  |«      z  z
  S )Nr   r   r,   )
rW   Úmodelr   rj   r8   rF   rE   rP   rQ   rU   )r   rW   r   rm   Úereds        r   Ú	prsquaredzQuantRegResults.prsquared  s¼   € à�F‰FˆØ—
‘
× Ñ ˆØ�J‰JˆÜ�H‰H�Q˜‘U˜Q ™U a™K¨¨Q©Ó/ˆÜ�F‰F�1‹IˆØ”u×.Ñ.¨u°a¸#±gÓ>Ñ>ˆÜ�x‰x˜˜q™ 1 q¡5¨D¡.°!°d±(Ó;ˆÜ�v‰v�d‹|ˆØ”2—6‘6˜!“9œrŸv™v d›|Ñ+Ñ+Ð+r   c                  ó   — y)Nr/   r   ©r   s    r   ÚscalezQuantRegResults.scale  s   € Ør   c                 ó"   — t         j                  S r   ©r8   Únanr™   s    r   ÚbiczQuantRegResults.bic  ó   € ä�v‰vˆr   c                 ó"   — t         j                  S r   rœ   r™   s    r   ÚaiczQuantRegResults.aic   rŸ   r   c                 ó"   — t         j                  S r   rœ   r™   s    r   ÚllfzQuantRegResults.llf$  rŸ   r   c                 ó"   — t         j                  S r   rœ   r™   s    r   ÚrsquaredzQuantRegResults.rsquared(  rŸ   r   c                 ó"   — t         j                  S r   rœ   r™   s    r   Úrsquared_adjzQuantRegResults.rsquared_adj,  rŸ   r   c                 ó"   — t         j                  S r   rœ   r™   s    r   r)   zQuantRegResults.mse0  rŸ   r   c                 ó"   — t         j                  S r   rœ   r™   s    r   Ú	mse_modelzQuantRegResults.mse_model4  rŸ   r   c                 ó"   — t         j                  S r   rœ   r™   s    r   Ú	mse_totalzQuantRegResults.mse_total8  rŸ   r   c                 ó"   — t         j                  S r   rœ   r™   s    r   Úcentered_tsszQuantRegResults.centered_tss<  rŸ   r   c                 ó"   — t         j                  S r   rœ   r™   s    r   Úuncentered_tsszQuantRegResults.uncentered_tss@  rŸ   r   c                 ó   — t         ‚r   ©ÚNotImplementedErrorr™   s    r   ÚHC0_sezQuantRegResults.HC0_seD  ó   € ä!Ð!r   c                 ó   — t         ‚r   r²   r™   s    r   ÚHC1_sezQuantRegResults.HC1_seH  rµ   r   c                 ó   — t         ‚r   r²   r™   s    r   ÚHC2_sezQuantRegResults.HC2_seL  rµ   r   c                 ó   — t         ‚r   r²   r™   s    r   ÚHC3_sezQuantRegResults.HC3_seP  rµ   r   Nc                 óz  — | j                   }| j                  }ddddgfddg}dd| j                  z  gfd	d| j                  z  gfd
d| j                  z  gfdddg}|€&| j
                  j                  j                  dz   dz   }ddlm	}	  |	«       }
|
j                  | |||||¬«       |
j                  | |||| j                  ¬«       g }|d   dk  r+d}|dz  }|dz  }|dz  }||d   z  }|j                  |«       n,|dkD  r'd}|dz  }|dz  }|dz  }||z  }|j                  |«       |r|
j                  |«       |
S )a[  Summarize the Regression Results

        Parameters
        ----------
        yname : str, optional
            Default is `y`
        xname : list[str], optional
            Names for the exogenous variables. Default is `var_##` for ## in
            the number of regressors. Must match the number of parameters
            in the model
        title : str, optional
            Title for the top table. If not None, then this replaces the
            default title
        alpha : float
            significance level for the confidence intervals

        Returns
        -------
        smry : Summary instance
            this holds the summary tables and text, which can be printed or
            converted to various output formats.

        See Also
        --------
        statsmodels.iolib.summary.Summary : class to hold summary results
        )zDep. Variable:N)zModel:NzMethod:zLeast Squares)zDate:N)zTime:NzPseudo R-squared:z%#8.4gz
Bandwidth:z	Sparsity:)zNo. Observations:N)zDf Residuals:N)z	Df Model:Nú zRegression Resultsr   )ÚSummary)ÚgleftÚgrightÚynameÚxnameÚtitle)rÁ   rÂ   rŒ   Úuse_téÿÿÿÿg»½×Ùß|Û=z6The smallest eigenvalue is %6.3g. This might indicate zthat there are
z5strong multicollinearity problems or that the design zmatrix is singular.rw   z1The condition number is large, %6.3g. This might zindicate that there are
z,strong multicollinearity or other numerical z	problems.)Ú	eigenvalsÚcondition_numberr—   rZ   rY   r•   r   rx   Ústatsmodels.iolib.summaryr¾   Úadd_table_2colsÚadd_table_paramsrÄ   rI   Úadd_extra_txt)r   rÁ   rÂ   rÃ   rŒ   ÚeigvalsÚcondnoÚtop_leftÚ	top_rightr¾   ÚsmryÚetextÚwstrs                r   ÚsummaryzQuantRegResults.summaryT  s¤  € ð6 —.‘.ˆØ×&Ñ&ˆà,Ø$Ø Ð 1Ð2Ø#Ø#ð	ˆð *¨H°t·~±~Ñ,EÐ+FÐGØ" X°·±Ñ%>Ð$?Ð@Ø! H¨t¯}©}Ñ$<Ð#=Ð>Ø0Ø,Ø(ðˆ	ð ˆ=Ø—J‘J×(Ñ(×1Ñ1°CÑ7Ð:NÑNˆEõ 	6Ù‹yˆØ×Ñ˜T¨¸)Ø#(°¸Uð 	ô 	Dà×Ñ˜d¨%°uÀEØ$(§J¡Jð 	ô 	0ð ˆØ�2‰;˜ÒØKˆDØÐ&Ñ&ˆDØÐKÑKˆDØÐ)Ñ)ˆDØ˜' "™+Ñ%ˆDØ�L‰L˜ÕØ�dŠ]ØFˆDØÐ/Ñ/ˆDØÐBÑBˆDØ�KÑˆDØ˜&‘=ˆDØ�L‰L˜ÔáØ×Ñ˜uÔ%àˆr   )NNNçš™™™™™©?)rx   ry   rz   r{   r   r—   rš   rž   r¡   r£   r¥   r§   r)   rª   r¬   r®   r°   r´   r·   r¹   r»   rÓ   r   r   r   rV   rV   	  s:  „ Ù1àñ	,ó ð	,òð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ð ñ"ó ð"ôLr   rV   )rÔ   )r{   Únumpyr8   rM   Úscipy.statsrP   Únumpy.linalgr   r   Ústatsmodels.tools.decoratorsr   Ú#statsmodels.regression.linear_modelr   r   r   Ústatsmodels.tools.sm_exceptionsr	   r
   r   r‚   r5   rŠ   r6   r%   r&   rV   r   r   r   ú<module>rÛ      sš   ðñó" Û Ý Ý Ý Ý 7÷Kñ K÷Dô.ˆô .òDð €ÙT€ˆ�ÙR€ˆ�ÙM€ˆ�Ø—‘€ˆ�Ø€ˆ�óòó<ôWÐ'õ Wr   