نحوه اضافه کردن خطوط روند در R با استفاده از Plotly

  • 2021-06-14

هنگامی که در حال انجام یک تجزیه و تحلیل اکتشافی از داده های سری زمانی هستید، باید روندها را شناسایی کنید و در عین حال نوسانات تصادفی در داده های خود را نادیده بگیرید. راه های متعددی برای حل این مشکل آماری رایج در R با تخمین خطوط روند وجود دارد. ما در این مقاله نحوه تجسم آن را با استفاده از بسته Plotly به شما نشان خواهیم داد.

1. خطوط روند جهانی

یکی از ساده‌ترین روش‌ها برای شناسایی روندها، برازش مدل رگرسیون حداقل مربعات معمولی به داده‌ها است. مدلی که اکثر مردم با آن آشنا هستند، مدل خطی است، اما می‌توانید برای انعطاف‌پذیری بیشتر، اصطلاحات چند جمله‌ای دیگر را اضافه کنید. در عمل، از چندجمله‌ای با درجه‌های بزرگتر از سه اجتناب کنید، زیرا پایداری کمتری دارند.

Global trendlines with plotly

مجموعه داده های EuStockMarkets (موجود در مجموعه داده های R) برای ساخت خطوط روند خطی، درجه دوم و مکعبی.

2. صاف کننده های موضعی

مدل‌های جهانی فرض می‌کنند که سری‌های زمانی یک روند واحد را دنبال می‌کنند. با این حال، برای بسیاری از مجموعه های داده، ما می خواهیم این فرض را کاهش دهیم. در بخش زیر، استفاده از نرم‌افزارهای محلی را با استفاده از مجموعه داده‌های نیل نشان می‌دهیم. این شامل اندازه گیری های جریان سالانه رودخانه نیل در طول 100 سال است و نسبت به مجموعه داده های EuStockMarkets منظم تر است.

من. میانگین های متحرک

روش میانگین متحرک (همچنین به عنوان میانگین در حال اجرا شناخته می‌شود) شامل گرفتن میانگین تعداد ثابتی از نقاط نزدیک است. حتی با این روش ساده می بینیم که این سوال که چگونه محله را انتخاب کنیم برای هموارکننده های محلی بسیار مهم است. افزایش پهنای باند از 5 به 20 نشان می دهد که به جای کاهش شدید در حدود سال 1900، به تدریج در جریان رودخانه سالانه از 1890 تا 1905 کاهش می یابد.

بسیاری از بسته‌ها شامل توابعی برای محاسبه میانگین در حال اجرا هستند مانند caTools::runmean و forecast::ma که ممکن است ویژگی‌های اضافی داشته باشند، اما فیلتر در بسته آماری پایه می‌تواند برای محاسبه میانگین متحرک بدون نصب بسته‌های اضافی استفاده شود.

Moving averages in plotly

داده ("نیل") xx = نیل x. info = attr(xx، "tsp") tt = seq(from=x. info[1], to = x. info[2], by=1/x. info(3)plotly) p. rm = plot_ly(x=tt, y=xx, type="scatter", mode="lines", line=data. fmt, name="Data") p. rm = add_lines(p. rm, x=tt, y=rmean20, line=line. fmt, name="Bandwidth = 20") p. rm = add_lines(p. rm, x=tt, y=rmean5, line=line. fmt, name=" پهنای باند= 5") p. rm = طرح (p. rm، عنوان = "Running mean") print (p. rm)

iiصاف کننده خطوط در حال اجرا

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

Running line smoothers in plotly

rlcv = supsmu(tt, xx) rlst = supsmu(tt, xx, span = 0. 05) rllt = supsmu(tt, xx, span = 0. 75) p. rl = plot_ly(x=tt, y=xx, type="scatter", mode="lines", line = data. fmt, name="Data") p. rl = add_lines(p. rl, x=tt, y=rllt$y, line=line. fmt, name="Span= 0. 75") p. rl = add_lines(p. rl، x=tt، y=rlst$y، line=line. fmt، name="Span = 0. 05") p. rl = add_lines(p. rl، x=tt, y=rlcv$y, line=line. fmt, name="Cross-validated span") p. rl = layout(p. rl, title = "Sunning line smoothers") print(p. rl)

III. صاف کننده های هسته

یک رویکرد جایگزین برای مشخص کردن یک محله، کاهش وزن‌ها دورتر از مقدار هدف است. این تخمین‌ها بسیار روان‌تر از نتایج حاصل از هموارکننده‌های میانگین یا در حال اجرا هستند.

Kernel smoothers in plotly

IVصاف کردن اسپلاین

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

Smoothing splines trend lines in plotly

در بسته پایه ، Smooth. Spline می تواند برای محاسبه اسپلین ها استفاده شود ، اما استفاده از عملکرد GAM در MGCV رایج تر است. هر دو عملکرد از اعتبار سنجی متقاطع برای انتخاب پارامتر پیش فرض هموار سازی استفاده می کنند. اما همانطور که در نمودار بالا مشاهده می شود ، نتایج بین پیاده سازی ها متفاوت است. مزیت دیگر استفاده از GAM این است که تخمین فواصل اطمینان را فراهم می کند.

v. loess

Loess (تخمین زده شده محلی ScatterPlot Smoother) با استفاده از رگرسیون چند جمله ای با وزنه برداری محلی (به طور پیش فرض ، رگرسیون درجه دوم با وزن های سه جوراب) ، رگرسیون محلی را با هسته ها ترکیب می کند. همچنین امکان تخمین فواصل اطمینان تقریبی را فراهم می کند. با این حال ، توجه به این نکته حائز اهمیت است که برخلاف SUPSMU ، Smooth. Sline یا GAM ، Loess از اعتبارسنجی متقاطع استفاده نمی کند. به طور پیش فرض ، دهانه روی 0. 75 تنظیم شده است. یعنی تخمین زده شده در هر مقدار هدف از رگرسیون محلی ساخته شده است که با استفاده از 75 ٪ از نقاط داده نزدیک به مقدار هدف ساخته شده است. این دهانه نسبتاً بزرگ است و منجر به مقادیر تخمین زده شده نسبت به روشهای دیگر می شود.

LOESS trend line with different spans in plotly

ll. rough = loess (xx~tt ، span = 0. 1) ll. smooth = loess (xx~tt ، span = 0. 75) p. ll = plot_ly (x = tt ، y = xx ، type = "پراکندگی" ، mode = "خطوط" ، line = data. fmt ، name = "data") p. ll = add_lines (p. ll ، x = tt ، y = پیش بینی (ll. smooth) ، line = line. fmt ، name = "span = 0. 75") p. ll = add_lines (p. ll ، x = tt ، y = پیش بینی (ll. rough) ، line = line. fmt ، name = "span = 0. 10") p. ll = طرح (p. ll ، title = "loess") چاپ (p. ll)

  • نویسنده : رحيمي اردبيلي نهال
  • منبع : technifyingkenya.tech
  • بدون دیدگاه

برچسب ها

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.