a
    =e	                     @   sj   d dl Zd dlmZ d dlZd dlmZ dd Z	dddZ
d	d
 Zdd Zdd ZdddZdddZdS )    N)r2_scorec                 C   s"   t ddd}| | | }||fS )N
      npZlinspace)slope	intercept	x_perfect	y_perfect r   &/var/www/html/linear_data_generator.pygenerate_target_line   s    r   normal   c                 C   s   t |}t||d  }tt jj||dd}	t|D ]}
|dkrTt jd|}n:|dkrnt j| |}n |dkrt j	d|}nt
d|
|	v r||9 }|d u st||kr<|||
< q8q<q8| | }|S )	Nd   F)replacer   r   uniformlaplacez=Invalid noise type. Choose 'normal', 'uniform', or 'laplace'.)r   Zzerosintsetrandomchoiceranger   r   r   
ValueErrorabs)r   std_devn
noise_typeoutlier_percentageoutlier_multiplierrejection_thresholdZnoiseZnum_outliersZoutlier_indicesiZnoise_sampley_noisyr   r   r   generate_noisy_data   s$    
r$   c                 C   s8   t | |d}|\}}||  | }t||}||||fS )Nr   )r   Zpolyfitr   )xr#   coeffsm_noisyb_noisyy_pred	r_squaredr   r   r   fit_noisy_data)   s
    
r+   c                 C   s0   t | | }| d d | }|d d | }||fS )N)len)r%   r#   r   stepZx_subsetZy_subsetr   r   r   subset_noisy_data0   s    r.   c                 C   s,   | \}}}t dd|}|| | }||fS )Nr   r   r   )Zfinal_coeffsr   mb_Zx_refZy_refr   r   r   generate_reference_line6   s    
r2   ffffff?c                 C   s   d| }t |}td|d }tjjd|d  |}|| }	tt|	| }
t	| }t| | d }t
|
d| t| | |   }|||  }|||  }||fS )Nr   r      )r,   maxscipystatstZppfr   sumZsquaremeansqrt)r%   yr)   r&   Z
confidencealphar   ZdofZt_statZ	residualsZmseZx_meanZsum_sqZseci_upperci_lowerr   r   r   calculate_confidence_intervals<   s    
$r@   2   c              
   C   s   t | |\}}	t|	|d||||}
t||
|\}}t||\}}}}t|||||f\}}|| | }| |	 | | | | | | |d	}t| ||f|fS )Nr   )	r
   r   Zx_noisyr#   Zx_referencey_referencer?   r>   r*   )r   r$   r.   r+   r@   tolistprint)r   r	   r   r   r   r   r    r!   r
   r   r#   Zx_noisy_subsetZy_noisy_subsetr'   r(   r*   r)   r?   r>   rB   datar   r   r   fit_and_store_resultsQ   s$    rF   )r   r   r   N)r3   )r   rA   N)Znumpyr   Zmatplotlib.pyplotZpyplotZpltZscipy.statsr6   Zsklearn.metricsr   r   r$   r+   r.   r2   r@   rF   r   r   r   r   <module>   s   

