datasample/bootstrap procedure
6 views (last 30 days)
Show older comments
Anton Sørensen
on 13 Mar 2020
Commented: Anton Sørensen
on 14 Mar 2020
Basically I need to ensure for all rows in the variable t1, that they are resampled in the same way.
That means that if the first draw is observation 2, then for all t1, I need observation 2 to be the first draw. This continues, such that I will have b resamples that resamples so that the samples are reordered, but for all t1 they has to be re-ordered the same way. By using rng I achieve this. I also need the variable "carhartt" to follow the same procedure.
However, I am questioning whether there is a better method for doing this? It is very important that i resample all t1 in the same way.
It is also important that each bootstrap/datasample is random.
Do any of you experts have a better solution, or do you approve of the one I use here?
I am trying to bootstrap/resample the best appropriate way:
y=+aDanmark()-bDanmark(:,5);
t1=y(1:t,:);
nans = any(isnan(t1),1);
t1(:,nans)=[];
for i =1:size(t1,2)
resultst1=ols(t1(1:12,i),carhart(1:12,:));
estimatest1(:,i)=resultst1.beta(1);
residuals=resultst1.resid;
carhartt=carhart(1:12,:);
b=99;
for B=1:b
rng(B);
bootresiduals=datasample(residuals,size(residuals,1));
rng(B);
bootcarhart=datasample(carhartt,size(residuals,1));
B
end
end
3 Comments
Accepted Answer
Guillaume
on 14 Mar 2020
In the following, I'm assuming that residuals and carhartt are both matrices. It looks like they are from your code. If not the code should be slightly different but the principle still stands.
However, I find it a bit strange that you're drawing K rows with replacement from a matrix with K rows. I would have expected the 2 K to be different.
Anyway, instead of drawing the samples directly, draw their row indices. You can then use the indices for both matrices:
samplerows = datasample(1:size(residuals, 1), size(residuals, 1));
%or without any need of the stat toolbox:
%sampleindices = randi(size(residuals, 1), size(residuals, 1)); %1st size is the size of the input, 2nd size is the number of samples
bootresiduals = residuals(samplerows, :);
bootcarhart = carhartt(samplerows, :);
3 Comments
Guillaume
on 14 Mar 2020
I know nothing about finance computation, so have no idea what "OLS estimates on my resampled residuals" actually mean and don't have any inkling as to what you're asking.
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!