بررسی و ایجاد نمودار Rolling Average با Power BI

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

با توجه به یک سری اعداد و اندازه ثابت زیر مجموعه ، اولین عنصر میانگین متحرک با گرفتن میانگین زیر مجموعه ثابت اولین اعداد بدست می آید. سپس زیر مجموعه با “جابجایی به جلو” اصلاح می شود. به این معنی که اولین شماره مجموعه را در نظر نگیریم و مقدار بعدی را در زیرمجموعه لحاظ کنیم.

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

 

لینک ابزار : پاور بی آی نسخه دسکتاپ

لینک دیتابیس استفاده شده : فایل اکسل FactInternetSales-RollingAverage.xlsx

 

مسئله

آیا می توانید یک Rolling Average را توصیف کنید و اینکه چگونه می توانیم بدون استفاده از DAX یک Rolling Average را در Power BI ایجاد کنیم؟

 

راه حل

Rolling Average چیست؟

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

 

 

محاسبه Rolling Average ساده

تصویر زیر با محاسبه Rolling Average میزان فروش ماهیانه را نشان می دهد. برای این مجموعه از داده ها یک میانگین یک میانگین متحرک ساده سه ماهه محاسبه خواهیم کرد.

 

فرمول بسیار ساده است.مقادیر کل در طول دوره را جمع و به تعداد دوره تقسیم می کنیم.

Simple rolling average = (P1+P2+P3+P4+…+Pn)/n

محاسبه Rolling Average Simple نقطه اول نیز شبیه این فرمول می باشد

Sma1 = (222617+423202+441944)/3

Sma1 = 362588

محاسبه Rolling Average Simple نقطه دوم نیز به همین صورت

Sma2 = (423202+441944+495283)/3

Sma2 = 395762

اکنون با استفاده از Power BI این موارد را پیاده سازی می کنیم. ابتدا نرم افزار Power BI Desktop  را اجرا کرده و از قسمت Get Data فایل اکسل پیوستی را به نرم افزار Import می کنیم.

نمودار Line and stacked column chart را در صفحه طراحی Power BI بکشید و رها کنید.

 

Line and stacked column chart

ستون DueDate را به Shared axis و ستون SalsAmount را به Column values بکشید و رها کنید.

۳ یا ۴ بار روی Expand down one level in the hierarchy کلیک کنید تا نمودار به شکل زیر تبدیل شود. این گزینه به ما این امکان را می دهد تا تمام سطوح مقادیر سلسله مراتب تاریخ را نشان دهیم.

سلسله مراتب Day را حذف کنید زیرا ما به این سلسله مراتب از تاریخ احتیاج نداریم.

بر روی DueDate راست کلیک کرده و گزینه New quick measure را انتخاب کنید.

Rolling average را از زیر عنوان Time intelligence انتخاب کنید.

پنجره Quick Measures را مانند تصویر زیر کامل کنید. زیرا می خواهیم تعداد داده ها و مقدارهای قبل از مقدار فعلی را در مجموعه داده ها مشخص کرده و میانگین را پیدا کنیم. به همین دلیل ، periods before  را روی مقدار ۲ تنظیم می کنیم و چون دوره ما ماهانه است بنابراین Period را Months انتخاب می کنیم.

Measure ساخته شده با عنوان SalesAmount rolling average را به قسمت Line values کشیده و رها می کنیم.

 

در نمودار کلیک راست کرده و Show as a table  را کلیک کنید. این گزینه به ما امکان می دهد مقادیر موجود در نمودار را نشان دهیم.

اگر به پس زمینه محاسبه نگاه کنید ، Power BI به طور خودکار کد DAX لازم را برای این Measure ایجاد می کند. هنگامی که بر روی SalesAmount rolling average کلیک می کنیم ، می توانیم کد DAX را پیدا کنیم.

SalesAmount rolling average = 
IF(
    ISFILTERED('FactInternetSales'[DueDate]),
    ERROR("Time intelligence quick measures can only be grouped or filtered by the Power BI-provided date hierarchy or primary date column."),
    VAR __LAST_DATE = ENDOFMONTH('FactInternetSales'[DueDate].[Date])
    VAR __DATE_PERIOD =
        DATESBETWEEN(
            'FactInternetSales'[DueDate].[Date],
            STARTOFMONTH(DATEADD(__LAST_DATE, -2, MONTH)),
            __LAST_DATE
        )
    RETURN
        AVERAGEX(
            CALCULATETABLE(
                SUMMARIZE(
                    VALUES('FactInternetSales'),
                    'FactInternetSales'[DueDate].[Year],
                    'FactInternetSales'[DueDate].[QuarterNo],
                    'FactInternetSales'[DueDate].[Quarter],
                    'FactInternetSales'[DueDate].[MonthNo],
                    'FactInternetSales'[DueDate].[Month]
                ),
                __DATE_PERIOD
            ),
            CALCULATE(
                SUM('FactInternetSales'[SalesAmount]),
                ALL('FactInternetSales'[DueDate].[Day])
            )
        )
)SalesAmount rolling average = 
IF(
    ISFILTERED('FactInternetSales'[DueDate]),
    ERROR("Time intelligence quick measures can only be grouped or filtered by the Power BI-provided date hierarchy or primary date column."),
    VAR __LAST_DATE = ENDOFMONTH('FactInternetSales'[DueDate].[Date])
    VAR __DATE_PERIOD =
        DATESBETWEEN(
            'FactInternetSales'[DueDate].[Date],
            STARTOFMONTH(DATEADD(__LAST_DATE, -2, MONTH)),
            __LAST_DATE
        )
    RETURN
        AVERAGEX(
            CALCULATETABLE(
                SUMMARIZE(
                    VALUES('FactInternetSales'),
                    'FactInternetSales'[DueDate].[Year],
                    'FactInternetSales'[DueDate].[QuarterNo],
                    'FactInternetSales'[DueDate].[Quarter],
                    'FactInternetSales'[DueDate].[MonthNo],
                    'FactInternetSales'[DueDate].[Month]
                ),
                __DATE_PERIOD
            ),
            CALCULATE(
                SUM('FactInternetSales'[SalesAmount]),
                ALL('FactInternetSales'[DueDate].[Day])
            )
        )
)

 

نتیجه

در این مقاله ، ما منطق Rolling Average و چگونگی ایجاد Rolling Average در Power BI را بررسی کردیم. Rolling Average انواع مختلفی دارد (میانگین متحرک نمایی (EMA) ، میانگین متحرک هموار  (SMMA) و میانگین متحرک وزنی خطی) که با یک Rolling Average ساده متفاوت هستند و خصوصاً در تحلیل های مالی کاربرد زیادی دارد. در این مقاله ما با ساده ترین روش یک Rolling Average را در Power BI بدون استفاده از DAX ایجاد کردیم.

4 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *