
    thX                     P    d Z ddlZddlmZ ddlmZ ddlmZ	  G d d          Z
dS )u   
https://medium.com/@bengikoseoglu/understanding-ordinary-least-square-in-matrix-form-with-r-b6cf2d08a93b coefficient de la matrice #β = (X'X)ˉ¹X'y
ou X' = transpose X
(X'X)ˉ¹ = inverse de X'X
β = (X'X)ˉ¹X'y

    N)
TW_Utility)LinearRegressionc                   4    e Zd Zd Zd Zd	dZd Zd Zd ZdS )

TW_Matricec                 `   g }|j         dk    rt          d          |j         |j         k    rkt          dt          |                    D ]8}t	          j        ||         ||                   }|                    |           9t	          j        |          }nt	          j        ||f          }|S )N   z3 Dimensions not supportedr   )ndim	Exceptionrangelennpappendarrayhstack)selfABaugmmentedMatriceirows         Hc:\Users\Fabien\Documents\Programmation\testPython\classes\TW_Matrice.pyaugmented_matricezTW_Matrice.augmented_matrice   s    6A: 	:89996AF? 	11SVV__ . .i!ad++!((---- "): ; ; "	1Q% 0 0      c                    t          |          }|j        t          |j                  dz
           }i }t          d|          D ]O}t          d|          D ]<}t          j        ||          sd||<   ||         |         dk    r||         dz   ||<   =Pt          t          |                                d                     }|t          |	                                          d |                  S )N   r   c                     | d         S )Nr    )items    r   <lambda>z4TW_Matrice._reshape_in_square_form.<locals>.<lambda>1   s    DQRG r   )key)
r   shaper   r   empty_or_nonedictsorteditemslistkeys)r   MnbrRows
nbrColumnsnbrZeroPerRowr   js          r   _reshape_in_square_formz"TW_Matrice._reshape_in_square_form$   s    a&&WS\\1_-
q'"" 	< 	<A1j)) < <!/qAA )'(M!$Q47a< <'4Q'7!';M!$< VM$7$7$9$9?S?STTTUUm((**++KZK899r   Tc                     |                      |          }|dk    r|S t          |          }t          dt          |j                            D ]}|j        |         |k    r d S |S )NFr   )r-   r   r   r!   )r   r(   strictsquareMatricer)   r   s         r   reshape_matrice_in_square_formz)TW_Matrice.reshape_matrice_in_square_form4   s    44Q77U? 	!  m$$q#m12233 	 	A"1%0 tt r   c                 ~    d}d }	 t                                          ||          }n#  t          d          xY w|S )NF0Try calling TW_Utility.adjust_series_nbr_columns)r   fitr
   )r   r   r   columnAdded
regressions        r   sklearn_linear_regressionz$TW_Matrice.sklearn_linear_regressionA   sN    
	P)++//155JJ	PNOOOs   ") :c                     g }d}	 t                                          ||          }|j        }|j        }n#  g }d}t	          d          xY w||fS )Nr   r3   )r   r4   coef_
intercept_r
   )r   r   r   coefficientsconstantregs         r   gaussian_system_linear_equationz*TW_Matrice.gaussian_system_linear_equationM   sk    	P"$$((A..C9L~HH	PLHNOOOX%%s	   07 Ac                    |                     d          }|                     d          }g }|                     ||          }|                     |d          }t          j        |          sO|j        t          |j                  dz
           }|d d t          j        |dz
            f         }|d d df         }t          j	        
                    ||          }t          |          dk    r|nd S )Nfloat64Fr   r   )astyper   r1   r   r"   r!   r   r   arangelinalgsolve)r   r   r   	solutionsRr*   XYs           r   gaussian_system_exact_solutionz)TW_Matrice.gaussian_system_exact_solution^   s    HHYHHY	""1Q''//599'** 	QWq1J!!!RYz1}---.A!!!R%AIOOAq))		NNQ.8yyD8r   N)T)	__name__
__module____qualname__r   r-   r1   r7   r>   rJ   r   r   r   r   r      ss        ! ! !: : :    
 
 
& & &"9 9 9  r   r   )__doc__numpyr   classes.TW_Utilityr   sklearn.linear_modelr   statsmodels.apiapismr   r   r   r   <module>rU      s         ) ) ) ) ) ) 1 1 1 1 1 1      ` ` ` ` ` ` ` ` ` `r   