% Nedenfor er det gitt kommandoer for prøveeksemen oppgave 2f,g og oppgave 3d  

% Oppgave 2f
% Vi trekker n=10000 observasjoner fra en Rayleigh-fordeling 
% med tetta=5 ved hjelp av inversjonsmetoden
tetta=5
n=10000
u=unifrnd(0,1,[1 n]); 
x=tetta*sqrt(-2*log(1-u));
%%
 
% Plotter histogram (og legger også inn tettheten for Rayleigh-fordelingen med tetta=5)
histogram(x,'normalization','pdf')
xx=(0:0.1:30);
hold on
fx=(xx./tetta.^2).*exp(-xx.^2/(2.*tetta.^2));
plot(xx,fx)
%%


% Oppgave 2g. 
% Sammenligner empiriske verdier fra simuleringene med teoretisk forventning og varians:
EX=tetta*sqrt(pi/2)
VX=tetta^2*(4-pi)/2
mean(x)
var(x)

% Vi ser at det er god overensstemmelse mellom empiriske resultater fra 
% de simulerte dataene og de teoretiske verdiene beregnet fra tettheten. 
% Med n=10000 simuleringer er ikke det så overraskende. 
% Sett f.eks. n=100 og se at da får du lettere noe som ikke er like nær.
%%


% Oppgave 3d
% Vi lager en vektor x som inneholder de 20 bølgehøydene og beregner 
% estimatene tetta_hatt og tetta_tilde
n=20
x=[5.5, 11.1, 6.4, 8.4, 4.7, 7.0, 9.7, 3.7, 11.8, 9.2, 3.8, 3.1, 7.9, 3.2, 12.9, 4.5, 11.3, 3.6, 8.6, 7.4]
tetta_hatt=mean(x)*sqrt(2/pi)
tetta_tilde=sqrt(sum(x.^2)/(2*n))
%%

% Vi bestemmer 95% konfidensintervall for tetta
a=gaminv(0.025,n,2)
b=gaminv(0.975,n,2)
low=sqrt(2*n/b)*tetta_tilde
up=sqrt(2*n/a)*tetta_tilde
[low, up]
%%

% Oppgave 3e
% Vi gjør parametrisk bootstrap for å bestemme standardfeilen til
% estimatene
B=10000;
tetta_hat_vec=zeros(1,B); 
tetta_tilde_vec=zeros(1,B);
for b=1:B
u=unifrnd(0,1,[1 n]);
xstar=tetta_tilde*sqrt(-2*log(1-u));
tetta_hat_vec(b)=mean(xstar)*sqrt(2/pi);
tetta_tilde_vec(b)=sqrt(sum(xstar.^2)/(2*n));
end
std(tetta_hat_vec)
std(tetta_tilde_vec)
%%

