Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG1/Grupo_8_R.R
2714 views
1
" Ejercicio 1"
2
# -------------------------------------------------------
3
4
#Creamos un vector cuyos datos est�n entre 0 y 500 y contenga 20 datos.
5
6
x <- runif(20,0,500) # runif( n: cantidad de elementos, inicio , final)
7
print(x)
8
9
# Elaboramos una estructura If statement para la siguiente funci�n
10
# y aplicamos condici�n a cada uno de los elemento
11
12
calculator <- function(x){
13
x <- x
14
15
if ( x>0 & x<=100) {
16
return( cat( "F(x)=" ,x ^ (1/2) ) )
17
} else if ( x>100 & x<=300 ) {
18
19
return( cat( "F(X)=", x - 5 ) )
20
21
} else if (x>300) {
22
23
return(print("F(X)=50"))
24
25
}
26
27
}
28
29
calculator( 64 )
30
31
" Ejercicio 2"
32
# -------------------------------------------------------
33
34
# creamos un vector "v" de 100 observaciones
35
v <- array(1:100)
36
print(v)
37
38
min(v) #para ir observando el m�nimo de dicho vector
39
max(v)
40
41
#creamos una matriz "M"
42
M <- matrix( c(1,2,3,4,5,6,7,8,9,10), nrow = 100, ncol=50) #indicamos que sea una matriz de 100x50.En este caso, tendr� valores del 1 al 10
43
print(M)
44
45
dim(M) #comprobamos que M sea una matriz de 100x50
46
typeof(v)
47
typeof(M) #observamos el tipo
48
49
#para reescalar los datos de las columnas de la matriz, queremos ver sus m�nimos y m�ximos por columna
50
X <- min(M, axis=0) #axis=0 pq queremos observar por columnas
51
Y <- max(M, axis=0)
52
print(X)
53
print(Y)
54
55
#reescalamos vector y matriz
56
# No corre el c�digo si detecta un error
57
tryCatch((v-min(v)) / max(v)-min(v),
58
59
error = function(e) {
60
61
cat("El argumento deberia ser un vector")
62
63
}
64
)
65
66
tryCatch( (M-X) / Y-X,
67
68
error = function(e) {
69
70
cat("El argumento deberia ser una matriz")
71
72
}
73
)
74
75
#Pregunta 3
76
77
#sample(seq(),10000)
78
set.seed(10000) # permite que los numeros aleatorios no cambien al correr los c�digos
79
80
x10 <- runif(10)
81
x210 <- runif(10)
82
x310 <- runif(10)
83
x410 <- runif(10)
84
e <- rnorm(10)
85
86
#Isntrumento
87
88
z <- rnorm(10)
89
90
# Poblacional regression (Data Generating Process GDP)
91
92
Y <- 1 + 0.8*x10 + 1.2*x210 + 0.5*x310 + 1.5*x410 + e
93
X <- cbind(matrix(1,10), x1,x2,x3,x4)
94
95
ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){
96
97
98
if (standar & Pvalue & is.null(instrumento) & is.null(index)){
99
100
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
101
102
y_est <- M %*% beta ## Y estimado
103
n <- dim(M)[1] # filas
104
k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}
105
df <- n- k ## grados de libertad
106
sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df
107
108
Var <- sigma*solve(t(M) %*% M)
109
sd <- sapply(diag(Var) , sqrt) ## ra�z cuadrado a los datos de la diagonal principal de Var
110
111
t.est <- abs(beta/sd)
112
pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad
113
114
table <- data.frame(OLS = beta,
115
standar.error = sd, P.value = pvalue)
116
117
118
}
119
120
121
if ( !is.null(instrumento) & !is.null(index) ){
122
123
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
124
125
index <- index + 1
126
127
Z <- X
128
Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables
129
130
beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])
131
132
x_est <- Z %*% beta_x
133
X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado
134
135
beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)
136
137
table <- data.frame(OLS= beta,
138
OLS.IV = beta_iv)
139
140
}
141
142
return(table)
143
}
144
145
146
ols(X,Y)
147
148
ols(X,Y,instrumento = z, index = 1)
149
150
Uno<-rbind(ols(X,Y))
151
152
x150 <- runif(50)
153
x250 <- runif(50)
154
x350 <- runif(50)
155
x450 <- runif(50)
156
e <- rnorm(50)
157
158
#Isntrumento
159
160
z <- rnorm(50)
161
162
# Poblacional regression (Data Generating Process GDP)
163
164
Y <- 1 + 0.8*x150 + 1.2*x250 + 0.5*x350 + 1.5*x450 + e
165
X <- cbind(matrix(1,50), x1,x2,x3,x4)
166
167
ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){
168
169
170
if (standar & Pvalue & is.null(instrumento) & is.null(index)){
171
172
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
173
174
y_est <- M %*% beta ## Y estimado
175
n <- dim(M)[1] # filas
176
k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}
177
df <- n- k ## grados de libertad
178
sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df
179
180
Var <- sigma*solve(t(M) %*% M)
181
sd <- sapply(diag(Var) , sqrt) ## ra�z cuadrado a los datos de la diagonal principal de Var
182
183
t.est <- abs(beta/sd)
184
pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad
185
186
table <- data.frame(OLS = beta,
187
standar.error = sd, P.value = pvalue)
188
189
190
}
191
192
193
if ( !is.null(instrumento) & !is.null(index) ){
194
195
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
196
197
index <- index + 1
198
199
Z <- X
200
Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables
201
202
beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])
203
204
x_est <- Z %*% beta_x
205
X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado
206
207
beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)
208
209
table <- data.frame(OLS= beta,
210
OLS.IV = beta_iv)
211
212
}
213
214
return(table)
215
}
216
217
218
ols(X,Y)
219
220
ols(X,Y,instrumento = z, index = 1)
221
Dos <-rbind(ols(X,Y))
222
223
x100 <- runif(100)
224
x2100 <- runif(100)
225
x3100 <- runif(100)
226
x4100 <- runif(100)
227
e <- rnorm(100)
228
229
#Isntrumento
230
231
z <- rnorm(100)
232
233
# Poblacional regression (Data Generating Process GDP)
234
235
Y <- 1 + 0.8*x100 + 1.2*x2100 + 0.5*x3100 + 1.5*x4100 + e
236
X <- cbind(matrix(1,100), x1,x2,x3,x4)
237
238
ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){
239
240
241
if (standar & Pvalue & is.null(instrumento) & is.null(index)){
242
243
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
244
245
y_est <- M %*% beta ## Y estimado
246
n <- dim(M)[1] # filas
247
k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}
248
df <- n- k ## grados de libertad
249
sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df
250
251
Var <- sigma*solve(t(M) %*% M)
252
sd <- sapply(diag(Var) , sqrt) ## ra�z cuadrado a los datos de la diagonal principal de Var
253
254
t.est <- abs(beta/sd)
255
pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad
256
257
table <- data.frame(OLS = beta,
258
standar.error = sd, P.value = pvalue)
259
260
261
}
262
263
264
if ( !is.null(instrumento) & !is.null(index) ){
265
266
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
267
268
index <- index + 1
269
270
Z <- X
271
Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables
272
273
beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])
274
275
x_est <- Z %*% beta_x
276
X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado
277
278
beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)
279
280
table <- data.frame(OLS= beta,
281
OLS.IV = beta_iv)
282
283
}
284
285
return(table)
286
}
287
288
289
ols(X,Y)
290
291
ols(X,Y,instrumento = z, index = 1)
292
Tres <-rbind(ols(X,Y))
293
294
x1500 <- runif(500)
295
x2500 <- runif(500)
296
x3500 <- runif(500)
297
x4500 <- runif(500)
298
e <- rnorm(500)
299
300
#Isntrumento
301
302
z <- rnorm(500)
303
304
# Poblacional regression (Data Generating Process GDP)
305
306
Y <- 1 + 0.8*x1500 + 1.2*x2500 + 0.5*x3500 + 1.5*x4500 + e
307
X <- cbind(matrix(1,500), x1,x2,x3,x4)
308
309
ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){
310
311
312
if (standar & Pvalue & is.null(instrumento) & is.null(index)){
313
314
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
315
316
y_est <- M %*% beta ## Y estimado
317
n <- dim(M)[1] # filas
318
k <- dim(M)[2] - 1 # varaibles sin contar el intercepto}
319
df <- n- k ## grados de libertad
320
sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df
321
322
Var <- sigma*solve(t(M) %*% M)
323
sd <- sapply(diag(Var) , sqrt) ## ra�z cuadrado a los datos de la diagonal principal de Var
324
325
t.est <- abs(beta/sd)
326
pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) ## pt : t - student densidad
327
328
table <- data.frame(OLS = beta,
329
standar.error = sd, P.value = pvalue)
330
331
332
}
333
334
335
if ( !is.null(instrumento) & !is.null(index) ){
336
337
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
338
339
index <- index + 1
340
341
Z <- X
342
Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables
343
344
beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])
345
346
x_est <- Z %*% beta_x
347
X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado
348
349
beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)
350
351
table <- data.frame(OLS= beta,
352
OLS.IV = beta_iv)
353
354
}
355
356
return(table)
357
}
358
359
360
ols(X,Y)
361
362
ols(X,Y,instrumento = z, index = 1)
363
364
Cuatro <-rbind(ols(X,Y))
365
366
#Cuadro de resultados:
367
Cinco<-rbind(Uno,Dos,Tres,Cuatro)
368
Cinco
369
370
#Se pueden observar los diferentes valores para cada diferente cantidad de muestra, con los coeficientes y errores est�ndar.
371
372
# PREGUNTA 4
373
374
set.seed(800) # Fijamos una semilla para no cambiar los n�meros aleatorios
375
# Declaramos las variables aleatorias
376
x1 <- runif(800)
377
x2 <- runif(800)
378
x3 <- runif(800)
379
x4 <- runif(800)
380
x5 <- runif(800)
381
x6 <- runif(800)
382
x7 <- runif(800)
383
e <- rnorm(800)
384
385
# Definimos el instrumento
386
z <- rnorm(800)
387
Y <- 1 + 0.8*x1 + 1.2*x2 + 0.5*x3 + 1.5*x4 +1.5*x5 +1.5*x6 +1.5*x7+ e
388
X <- cbind(matrix(1,800), x1,x2,x3,x4,x5,x6,x7)
389
390
ols <- function(M, Y , standar = T, Pvalue = T , instrumento = NULL, index = NULL){
391
392
393
if (standar & Pvalue & is.null(instrumento) & is.null(index)){
394
395
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
396
397
y_est <- M %*% beta # Y estimado
398
n <- dim(M)[1] # Filas
399
k <- dim(M)[2] - 1 # Variables sin contar el intercepto
400
df <- n- k # grados de libertad
401
sigma <- sum(sapply(Y - y_est , function(x) x ^ 2))/ df
402
403
Var <- sigma*solve(t(M) %*% M)
404
sd <- sapply(diag(Var) , sqrt) # Raiz cuadrada a los datos de la diagonal principal de Var
405
root <- sapply(Y - y_est , function(x) x ^ 2)
406
liminf <- beta -1.96*sd # Limite inferior
407
limsup <- beta +1.96*sd # Limite superior
408
t.est <- abs(beta/sd)
409
pvalue <-2*pt(t.est, df = df, lower.tail = FALSE) # pt : t - student densidad
410
411
# Formamos la tabla con los resultados requeridos
412
table <- data.frame(OLS = beta,
413
standar.error = sd, P.value = pvalue, Lim.Inf=liminf, Limf.Sup= limsup)
414
415
}
416
417
418
if ( !is.null(instrumento) & !is.null(index) ){
419
420
beta <- solve(t(M) %*% M) %*% (t(M) %*% Y)
421
422
index <- index + 1
423
424
Z <- X
425
Z[,index] <- z ## reemplazamos la variable end�gena por el instrumento en la matrix de covariables
426
427
beta_x <- solve(t(Z) %*% Z) %*% (t(Z) %*% X[,index])
428
429
x_est <- Z %*% beta_x
430
X[,index] <- x_est ## se reemplaza la variable x end�gena por su estimado
431
432
beta_iv <- solve(t(X) %*% X) %*% (t(X) %*% Y)
433
434
table <- data.frame(OLS= beta,
435
OLS.IV = beta_iv)
436
437
}
438
439
return(table)
440
}
441
442
# Corremos la funcion
443
ols(X,Y)
444
445
446