# -*- coding: utf-8 -*-
"""
Created on Sun Apr 17 11:52:38 2022

@author: TANISH
"""

""" Solution - Assignment 1 """

# Question 1.

import numpy as np

matrix = np.array([[0.75,0.15,0.10],
                   [0.45,0.45,0.10],
                   [0.30,0.10,0.60]])

matrix_n_1 = matrix
indi = 0

while(indi == 0):
    
    matrix_n = np.dot(matrix,matrix_n_1)
    
    if(round(sum(sum(abs(matrix_n - matrix_n_1))),6) == 0):
        print("Stationary Distribution is",matrix_n[0])
        indi = 1
    
    matrix_n_1 = matrix_n
    

# Question 2.

X = np.array([3.44,3.44,4.07,3.73,3.78,5.25,5.424,5.345,2.20])
Y = np.array([19.2,17.8,16.4,17.3,15.2,10.4,10.4,14.7,32.4])

combi = []
sse = []

for beta_0 in np.arange(37,(39 + 0.01),0.01):
    for beta_1 in np.arange(-5,2 + 0.01,0.01):
        
        Y_hat = beta_0 + beta_1 * X
        
        sse.append(sum((Y_hat - Y)**2))
        combi.append([round(beta_0,2),round(beta_1,2)])


combi[np.array(sse).argmin()]


# Question 3.

X = np.array([2.76,1.80,2.5,10.64,12.01])
Y = np.array([7.40,4.81,6.69,28.52,32.18])

Y / X

# Scaling factor = 2.68 approx.

total = 0

for i in X:
    total = total + i
    

mean = total / len(X)

sq_dev = 0

for i in X:
    sq_dev = sq_dev + (i - mean)**2
    

(sq_dev / (len(X) - 1))**0.5


# Similary for Y,
total = 0

for i in Y:
    total = total + i
    

mean = total / len(Y)

sq_dev = 0

for i in Y:
    sq_dev = sq_dev + (i - mean)**2
    

(sq_dev / (len(Y) - 1))**0.5


# Since the variance for both of the variable is not same
# S.D is not independent of change of scale


total = 0

for i in X:
    total = total + i
    

mean = total / len(X)

sq_dev = 0

for i in X:
    if(i < mean):
        sq_dev = sq_dev + (i - mean)**2

(sq_dev / (len(X[X < mean]) - 1))**0.5


# Similary for Y,
total = 0

for i in Y:
    total = total + i
    

mean = total / len(Y)

sq_dev = 0

for i in Y:
    if(i < mean):
        sq_dev = sq_dev + (i - mean)**2
    
    

(sq_dev / (len(Y[Y < mean]) - 1))**0.5




# Question 4.
# Covered in Class Exercise
