clc clear all cd 'C:\Users\Nicolás\Documents\Clases\Econometría\' %% Bootstrapping 1 K=1 %% Especifico modelo poblacional %Y=X*B+e n=1000000; %Tamaño muestra 1,000,000 k=1; %Número de regresores X=ones(n,1); B=0.123; %Genero vector de B Kx1 % Genero errores uniformes, limite inferior -1, limite superior 1 e_li=-1; e_ls=1; Ee = (e_li + e_ls)/2; %Esperanza errores 0 s=(( e_ls - e_li)^2)/12;%Varianza errores e=e_li + (e_ls - e_li).*rand(n,1); %Genero valores aleatorios Y=X*B+e; %Modelo especificado; %% Selecciono Muestra aleatoria de Tamaño 100 y estimo el modelo %Selecciono muestra de tamaño 100 id=rand(size(Y,1),1); M= sortrows([Y X id],3); %id aplica igual para x e y y=M(1:100,1); x=M(1:100,2); %Estimo el modelo b=(x'*x)^-1*x'*y; %% Boostrapping t=20000; %Número de iteraciones B_boost(1:t,1)=0; for i=1:t index = unidrnd(100,100,1); %Crea vector de num aleatorios de 0 a 100 discretos X1=x(index,1); %Muestra aleatoria con reemplazo de x Y1=y(index,1) ; %Muestra aleatoria con reemplazo de y B_boost(i,:)=(X1'*X1)^-1*X1'*Y1; end EB_boost=(1/t)*sum(B_boost,1) ; %Promedio VB_boost=(1/t)*sum((B_boost-EB_boost).^2,1); %Varianza sort_B=sortrows(B_boost,1); %Ordeno para calcular intervalos index025=t*0.025;%Límite superior al 95% index975=t*0.975;%Límite inferior al 95% int=[sort_B(index025) sort_B(index975)]; %Intervalo de confianza al 95% %Grafico hist(B_boost,50) hold on ylim = get(gca,'YLim'); h1=plot(int(:,1)*[1,1],ylim*1.05,'b-','LineWidth',2); h2=plot(int(:,2)*[1,1],ylim*1.05,'g-','LineWidth',2); h3=plot(EB_boost*[1,1],ylim*1.05,'r-','LineWidth',2); plot(int(:,1)*[1,1],ylim*1.05,'b-','LineWidth',2); plot(int(:,2)*[1,1],ylim*1.05,'g-','LineWidth',2); plot(EB_boost*[1,1],ylim*1.05,'r-','LineWidth',2); legend([h1,h2,h3],{'Límite inferior al 95%','Límite superior al 95%','Media'}); %Si se quiere testear que H0: B=0, Ha:B<>0 se rechaza la nula ya que 0 está %fuera de los intervalos. %Exporto resultados a excel con comando xlswrite fila=1; xlswrite('Auxiliar 4.xlsx', ['y' 'x'], 'data', sprintf('a%d',fila)) fila=2; %En la primera están los nombres xlswrite('Auxiliar 4.xlsx', [y x], 'data', sprintf('a%d',fila))