پیاده سازی روش بوت استرپ در نرم افزار R

1402/06/14

دسترسی سریع


امروزه موضوع بوت استرپ به عنوان رويكرد ارتقاي قابليت يافته هاي آماري به شدت مورد توجه محققان مختلف است. هدف اين مقاله بررسي روش شناسي آن به طور مختصر و ارائه راههاي محاسبه آن در نرم افزار R است. بوت استرپ روشی ساده اما قوی از روش شبیه سازی مونت كارلو است که برای تعیین دقت آماری یا برآوردکردن توزیع از روی آماره های نمونه است. در واقع یک نوع نمونه گیری است که با تبدیل از یک نمونه به دست می آید؛ نمونه گیری درون یک نمونه. اصل برابری بوت استرپ نشان می دهد که برآوردگر نمونه گرفته شده با روش بوت استرپ، برابر است با برآورد نمونه ی اصلی. روش بوت استرپ دارای دو پیش فرض است:

• نمونه شما، نمونه معتبری از جمعیت است. • بوت استرپ نمونه ای را با جایگزینی از نمونه اصلی خواهد گرفت به طوری که هر نمونه گرفته شده با این روش مستقل، ولی دارای توزیع برابرند. به عبارت دیگر؛ نمونه های گرفته شده با روش بوت استرپ دارای توزیع جمعیت برابرند ولی هر نمونه، مستقل از نمونه های دیگر است.

در اینجا مثال هایی از نمونه مسائلی که شما می توانید با روش بوت استرپ آنها را حل کنید، آورده شده: • فرض کنید شما تعدادی داده نمونه دارید اما نمونه شما آنقدر کوچک است که شما نمی توانید درباره توزیع نمونه تان با اطمینان سخن بگویید و در نتیجه شما نمی توانید دامنه میان چارکی و یا واریانس و یا دیگر پارامتر های جمعیت تان را برآورد کنید. • شما دو نمونه که توزیع آن ها ناشناخته است به نام های Yو X دارید و می خواهید توزیع نسبت Z=X/Y را بشناسید وبعضی از آماره های مفید Z مانند میانگین و انحراف معیار را نیز بشناسید. • شما دو نمونه A وB دارید و می خواهید امتحان کنید که آیا آن ها از یک جمعیت یکسان هستند یا نه؟ • شما مدل رگرسیونی Y=a+bX دارید و می خواهید یک فاصله اطمینان برای پارامترهای a وb بدست آورید. بوت استراپ ناپارامتری در R: در نرم افزار R استفاده از بسته های آماری boot کار را برای انجام بازنمونه گیری بوت استرپ و روشهای شبیه سازی مشابه راحت می کند. می توانید یک آماره را (مثل میانه) یا یک بردار مثل (وزن های رگرسیون) با روش بوت استراپ به دست بیاورید.این قسمت به شما می گوید چه طور با بوت استراپ ناپارامتری اساسی شروع به کار کنید. تابع اصلی بوت استراپ ()boot با ساختار زیر است:

bootobject <- boot(data= , statistic= , R=, ...)

که در آن:

تابع ()boot آماره را R بار فرا می خواند. هر بار، این یک مجموعه از شاخص های تصادفی را تولید می کند، با جایگذاری، از اعداد صحیح (1:nrow(data این شاخص ها در کنار تابع آماره برای انتخاب نمونه استفاده می شوند. آماره ها روی نمونه محاسبه شده و نتیجه در bootobject جمع آوری می شود. ساختار bootobject شامل موارد زیر است. می توانید به این دو آرگومان از طریق bootobject$t0 و bootobject$t دست یابید.
هرگاه نمونه های بوت استراپ را تولید کردید، از (print(bootobject  و (plot(bootobject برای امتحان نتیجه ها استفاده کنید. اگر نتیجه منطقی به نظر رسید، می توانید از ()boot.ci برای رسیدن به فواصل اطمینان برای آماره تان استفاده کنید. ساختار این تابع به صورت زیر است:
boot.ci(bootobject, conf=, type= )
که در آن:
روش بوت استراپ برای یک آماره ی تنها: مثال زیر فاصله اطمینان 95% را برای R^2 در رگرسیون خطی مایل در هر گالن (mpg) را بر وزن اتومبیل (wt) و جابجایی (disp) بررسی می کند. منبع داده ها mtcars می باشد. فاصله اطمینان از روش بوت استراپ بر اساس 1000  تکرار به دست آمد.
Library(boot) # Bootstrap 95% CI for R-Squared library(boot)# function to obtain R-Squared from the data rsq<-function(formula,data,indices){ d<-data[indices,] #allows boot to select sample fit<-lm(formula, data=d) return(summary(fit) $r.square) } #bootstrapping with 1000 replications results<-boot(data=mtcars,statistic=rsq, R=1000,formula=mpg~wt+disp) #viewresults results plot(results) #get 95% confidence interval boot.ci(results, type="bca")
بوت استراپ چندین آماره: در مثال بالا، تابع خروجی تابع rsq یک  عدد و تابع boot.ci تنها یک فاصله اطمینان به ما می دهد. تابع آماره ها می تواند به صورت یک بردار نیز باشد. در مثال بعد، ما یک فاصله اطمینان 95% برای سه مدل رگرسیون (جلوگیری، وزن خودرو، جابجایی) خواهیم یافت. در این حالت یک شاخص پارامتری را به ()plot و ()boot.ci برای نشان دادن بهتر اینکه کدام ستون در bootobject$t در حال تجزیه و تحلیل شدن است، اضافه می کنیم.
# Bootstrap 95% CI for regression coefficients library(boot) # function to obtain regression weights bs <- function(formula, data, indices) { d <- data[indices,] # allows boot to select sample fit <- lm(formula, data=d) return(coef(fit)) } # bootstrapping with 1000 replications results <- boot(data=mtcars, statistic=bs, R=1000, formula=mpg~wt+disp) # view results results plot(results, index=1) # intercept plot(results, index=2) # wt plot(results, index=3) # disp # get 95% confidence intervals boot.ci(results, type="bca", index=1) # intercept boot.ci(results, type="bca", index=2) # wt boot.ci(results, type="bca", index=3) # disp
تابع ()boot می تواند هم به صورت پارامتری و هم ناپارامتری نمونه گیری را انجام دهد. برای بوت استراپ ناپارامتری روش باز نمونه گیری شامل موارد عادی، متعادل، ضدونقیض دار و جایگشت هاست و  بازنمونه های طبقه بندی شده پشتیبانی می شوند. همچنین اهمیت وزن بازنمونه گیری می تواند مشخص گردد. تابع ()boot.ci عامل بوت استراپ(bootobject) را می گیرد و 5 نوع متفاوت از فاصله اطمینان دو طرفه را تولید می کند. شامل: اولین تخمین نرمال، فاصله بوت استراپ  اصلی، فاصله بوت استراپ استیودنت، فاصله درصدی بوت استراپ، فاصله درصدی. می توانید برای کسب  اطلاعات جزییتر از (help(boot و (help(boot.ci و (help(plot.boot  استفاده کنید.

نظرات

هیچ نظری وجود ندارد.


افزودن نظر

Sitemap
Copyright © 2017 - 2023 Khavarzadeh®. All rights reserved