Path: blob/main/Trabajo_grupal/WG1/Grupo2_Python.py
2714 views
1"""2Ejercicio 134"""56import random7import numpy as np891011# Definimos las 3 funciones del ejercicio12def f1(x):13return x**(0.5)1415def f2(x):16return x-51718def f3(x):19return 50202122# Se crea vector aleatorio con 20 números del 0 a 50023a= np.random.randint(0,500,20)2425#Resolvemos las ecuaciones con el vector poniendo condicionales dado el rango2627for i in range(0,20):28if a[i] <=100:29print(" función 1:")30print(f1(i))3132if a[i]<=300:33print(" función 2:")34print(f2(i))3536else:37print(" función 3:")38print(f3(i))3940"""41Ejercicio 24243"""4445#fijar semilla46np.random.seed(123)4748# Crear vector con 100 observaciones49v1 = np.random.rand(100)5051#Para crear mi matriz voy a empezar con un vector base52x1 = np.random.rand(100)53# Crear matriz en base a ese vector que sea 100x5054X1 = x1.reshape(-1, 1) ** np.arange(0, 50)55# Vector56print(x1)57# Matriz58print(X1)59print(X1.shape) # nos dice cuantas filas y columnas tiene la matriz6061# Crear función para reescalar matriz6263def calculator_scalar(x, M, n):64if not isinstance( x , np.ndarray ) :65raise TypeError( "x must be a n-array")6667if not isinstance( M , np.ndarray ) :68raise TypeError( "M must be a n-array")6970y1 = x[n]71z1 = M[:, n]72m1 = min(z1)73m2 = max(z1)7475result= y1 - m1/ m2 - m17677return result7879#Hallo mi resultado con el vector y matriz creada,80#En este caso, pondre de orden 3(elemento 3 del vector y columna 3 de la matriz)81print(calculator_scalar(v1, X1, 3))82# Por ejemplo, result= 0.79030509383242618384#En esta prueba, me debe salir el error y "x must be a n-array"85print(calculator_scalar("Hola", X1, 3))868788"""89Ejercicio 39091"""92#Primero descargamos las librerías93import numpy as np94import pandas as pd95import random96import pylab as pl97import matplotlib.pyplot as plt98from sklearn import linear_model99from scipy.stats import t # t - student100101102#Luego exploramos la estructura del código103random.seed(175)104105x1 = np.random.rand(10000) # uniform distribution [0,1] np.random.rand(x) creates an array of (x) random numbers106x2 = np.random.rand(10000)107x3 = np.random.rand(10000)108x4 = np.random.rand(10000)109x5 = np.random.rand(10000)110111112e = np.random.normal(0,1,10000) # normal distribution mean = 0 and sd = 1113z = np.random.rand(10000)114115Y = 1 + 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 + e #omitimos una variable del GDP116117X = np.column_stack((np.ones(10000),x1,x2,x3,x4))118119def ols(M,Y, standar = True, Pvalue = True):120beta = np.linalg.inv(X.T @ X) @ ((X.T) @ Y ) ## estimación de beta121y_est = X @ beta ## Y estimado122n = X.shape[0]123i=100000124k = X.shape[1] - 1125nk = n - k ## grados de libertad126sigma = sum(list( map( lambda x: x**2 , Y - y_est) )) / nk127Var = sigma*np.linalg.inv(X.T @ X)128sd = np.sqrt( np.diag(Var) ) ## raíz cuadrado a los datos de la diagonal principal de Var129df = pd.DataFrame( {"Tamaño de muestra":i,"Coeficiente": beta , "Error estándar" : sd})130return df131plt.scatter(x1, Y, color='blue')132plt.xlabel("Engine size")133plt.ylabel("Emission")134plt.show()135136x11 = np.random.choice(x1, size=10000)137x22 = np.random.choice(x2, size=10000)138x33 = np.random.choice(x3, size=10000)139x44 = np.random.choice(x3, size=10000)140x55 = np.random.choice(x5, size=10000)141142x11 #x1 es un array de valores aleatorios distribuídos uniformemente143144np.random.choice(x11, size=10) #de esta forma podemos extraer una muestra de 10 observaciones dentro del array X1145146#La tarea es crear un Loop con los siguientes valores (como ejemplo veamos):147for n in [10, 50, 80, 120, 200, 500, 800, 1000, 5000]:148x = n **2149print(x)150151#lo que buscamos es un loop que tome valores dentro del rango propuesto y arme muestras aleatorias del mismo size de cada valor152for n in [10, 50, 80, 120, 200, 500, 800, 1000, 5000]:153x11 = np.random.choice(x1, size=n)154x22 = np.random.choice(x2, size=n)155x33 = np.random.choice(x3, size=n)156x44 = np.random.choice(x3, size=n)157x55 = np.random.choice(x5, size=n)158print("Número de observaciones:",x11.shape,x22.shape,x33.shape,x44.shape,x55.shape)159#Aquí observamos que se generan arreglos del tamano buscado160161162163164#Será necesario contar con un valor estimado (Y) y, por ende, con un conjunto de datos por cada tamano de muestra165for i in [10, 50, 80, 120, 200, 500, 800, 1000, 5000]:166x11 = np.random.choice(x1, size=i)167x22 = np.random.choice(x2, size=i)168x33 = np.random.choice(x3, size=i)169x44 = np.random.choice(x3, size=i)170x55 = np.random.choice(x5, size=i)171e = np.random.normal(0,1,i)172Y = 1 + 0.5*x11 + 1.1*x22 + 0.4*x33 + 1.2*x44 + e #omitimos una variable del GDP173X = np.column_stack((np.ones(i),x11,x22,x33,x44))174print(Y)175176177178random.seed(109)179180x1 = np.random.rand(10000) # uniform distribution [0,1] np.random.rand(x) creates an array of (x) random numbers181x2 = np.random.rand(10000)182x3 = np.random.rand(10000)183x4 = np.random.rand(10000)184x5 = np.random.rand(10000)185186187e = np.random.normal(0,1,10000) # normal distribution mean = 0 and sd = 1188189190Y = 1 + 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 + e #omitimos una variable del GDP191192X = np.column_stack((np.ones(10000),x1,x2,x3,x4))193194for i in [10, 50, 80, 120, 200, 500, 800, 1000, 5000]:195x11 = np.random.choice(x1, size=i)196x22 = np.random.choice(x2, size=i)197x33 = np.random.choice(x3, size=i)198x44 = np.random.choice(x3, size=i)199x55 = np.random.choice(x5, size=i)200e = np.random.normal(0,1,i)201Y = 1 + 0.5*x11 + 1.1*x22 + 0.4*x33 + 1.2*x44 + e #omitimos una variable del GDP202X = np.column_stack((np.ones(i),x11,x22,x33,x44))203results=ols(X,Y)204print(results)205206def ols(M,Y, standar = True, Pvalue = True):207beta = np.linalg.inv(X.T @ X) @ ((X.T) @ Y ) ## estimación de beta208y_est = X @ beta ## Y estimado209n = X.shape[0]210k = X.shape[1] - 1211nk = n - k ## grados de libertad212sigma = sum(list( map( lambda x: x**2 , Y - y_est) )) / nk213Var = sigma*np.linalg.inv(X.T @ X)214sd = np.sqrt( np.diag(Var) ) ## raíz cuadrado a los datos de la diagonal principal de Var215df = pd.DataFrame( {"Tamaño de muestra":i,"Coeficiente": beta , "Error estándar" : sd})216return df217218219220221222223224225