Path: blob/main/Trabajo_grupal/WG1/Grupo_5_py.py
2714 views
import random # Primero importamos las bibliotecas pertinentes1import numpy as np2import math345# %% EJERCICIO NUMERO 167np.random.seed(188) # Luego, definimos la random seed 1888# Posteriormente, creamos x que será un vector 1x20 con valores entre 0 y 5009x = np.random.randint(0, 500, size=20)10print(x) # Comprobamos la matriz x1112y = [] # Ahora, para el punto 1.1, definimos el vector y que tendrá como componentes a los valores de x13print(type(y))14for i in x:15if i > 0 and i <= 100: # Si i entre 0 y 100, el componente 1xi adoptará el valor de i^0.516y.append(i**0.5)17else:18y.append(i**0) # Caso contrario, se computará el valor de 11920print(y) # Comprobamos la matriz y2122z = [] # Ahora, para el punto 1.2, definimos el vector z que tendrá como componentes a los valores de x23for i in x:24if i > 100 and i <= 300: # Si i entre 100 y 300, el componente 1xi adoptará el valor de i-525z.append(i-5)26else:27z.append(i**0) # Caso contrario, se computará el valor de 12829print(z) # Comprobamos la matriz z3031k = [] # Ahora, para el punto 1.3, definimos el vector k que tendrá como componentes a los valores de x32for i in x:33if i > 300 and i <= 500: # Si i entre 300 y 500, el componente 1xi adoptará el valor de 5034k.append(50)35else:36k.append(i**0) # Caso contrario, se computará el valor de 13738print(k) # Comprobamos la matriz z39404142# %% EJERCICIO 24344np.random.seed(100) # Definimos la random seed 1004546# Creamos el vector 1x100 llamada v147v1 = np.random.randint(0, 500, size=(100))484950# Creamos la matriz 100x50 llamada M151m1 = np.random.randint(0, 500, size=(100, 50))525354def escalamiento(variable):5556try:57if not isinstance(variable, np.ndarray):58raise TypeError("ERROR, NO ESTÁ BIEN EL TIPO DE VARIABLE")5960colum = variable.shape[1]6162except IndexError:6364# SOLO PARA VECTOR65minimo = min(variable)66maximo = max(variable)67resultado = []6869for i in range(variable.shape[0]):70escalar = ((variable[i]-minimo)/maximo-minimo)71resultado.append(escalar)7273print(resultado)7475else:7677l = []78lista_nuevo = []79lista_n1 = []80for i in range(variable.shape[0]):81for j in range(variable.shape[1]):82l.append(variable[i][j])8384maximo = max(l)85minimo = min(l)86for k in range(variable.shape[1]):87escalar = (((variable[i][k])-minimo)/(maximo-minimo))88lista_nuevo.append(escalar)8990lista_n1.append(lista_nuevo)91lista_nuevo = []92l = []9394print(lista_n1)959697escalamiento(m1)9899100101# %% EJERCICIO 3102103import random104import numpy as np105106from scipy.stats import t # t - student107import pandas as pd108109np.random.seed(175)110111x1 = np.random.rand(10000) # uniform distribution [0,1]112x2 = np.random.rand(10000) # uniform distribution [0,1]113x3 = np.random.rand(10000) # uniform distribution [0,1]114x4 = np.random.rand(10000) # uniform distribution [0,1]115x5 = np.random.rand(10000) #uniform distribution [0,1]116e = np.random.normal(0,1,10000) # normal distribution mean = 0 and sd = 1117z = np.random.rand(10000)118# Poblacional regression (Data Generating Process GDP)119120121Y = 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 + 2.2*x5 + e122123X = np.column_stack((np.ones(10000),x1,x2,x3,x4,x5))124125def ols(M,Y, standar = True, Pvalue = True , instrumento = None, index = None):126127if standar and Pvalue and (instrumento is None) and (index is None) :128129beta = np.linalg.inv(X.T @ X) @ ((X.T) @ Y )130131y_est = X @ beta132n = X.shape[0]133k = X.shape[1] - 1134nk = n - k135sigma = sum(list( map( lambda x: x**2 , Y - y_est) )) / nk136Var = sigma*np.linalg.inv(X.T @ X)137sd = np.sqrt( np.diag(Var) )138t_est = np.absolute(beta/sd)139pvalue = (1 - t.cdf(t_est, df=nk) ) * 2140df = pd.DataFrame( {"OLS": beta , "standar_error" : sd ,141"Pvalue" : pvalue} )142143144elif (not instrumento is None) and (not index is None) :145146beta = np.linalg.inv(X.T @ X) @ ((X.T) @ Y )147148index = index - 1149Z = X150Z[:,index] = z151beta_x = np.linalg.inv(Z.T @ Z) @ ((Z.T) @ X[:,index] )152x_est = Z @ beta_x153X[:,index] = x_est154beta_iv = np.linalg.inv(X.T @ X) @ ((X.T) @ Y )155df = pd.DataFrame( {"OLS": beta , "OLS_IV" : beta_iv})156157return df158159ols(X,Y)160## n=50161162163164# %% EJERCICIO 4165166import random167import numpy as np168169from scipy.stats import t # t - student170import pandas as pd171172np.random.seed(175)173174x1 = np.random.rand(800) # uniform distribution [0,1]175x2 = np.random.rand(800) # uniform distribution [0,1]176x3 = np.random.rand(800) # uniform distribution [0,1]177x4 = np.random.rand(800) # uniform distribution [0,1]178x5 = np.random.rand(800) #uniform distribution [0,1]179x6 = np.random.rand(800) #uniform distribution [0,1]180x7= np.random.rand(800)181e = np.random.normal(0,1,800) # normal distribution mean = 0 and sd = 1182z = np.random.rand(800)183# Poblacional regression (Data Generating Process GDP)184185186Y = 1 + 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 + 2.2*x5 + 3.5*x6 + 4.2*x7 + e187188X = np.column_stack((np.ones(800),x1,x2,x3,x4,x5,x6,x7))189190def ols(M,Y, standar = True, Pvalue = True , instrumento = None, index = None):191192if standar and Pvalue and (instrumento is None) and (index is None) :193194beta = np.linalg.inv(X.T @ X) @ ((X.T) @ Y )195196y_est = X @ beta197n = X.shape[0]198k = X.shape[1] - 1199nk = n - k200sigma = sum(list( map( lambda x: x**2 , Y - y_est) )) / nk201Var = sigma*np.linalg.inv(X.T @ X)202sd = np.sqrt( np.diag(Var) )203t_est = np.absolute(beta/sd)204pvalue = (1 - t.cdf(t_est, df=nk) ) * 2205df = pd.DataFrame( {"OLS": beta , "standar_error" : sd ,206"Pvalue" : pvalue} )207208209elif (not instrumento is None) and (not index is None) :210211beta = np.linalg.inv(X.T @ X) @ ((X.T) @ Y )212213index = index - 1214Z = X215Z[:,index] = z216beta_x = np.linalg.inv(Z.T @ Z) @ ((Z.T) @ X[:,index] )217x_est = Z @ beta_x218X[:,index] = x_est219beta_iv = np.linalg.inv(X.T @ X) @ ((X.T) @ Y )220df = pd.DataFrame( {"OLS": beta , "OLS_IV" : beta_iv})221222return df223224ols(X,Y)225##Limite inferior = beta_estimado - 1.96 * error estandar226#Limite superior = beta_estimado + 1.96*error estandar227228229230231232233234235236237238239240