%Kommandoer for parametrisk og ikke-parametrisk bootstrap til forelesningen 5.mai.                                                 
% Leser inn data og beregner gjennomsnitt, median og trimmet gjennomsnitt
%%
x=[0.95 0.85 0.92 0.95 0.93 0.86 1.00 0.92 0.85 0.81 0.78 0.93 0.93 1.05 0.93 1.06 1.06 0.96 0.81 0.96]
mean(x)
median(x)
trimmean(x,20)
%%
% Vi er interessert i å estimere standardfeilene til de tre estimatorene ved hjelp av bootstrap.

% Først bruker vi parametrisk bootstrap. 
% Da trekker vi 20 observasjoner fra normalfordelingen med forventning lik observerert gjennomsnitt 
% og standardavvik lik empirisk standardavvik B=10000 ganger, beregner de tre estimatene 
% for hvert av de B bootstrap-utvalgene, og regner ut empirisk standardavvik til slutt.
%%
n=length(x); m=mean(x); s=std(x);
B=10000;
meanvec=zeros(1,B); medianvec=zeros(1,B); trmeanvec=zeros(1,B);
for b=1:B
xstar=normrnd(m,s,1,n);
meanvec(b)=mean(xstar);
medianvec(b)=median(xstar);
trmeanvec(b)=trimmean(xstar,20);
end
std(meanvec)
std(medianvec)
std(trmeanvec)
%%
% Vi gjør så tilsvarende beregninger for ikke-parametrisk bootstrap
%%
meanvec=zeros(1,B); medianvec=zeros(1,B); trmeanvec=zeros(1,B);
for b=1:B
xstar=randsample(x,n,true);
meanvec(b)=mean(xstar);
medianvec(b)=median(xstar);
trmeanvec(b)=trimmean(xstar,20);
end
std(meanvec)
std(medianvec)
std(trmeanvec)
%%