روش حداقل مربعات معمولی تقریب داده های تجربی

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

بیان مسئله در یک مثال خاص

فرض کنید دو اندیکاتور X و Y وجود دارد. علاوه بر این، Y به X بستگی دارد. از آنجایی که OLS از نقطه نظر تحلیل رگرسیون مورد توجه ما است (در اکسل، روش‌های آن با استفاده از توابع داخلی پیاده‌سازی می‌شوند)، باید بلافاصله ادامه دهیم. برای در نظر گرفتن یک مشکل خاص

بنابراین، اجازه دهید X منطقه فروش یک فروشگاه مواد غذایی باشد که در آن اندازه گیری می شود متر مربعو Y گردش مالی سالانه است که در میلیون ها روبل تعریف می شود.

لازم است پیش بینی کنید که اگر فروشگاه دارای یک یا آن مکان خرده فروشی باشد چه گردش مالی (Y) خواهد داشت. بدیهی است که تابع Y = f (X) در حال افزایش است، زیرا هایپر مارکت کالاهای بیشتری از غرفه می فروشد.

چند کلمه در مورد صحت داده های اولیه مورد استفاده برای پیش بینی

فرض کنید جدولی داریم که با داده ها برای n فروشگاه ساخته شده است.

مطابق با آمار ریاضی، اگر داده های حداقل 5-6 شی بررسی شود، نتایج کم و بیش درست خواهد بود. همچنین، از نتایج "غیر عادی" نمی توان استفاده کرد. به ویژه، یک بوتیک کوچک نخبه می تواند گردش مالی چندین برابر بیشتر از گردش مالی فروشگاه های بزرگ کلاس "masmarket" داشته باشد.

ماهیت روش

داده های جدول را می توان در صفحه دکارتی به عنوان نقاط M 1 (x 1، y 1)، ... M n (x n، y n) نمایش داد. اکنون حل مسئله به انتخاب یک تابع تقریبی y = f (x) کاهش می یابد، که دارای نموداری است که تا حد امکان به نقاط M 1، M 2، .. M n گذر می کند.

البته می توانید از چند جمله ای استفاده کنید درجه بالا، اما اجرای این گزینه نه تنها دشوار است، بلکه به سادگی نادرست است، زیرا روند اصلی را که باید شناسایی شود منعکس نمی کند. معقول ترین راه حل جستجوی خط مستقیم y = ax + b است که به بهترین وجه به داده های تجربی و به طور دقیق تر، ضرایب a و b را تقریب می کند.

امتیاز دقت

برای هر تقریبی، ارزیابی دقت آن از اهمیت ویژه ای برخوردار است. تفاوت (انحراف) بین مقادیر عملکردی و تجربی برای نقطه x i را با e i نشان دهید، یعنی e i = y i - f (x i).

بدیهی است که برای ارزیابی دقت تقریب، می توانید از مجموع انحرافات استفاده کنید، به عنوان مثال، هنگام انتخاب یک خط مستقیم برای نمایش تقریبی وابستگی X به Y، باید خطی را ترجیح داد که برای آن کوچکترین ارزشمجموع e i در تمام نقاط در نظر گرفته شده است. با این حال ، همه چیز به این سادگی نیست ، زیرا در کنار انحرافات مثبت ، عملاً موارد منفی نیز وجود خواهد داشت.

می توانید با استفاده از ماژول های انحراف یا مربع های آنها مشکل را حل کنید. روش دوم بیشترین استفاده را دارد. در بسیاری از زمینه ها از جمله تجزیه و تحلیل رگرسیون استفاده می شود (در اکسل، اجرای آن با استفاده از دو تابع داخلی انجام می شود) و مدت هاست که اثربخشی آن ثابت شده است.

روش حداقل مربعات

همانطور که می دانید در اکسل یک تابع autosum داخلی وجود دارد که به شما امکان می دهد مقادیر تمام مقادیر موجود در محدوده انتخاب شده را محاسبه کنید. بنابراین، هیچ چیز ما را از محاسبه مقدار عبارت باز نمی دارد (e 1 2 + e 2 2 + e 3 2 + ... e n 2).

در نماد ریاضی، به نظر می رسد:

از آنجایی که در ابتدا تصمیم به تقریب با استفاده از یک خط مستقیم گرفته شد، داریم:

بنابراین، وظیفه یافتن یک خط مستقیم که به بهترین شکل یک رابطه خاص بین X و Y را توصیف می کند، به محاسبه حداقل یک تابع از دو متغیر می رسد:

این مستلزم معادل سازی مشتقات جزئی صفر با توجه به متغیرهای جدید a و b و حل یک سیستم ابتدایی متشکل از دو معادله با 2 مجهول از شکل است:

پس از تبدیل های ساده، از جمله تقسیم بر 2 و دستکاری مجموع، به دست می آوریم:

برای حل آن، به عنوان مثال، با روش کرامر، یک نقطه ثابت با ضرایب معین a * و b * به دست می آوریم. این حداقل است، یعنی برای پیش بینی اینکه فروشگاه با یک منطقه خاص چه گردش مالی خواهد داشت، خط مستقیم y = a * x + b * مناسب است، که مدل رگرسیونبرای مثال مورد بحث البته، این به شما اجازه نمی دهد که نتیجه دقیق را پیدا کنید، اما به شما کمک می کند تا تصور کنید که آیا خرید یک فروشگاه به صورت اعتباری برای یک منطقه خاص نتیجه می دهد یا خیر.

نحوه پیاده سازی روش حداقل مربعات در اکسل

اکسل تابعی برای محاسبه مقدار حداقل مربعات دارد. شکل زیر را دارد: TREND (مقادیر Y شناخته شده؛ مقادیر X شناخته شده؛ مقادیر X جدید؛ ثابت). بیایید فرمول محاسبه OLS در اکسل را در جدول خود اعمال کنیم.

برای انجام این کار، در سلولی که باید نتیجه محاسبه با استفاده از روش حداقل مربعات در اکسل نمایش داده شود، علامت "=" را وارد کرده و تابع "TREND" را انتخاب کنید. در پنجره باز شده، فیلدهای مربوطه را پر کنید و برجسته کنید:

  • محدوده مقادیر شناخته شده برای Y (در این مورد داده های گردش مالی)؛
  • محدوده x 1، …x n، یعنی اندازه فضای خرده فروشی؛
  • و مقادیر شناخته شده و ناشناخته x، که برای آن باید اندازه گردش مالی را بدانید (برای اطلاعات در مورد مکان آنها در کاربرگ، به زیر مراجعه کنید).

علاوه بر این، یک متغیر منطقی "Const" در فرمول وجود دارد. اگر 1 را در فیلد مربوط به آن وارد کنید، به این معنی است که با فرض b \u003d 0، باید محاسبات انجام شود.

اگر باید پیش بینی را برای بیش از یک مقدار x بدانید، پس از وارد کردن فرمول، نباید "Enter" را فشار دهید، بلکه باید ترکیب "Shift" + "Control" + "Enter" ("Enter" را تایپ کنید. ) روی صفحه کلید.

برخی از ویژگی ها

تجزیه و تحلیل رگرسیون می تواند حتی برای آدمک ها نیز قابل دسترسی باشد. فرمول اکسلبرای پیش‌بینی مقدار آرایه‌ای از متغیرهای ناشناخته - "TREND" - می‌تواند حتی برای کسانی که هرگز در مورد روش حداقل مربعات نشنیده‌اند استفاده شود. تنها دانستن برخی ویژگی های کار آن کافی است. به خصوص:

  • اگر محدوده مقادیر شناخته شده متغیر y را در یک سطر یا ستون مرتب کنیم، هر سطر (ستون) با ارزش های شناخته شده x توسط برنامه به عنوان یک متغیر جداگانه در نظر گرفته می شود.
  • اگر محدوده با x شناخته شده در پنجره "TREND" مشخص نشده باشد، در صورت استفاده از تابع در برنامه اکسلآن را به عنوان آرایه ای متشکل از اعداد صحیح در نظر می گیرد که تعداد آنها با محدوده با مقادیر داده شده متغیر y مطابقت دارد.
  • برای خروجی آرایه ای از مقادیر "پیش بینی شده"، عبارت روند باید به عنوان فرمول آرایه وارد شود.
  • اگر مقدار x جدیدی مشخص نشده باشد، تابع TREND آنها را برابر با مقادیر شناخته شده در نظر می گیرد. اگر آنها مشخص نشده باشند، آرایه 1 به عنوان آرگومان در نظر گرفته می شود. 2 3; 4;…، که متناسب با محدوده با پارامترهای قبلاً داده شده y است.
  • محدوده حاوی مقادیر x جدید باید از همان یا باشد بیشترردیف ها یا ستون ها، به عنوان یک محدوده با مقادیر y داده شده. به عبارت دیگر باید متناسب با متغیرهای مستقل باشد.
  • آرایه ای با مقادیر x شناخته شده می تواند شامل چندین متغیر باشد. با این حال، اگر ما داریم صحبت می کنیمفقط حدود یک، پس لازم است که محدوده های با مقادیر داده شده x و y متناسب باشند. در مورد چندین متغیر، لازم است که محدوده با مقادیر y داده شده در یک ستون یا یک ردیف قرار گیرد.

تابع FORECAST

با استفاده از چندین توابع پیاده سازی می شود. یکی از آنها "پیش بینی" نام دارد. این شبیه به TREND است، یعنی نتیجه محاسبات را با استفاده از روش حداقل مربعات نشان می دهد. با این حال، فقط برای یک X، که مقدار Y برای آن ناشناخته است.

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

  • آموزش

مقدمه

من یک برنامه نویس کامپیوتر هستم. زمانی که یاد گرفتم بگویم: "من هیچی نمیفهمم!"حالا خجالت نمی‌کشم به مرشد علم بگویم که برای من سخنرانی می‌کند، نمی‌فهمم آن بزرگوار با من از چه حرف می‌زند. و خیلی سخته بله، سخت و شرم آور است که اعتراف کنید که نمی دانید. کسی که دوست دارد اعتراف کند که اصول چیزی را در آنجا نمی داند. به دلیل حرفه ام، مجبورم در تعداد زیادی سخنرانی و سخنرانی شرکت کنم، جایی که، اعتراف می کنم، در اکثر موارد احساس خواب آلودگی می کنم، زیرا چیزی نمی فهمم. و من نمی فهمم زیرا مشکل بزرگ وضعیت فعلی علم در ریاضیات نهفته است. فرض بر این است که همه دانش آموزان کاملاً با تمام زمینه های ریاضیات آشنا هستند (که پوچ است). اعتراف به اینکه نمی دانید مشتق چیست (که این کمی دیرتر است) شرم آور است.

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

آیا می دانید مشتق چیست؟ به احتمال زیاد در مورد حد و مرز رابطه تفاوت به من خواهید گفت. در سال اول ریاضیات در دانشگاه دولتی سنت پترزبورگ، ویکتور پتروویچ خاوین من تعریف شده استمشتق به عنوان ضریب اولین جمله از سری تیلور تابع در نقطه (این یک ژیمناستیک جداگانه برای تعیین سری تیلور بدون مشتقات بود). مدت زیادی به این تعریف خندیدم تا اینکه بالاخره فهمیدم در مورد چیست. مشتق چیزی بیش از اندازه گیری نیست که نشان می دهد چقدر تابعی که ما متمایز می کنیم به تابع y=x, y=x^2, y=x^3 شباهت دارد.

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

چالش برای آینده نزدیک: به دانش‌آموزانم دستور دادم که بفهمند یک کنترل‌کننده خطی- درجه دوم چیست. خجالتی نباش، سه دقیقه از عمرت را هدر بده، لینک را دنبال کن. اگر چیزی متوجه نشدید، پس ما در راه هستیم. من (یک ریاضی دان-برنامه نویس حرفه ای) هم چیزی نفهمیدم. و من به شما اطمینان می دهم، این را می توان "بر روی انگشتان دست" مرتب کرد. در حال حاضر نمی‌دانم چیست، اما به شما اطمینان می‌دهم که می‌توانیم آن را کشف کنیم.

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

بنابراین، با توجه به دو نقطه (x0، y0)، (x1، y1)، به عنوان مثال، (1،1) و (3،2)، وظیفه پیدا کردن معادله یک خط مستقیم از این دو نقطه است:

تصویر

این خط مستقیم باید معادله ای مانند زیر داشته باشد:

در اینجا آلفا و بتا برای ما ناشناخته هستند، اما دو نقطه از این خط شناخته شده است:

می توانید این معادله را به صورت ماتریسی بنویسید:

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

بیایید ماتریس های خاص را با نمایش نمادین آنها جایگزین کنیم:

سپس (آلفا، بتا) را می توان به راحتی پیدا کرد:

به طور خاص برای داده های قبلی ما:

که منجر به معادله زیر خط مستقیمی می شود که از نقاط (1،1) و (3،2) می گذرد:

خوب، اینجا همه چیز روشن است. و بیایید معادله یک خط مستقیم را پیدا کنیم سهنقاط: (x0,y0)، (x1,y1) و (x2,y2):

اوه اوه، اما ما سه معادله برای دو مجهول داریم! ریاضیدان استاندارد خواهد گفت که هیچ راه حلی وجود ندارد. برنامه نویس چه خواهد گفت؟ و ابتدا سیستم معادلات قبلی را به شکل زیر بازنویسی می کند:

در مورد ما بردارهای i,j,bبنابراین، سه بعدی (در مورد کلی) هیچ راه حلی برای این سیستم وجود ندارد. هر بردار (alpha\*i + beta\*j) در صفحه ای قرار دارد که توسط بردارهای (i, j) پوشانده شده است. اگر b به این صفحه تعلق نداشته باشد، هیچ راه حلی وجود ندارد (برابری در معادله به دست نمی آید). چه باید کرد؟ بیایید به دنبال مصالحه باشیم. بیایید نشان دهیم e (آلفا، بتا)دقیقاً چگونه به برابری نرسیدیم:

و ما سعی خواهیم کرد این خطا را به حداقل برسانیم:

چرا مربع؟

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

بدیهی است که هنگام بردار خطا به حداقل می رسد همتعامد به صفحه ای که توسط بردارها پوشانده شده است منو j.

تصویر

به عبارت دیگر: ما به دنبال خطی هستیم که مجموع مجذور طول فواصل تمام نقاط تا این خط حداقل باشد:

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

تصویر

در کلمات کاملاً متفاوت (با دقت، به طور ضعیف رسمی شده است، اما باید روی انگشتان مشخص باشد): ما همه خطوط ممکن را بین همه جفت نقاط می گیریم و به دنبال خط متوسط ​​بین همه می گردیم:

تصویر

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

حداقل فرم درجه دوم

بنابراین، با توجه به بردار بو صفحه ای که توسط ستون ها-بردارهای ماتریس پوشانده شده است آ(در این حالت (x0,x1,x2) و (1,1,1)) به دنبال یک بردار هستیم. هبا حداقل مربع طول بدیهی است که حداقل برای بردار قابل دستیابی است ه، متعامد به صفحه پوشیده شده توسط ستون ها-بردارهای ماتریس آ:

به عبارت دیگر، ما به دنبال یک بردار x=(آلفا، بتا) هستیم که:

یادآوری می کنم که این بردار x=(آلفا، بتا) حداقل است تابع درجه دوم||e(آلفا، بتا)||^2:

در اینجا یادآوری این نکته مفید است که ماتریس را می توان به خوبی شکل درجه دوم تفسیر کرد، برای مثال، ماتریس هویت ((1,0),(0,1)) را می توان به عنوان تابعی از x^2 + y تفسیر کرد. ^2:

فرم درجه دوم

تمام این ژیمناستیک به عنوان رگرسیون خطی شناخته می شود.

معادله لاپلاس با شرط مرزی دیریکله

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

commit اصلی موجود است. برای به حداقل رساندن وابستگی‌های خارجی، کد رندر نرم‌افزارم را که قبلاً روی Habré بود، گرفتم. برای راه حل ها سیستم خطیمن از OpenNL استفاده می کنم، این یک حل کننده عالی است، اما نصب آن واقعاً سخت است: شما باید دو فایل (.h+.c) را در پوشه پروژه خود کپی کنید. تمام صاف کردن توسط کد زیر انجام می شود:

برای (int d=0; d<3; d++) { nlNewContext(); nlSolverParameteri(NL_NB_VARIABLES, verts.size()); nlSolverParameteri(NL_LEAST_SQUARES, NL_TRUE); nlBegin(NL_SYSTEM); nlBegin(NL_MATRIX); for (int i=0; i<(int)verts.size(); i++) { nlBegin(NL_ROW); nlCoefficient(i, 1); nlRightHandSide(verts[i][d]); nlEnd(NL_ROW); } for (unsigned int i=0; i&face = faces[i]; برای (int j=0; j<3; j++) { nlBegin(NL_ROW); nlCoefficient(face[ j ], 1); nlCoefficient(face[(j+1)%3], -1); nlEnd(NL_ROW); } } nlEnd(NL_MATRIX); nlEnd(NL_SYSTEM); nlSolve(); for (int i=0; i<(int)verts.size(); i++) { verts[i][d] = nlGetVariable(i); } }

مختصات X، Y و Z قابل جدا شدن هستند، من آنها را جداگانه صاف می کنم. یعنی من سه سیستم معادله خطی را حل می کنم که هر کدام به اندازه تعداد رئوس مدل من متغیر است. n سطر اول ماتریس A فقط یک 1 در هر سطر دارند و n سطر اول بردار b مختصات مدل اصلی دارند. یعنی، من بین موقعیت راس جدید و موقعیت راس قدیمی به فنری گره می زنم - موارد جدید نباید خیلی دور از راس های قدیمی باشند.

تمام ردیف های بعدی ماتریس A (faces.size()*3 = تعداد یال های همه مثلث ها در شبکه) یک رخداد 1 و یک وقوع 1- دارند، در حالی که بردار b دارای مولفه های صفر در مقابل است. این به این معنی است که من یک فنر در هر لبه مش مثلثی خود قرار می دهم: همه لبه ها سعی می کنند راس یکسانی را با نقطه شروع و پایان خود بدست آورند.

بار دیگر: همه رئوس متغیر هستند و نمی توانند از موقعیت اصلی خود فاصله بگیرند، اما در عین حال سعی می کنند شبیه یکدیگر شوند.

در اینجا نتیجه است:

همه چیز خوب خواهد بود، مدل واقعا صاف است، اما از لبه اصلی خود فاصله گرفت. بیایید کد را کمی تغییر دهیم:

برای (int i=0; i<(int)verts.size(); i++) { float scale = border[i] ? 1000: 1; nlBegin(NL_ROW); nlCoefficient(i, scale); nlRightHandSide(scale*verts[i][d]); nlEnd(NL_ROW); }

در ماتریس A، برای رئوس هایی که روی لبه هستند، یک ردیف از دسته v_i = verts[i][d] اضافه نمی کنم، بلکه 1000*v_i = 1000*verts[i][d] اضافه می کنم. چه چیزی را تغییر می دهد؟ و این شکل درجه دوم خطا را تغییر می دهد. اکنون یک انحراف از بالا در لبه نه یک واحد، مانند قبل، بلکه 1000 * 1000 واحد هزینه خواهد داشت. یعنی ما فنر قوی تری را روی راس های افراطی آویزان کردیم، راه حل ترجیح می دهد دیگران را قوی تر بکشد. در اینجا نتیجه است:

بیایید قدرت فنرهای بین رئوس را دو برابر کنیم:
nlCoefficient(face[j], 2); nlCoefficient(face[(j+1)%3], -2);

منطقی است که سطح صاف تر شده است:

و حالا حتی صد برابر قوی تر:

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

معادله پواسون

بیایید یک نام جالب دیگر داشته باشیم.

بیایید بگوییم که من تصویری مانند این دارم:

همه خوب هستند، اما من صندلی را دوست ندارم.

عکس رو نصف کردم:



و من یک صندلی را با دستان خود انتخاب می کنم:

سپس هر چیزی که در ماسک سفید است را به سمت چپ تصویر می کشم و در عین حال در کل تصویر می گویم که تفاوت بین دو پیکسل همسایه باید برابر با تفاوت بین دو پیکسل همسایه باشد. تصویر سمت راست:

برای (int i=0; i

در اینجا نتیجه است:

کد و تصاویر موجود است

حداقل مربعات یک روش ریاضی برای ساخت یک معادله خطی است که با یافتن مقادیر a و b، ضرایب در معادله خط مستقیم، به بهترین وجه با مجموعه ای از جفت های مرتب شده مطابقت دارد. هدف روش حداقل مربعات به حداقل رساندن مجذور مجذور کل خطا بین مقادیر y و ŷ است. اگر برای هر نقطه خطای ŷ را تعیین کنیم، روش حداقل مربعات به حداقل می رسد:

که در آن n = تعداد جفت های مرتب شده در اطراف خط. مرتبط ترین با داده ها

این مفهوم در شکل نشان داده شده است

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

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

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

با استفاده از روش حداقل مربعات، با محاسبه مقادیر a، قطعه روی محور y و b، شیب خط، معادله ای را تعیین می کنیم که به بهترین وجه با داده ها مطابقت دارد:

a = y cf - bx cf

که در آن x cf مقدار متوسط ​​x، متغیر مستقل، y cf مقدار میانگین y، متغیر مستقل است.

جدول زیر محاسبات مورد نیاز برای این معادلات را خلاصه می کند.

منحنی اثر برای مثال وان حمام ما با معادله زیر ارائه می شود:

از آنجایی که معادله ما دارای شیب مثبت 0.976 است، مرد اثبات می کند که تعداد آیتم های روی میز در طول زمان با نرخ متوسط ​​1 مورد در ماه افزایش می یابد. نمودار منحنی اثر را با جفت های مرتب شده نشان می دهد.

تعداد مورد انتظار اقلام برای نیم سال آینده (ماه 16) به شرح زیر محاسبه می شود:

ŷ = 5.13 + 0.976x = 5.13 + 0.976(16) ~ 20.7 = 21 مورد

پس وقت آن است که قهرمان ما اقداماتی انجام دهد.

تابع TREND در اکسل

همانطور که حدس زده اید، اکسل تابعی برای محاسبه مقدار دارد روش حداقل مربعاتاین ویژگی TREND نام دارد. نحو آن به صورت زیر است:

TREND (مقادیر Y شناخته شده؛ مقادیر X شناخته شده؛ مقادیر X جدید؛ const)

مقادیر شناخته شده Y - آرایه ای از متغیرهای وابسته، در مورد ما، تعداد موارد روی جدول

مقادیر شناخته شده X - آرایه ای از متغیرهای مستقل، در مورد ما یک ماه است

مقادیر X جدید - مقادیر جدید X (ماه) که برای آنها تابع TRENDمقدار مورد انتظار متغیرهای وابسته (تعداد موارد) را برمی گرداند.

const - اختیاری. یک مقدار بولی که مشخص می کند آیا ثابت b باید 0 باشد یا خیر.

به عنوان مثال، شکل تابع TREND را نشان می دهد که برای تعیین تعداد مورد انتظار اقلام روی میز حمام برای ماه شانزدهم استفاده می شود.

پس از تراز، تابعی به شکل زیر بدست می آوریم: g (x) = x + 1 3 + 1 .

ما می توانیم این داده ها را با یک رابطه خطی y = a x + b با محاسبه پارامترهای مناسب تقریب بزنیم. برای این کار باید از روش به اصطلاح حداقل مربعات استفاده کنیم. همچنین باید یک نقشه بکشید تا بررسی کنید که کدام خط داده های آزمایشی را به بهترین شکل تراز می کند.

Yandex.RTB R-A-339285-1

OLS دقیقا چیست (روش حداقل مربعات)

اصلی‌ترین کاری که باید انجام دهیم این است که چنین ضرایبی از وابستگی خطی را پیدا کنیم که در آن مقدار تابع دو متغیر F (a, b) = ∑ i = 1 n (y i - (a x i + b)) 2 برابر باشد. کوچکترین به عبارت دیگر، برای مقادیر معینی از a و b، مجموع انحرافات مجذور داده های ارائه شده از خط مستقیم به دست آمده دارای حداقل مقدار خواهد بود. این معنای روش حداقل مربعات است. تنها کاری که ما برای حل مثال باید انجام دهیم این است که حد فاصل تابع دو متغیر را پیدا کنیم.

نحوه استخراج فرمول برای محاسبه ضرایب

برای استخراج فرمول های محاسبه ضرایب، باید یک سیستم معادلات با دو متغیر تشکیل و حل شود. برای انجام این کار، مشتقات جزئی عبارت F (a , b) = ∑ i = 1 n (y i - (a x i + b)) 2 را نسبت به a و b محاسبه کرده و آنها را با 0 برابر می کنیم.

δ F (a , b) δ a = 0 δ F (a , b) δ b = 0 ⇔ - 2 ∑ i = 1 n (y i - (a x i + b)) x i = 0 - 2 ∑ i = 1 n ( y i - (a x i + b)) = 0 ⇔ a ∑ i = 1 n x i 2 + b ∑ i = 1 n x i = ∑ i = 1 n x i y i a ∑ i = 1 n x i + ∑ i = 1 n b = ∑ a i = ∑ i = 1 n x i 2 + b ∑ i = 1 n x i = ∑ i = 1 n x i y i a ∑ i = 1 n x i + n b = ∑ i = 1 n y i

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

n ∑ i = 1 n x i y i - ∑ i = 1 n x i ∑ i = 1 n y i n ∑ i = 1 n - ∑ i = 1 n x i 2 b = ∑ i = 1 n y i - a ∑ i = 1 n

ما مقادیر متغیرهایی را که تابع آنها هستند محاسبه کرده ایم
F (a , b) = ∑ i = 1 n (y i - (a x i + b)) 2 حداقل مقدار را خواهد گرفت. در پاراگراف سوم ثابت می کنیم که چرا چنین است.

این کاربرد روش حداقل مربعات در عمل است. فرمول او که برای یافتن پارامتر a استفاده می شود شامل ∑ i = 1 n x i , ∑ i = 1 n y i , ∑ i = 1 n x i y i , ∑ i = 1 n x i 2 و پارامتر
n - مقدار داده های تجربی را نشان می دهد. ما به شما توصیه می کنیم که هر مقدار را جداگانه محاسبه کنید. مقدار ضریب b بلافاصله بعد از a محاسبه می شود.

بیایید به مثال اصلی برگردیم.

مثال 1

در اینجا n برابر با پنج داریم. برای راحت تر کردن محاسبه مقادیر مورد نیاز موجود در فرمول های ضریب، جدول را پر می کنیم.

i = 1 i = 2 i = 3 من = 4 من = 5 ∑ i = 1 5
x i 0 1 2 4 5 12
y من 2 , 1 2 , 4 2 , 6 2 , 8 3 12 , 9
x i y i 0 2 , 4 5 , 2 11 , 2 15 33 , 8
x i 2 0 1 4 16 25 46

راه حل

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

بیایید از روش حداقل مربعات برای محاسبه ضرایب a و b مورد نیاز خود استفاده کنیم. برای انجام این کار، مقادیر مورد نظر را از ستون آخر جایگزین کرده و مجموع را محاسبه کنید:

n ∑ i = 1 n x i y i - ∑ i = 1 n x i ∑ i = 1 n y i n ∑ i = 1 n - ∑ i = 1 n x i 2 b = ∑ i = 1 n y i - a ∑ i = 3 x 1 n - 12 12, 9 5 46 - 12 2 b = 12, 9 - a 12 5 ⇒ a ≈ 0, 165 b ≈ 2, 184

دریافتیم که خط مستقیم تقریبی مورد نظر مانند y = 0، 165 x + 2، 184 خواهد بود. اکنون باید تعیین کنیم که کدام خط به بهترین شکل به داده ها تقریب می کند - g (x) = x + 1 3 + 1 یا 0 , 165 x + 2 , 184 . بیایید با استفاده از روش حداقل مربعات تخمین بزنیم.

برای محاسبه خطا، باید مجموع انحرافات مجذور داده ها را از خطوط σ 1 = ∑ i = 1 n (y i - (a x i + b i)) 2 و σ 2 = ∑ i = 1 n (y i -) پیدا کنیم. g (x i)) 2، حداقل مقدار با خط مناسب تری مطابقت دارد.

σ 1 = ∑ i = 1 n (y i - (a x i + b i)) 2 = = ∑ i = 1 5 (y i - (0، 165 x i + 2، 184)) 2 ≈ 0، 019 σ 2 = ∑ i = 1 n (y i - g (x i)) 2 = = ∑ i = 1 5 (y i - (x i + 1 3 + 1)) 2 ≈ 0 , 096

پاسخ:از σ 1< σ 2 , то прямой, наилучшим образом аппроксимирующей исходные данные, будет
y = 0 , 165 x + 2 , 184 .

روش حداقل مربعات به وضوح در تصویر گرافیکی نشان داده شده است. خط قرمز خط مستقیم g (x) = x + 1 3 + 1 را نشان می دهد، خط آبی y = 0، 165 x + 2، 184 را نشان می دهد. داده های خام با نقاط صورتی مشخص شده اند.

اجازه دهید توضیح دهیم که چرا دقیقاً به تقریب هایی از این نوع نیاز است.

آنها را می توان در مسائلی که نیاز به هموارسازی داده ها دارند، و همچنین در مواردی که داده ها نیاز به درون یابی یا برون یابی دارند استفاده می شوند. به عنوان مثال، در مسئله ای که در بالا بحث شد، می توان مقدار کمیت مشاهده شده y را در x = 3 یا در x = 6 پیدا کرد. ما مقاله جداگانه ای را به چنین نمونه هایی اختصاص داده ایم.

اثبات روش LSM

برای اینکه تابع هنگام محاسبه a و b حداقل مقدار را به دست آورد، لازم است که در یک نقطه داده شده ماتریس شکل درجه دوم دیفرانسیل تابع شکل F (a, b) = ∑ i = 1 n باشد. (y i - (a x i + b)) 2 مثبت قطعی باشد. بیایید به شما نشان دهیم که چگونه باید به نظر برسد.

مثال 2

ما یک دیفرانسیل مرتبه دوم به شکل زیر داریم:

d 2 F (a ; b) = δ 2 F (a ; b) δ a 2 d 2 a + 2 δ 2 F (a ; b) δ a δ b d a d b + δ 2 F (a ; b) δ b 2 d 2b

راه حل

δ 2 F (a ; ب) δ a 2 = δ δ F (a ; ب) δ a δ a = = δ - 2 ∑ i = 1 n (y i - (a x i + b)) x i δ a = 2 ∑ i = 1 n (x i) 2 δ 2 F (a ; b) δ a δ b = δ δ F (a ؛ b) δ a δ b = = δ - 2 ∑ i = 1 n (y i - (a x i + b) ) x i δ b = 2 ∑ i = 1 n x i δ 2 F (a ; b) δ b 2 = δ δ F (a ; b) δ b δ b = δ - 2 ∑ i = 1 n (y i - (a x i + ب)) δ b = 2 ∑ i = 1 n (1) = 2 n

به عبارت دیگر، می توان آن را به صورت زیر نوشت: d 2 F (a ; b) = 2 ∑ i = 1 n (x i) 2 d 2 a + 2 2 ∑ x i i = 1 n d a d b + (2 n) d 2 b .

ماتریسی به شکل درجه دوم M = 2 ∑ i = 1 n (x i) 2 2 ∑ i = 1 n x i 2 ∑ i = 1 n x i 2 n به دست آورده ایم.

در این مورد، مقادیر عناصر جداگانه بسته به a و b تغییر نمی کند. آیا این ماتریس مثبت قطعی است؟ برای پاسخ به این سوال، اجازه دهید بررسی کنیم که آیا مینورهای زاویه ای آن مثبت هستند یا خیر.

مینور زاویه ای مرتبه اول را محاسبه کنید: 2 ∑ i = 1 n (x i) 2 > 0 . از آنجایی که نقاط x i منطبق نیستند، نابرابری شدید است. این را در محاسبات بعدی در نظر خواهیم داشت.

ما مینور زاویه ای مرتبه دوم را محاسبه می کنیم:

d e t (M) = 2 ∑ i = 1 n (x i) 2 2 ∑ i = 1 n x i 2 ∑ i = 1 n x i 2 n = 4 n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2

پس از آن، با استفاده از استقراء ریاضی به اثبات نابرابری n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 > 0 ادامه می دهیم.

  1. بیایید بررسی کنیم که آیا این نابرابری برای n دلخواه معتبر است یا خیر. بیایید 2 را بگیریم و محاسبه کنیم:

2 ∑ i = 1 2 (x i) 2 - ∑ i = 1 2 x i 2 = 2 x 1 2 + x 2 2 - x 1 + x 2 2 = = x 1 2 - 2 x 1 x 2 + x 2 2 = x 1 + x 2 2 > 0

برابری صحیح را بدست آوردیم (اگر مقادیر x 1 و x 2 مطابقت نداشته باشند).

  1. بیایید فرض کنیم که این نابرابری برای n درست خواهد بود، یعنی. n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 > 0 - درست است.
  2. حالا بیایید اعتبار n + 1 را ثابت کنیم، یعنی. که (n + 1) ∑ i = 1 n + 1 (x i) 2 - ∑ i = 1 n + 1 x i 2 > 0 اگر n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 > 0 .

محاسبه می کنیم:

(n + 1) ∑ i = 1 n + 1 (x i) 2 - ∑ i = 1 n + 1 x i 2 = = (n + 1) ∑ i = 1 n (x i) 2 + x n + 1 2 - ∑ i = 1 n x i + x n + 1 2 = = n ∑ i = 1 n (x i) 2 + n x n + 1 2 + ∑ i = 1 n (x i) 2 + x n + 1 2 - - ∑ i = 1 n x i 2 + 2 x n + 1 ∑ i = 1 n x i + x n + 1 2 = = ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 + n x n + 1 2 - x n + 1 ∑ i = 1 n x i + ∑ i = n (x i) 2 = = ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 + x n + 1 2 - 2 x n + 1 x 1 + x 1 2 + + x n + 1 2 - 2 x n + 1 x 2 + x 2 2 + . . . + x n + 1 2 - 2 x n + 1 x 1 + x n 2 = = n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 + + (x n + 1 - x 1) 2 + (x n + 1 - x 2) 2 + . . . + (x n - 1 - x n) 2 > 0

عبارت محصور شده در پرانتزهای فرفری بزرگتر از 0 خواهد بود (بر اساس آنچه در مرحله 2 فرض کردیم)، و بقیه عبارت ها بزرگتر از 0 خواهند بود زیرا همه آنها مربع اعداد هستند. ما نابرابری را ثابت کرده ایم.

پاسخ: a و b یافت شده با کوچکترین مقدار تابع F (a, b) = ∑ i = 1 n (y i - (a x i + b)) 2 مطابقت دارد، به این معنی که آنها پارامترهای مورد نیاز روش حداقل مربعات هستند. (LSM).

اگر متوجه اشتباهی در متن شدید، لطفاً آن را برجسته کرده و Ctrl+Enter را فشار دهید

تقریب داده‌های تجربی روشی مبتنی بر جایگزینی داده‌های به‌دست‌آمده تجربی با یک تابع تحلیلی است که در نقاط گره‌ای با مقادیر اولیه (داده‌های به‌دست‌آمده در طول آزمایش یا آزمایش) نزدیک‌ترین عبور یا مطابقت دارد. در حال حاضر دو روش برای تعریف یک تابع تحلیلی وجود دارد:

با ساختن چند جمله ای درون یابی n درجه که عبور می کند مستقیماً از طریق تمام نقاطآرایه داده شده در این مورد، تابع تقریبی به صورت زیر نمایش داده می شود: یک چند جمله ای درون یابی به شکل لاگرانژ یا یک چند جمله ای درون یابی به شکل نیوتن.

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

روش حداقل مربعات(در ادبیات انگلیسی Ordinary Least Squares، OLS) یک روش ریاضی مبتنی بر تعریف یک تابع تقریبی است که در نزدیکترین مجاورت به نقاط یک آرایه داده‌های تجربی ساخته شده است. نزدیکی توابع اولیه و تقریبی F(x) با یک اندازه گیری عددی تعیین می شود، یعنی: مجموع انحرافات مجذور داده های تجربی از منحنی تقریبی F(x) باید کوچکترین باشد.

منحنی برازش با روش حداقل مربعات ساخته شده است

از روش حداقل مربعات استفاده می شود:

برای حل سیستم های معادلات بیش از حد تعیین شده زمانی که تعداد معادلات از تعداد مجهول ها بیشتر باشد.

برای جستجوی راه حل در مورد سیستم های معادلات غیرخطی معمولی (نه بیش از حد تعیین شده).

برای تقریب مقادیر نقاط توسط برخی از تابع های تقریبی.

تابع تقریبی با روش حداقل مربعات از شرط حداقل مجموع مجذور انحرافات تابع تقریبی محاسبه شده از یک آرایه داده شده از داده های تجربی تعیین می شود. این معیار روش حداقل مربعات به صورت عبارت زیر نوشته می شود:

مقادیر تابع تقریبی محاسبه شده در نقاط گرهی،

آرایه مشخص داده های تجربی در نقاط گرهی.

معیار درجه دوم دارای تعدادی ویژگی "خوب" است، مانند تمایز پذیری، ارائه یک راه حل منحصر به فرد برای مسئله تقریب با توابع تقریبی چند جمله ای.

بسته به شرایط مسئله، تابع تقریبی چند جمله ای درجه m است

درجه تابع تقریبی به تعداد نقاط گرهی بستگی ندارد، اما بعد آن باید همیشه کمتر از بعد (تعداد نقاط) آرایه داده شده از داده های تجربی باشد.

∙ اگر درجه تابع تقریبی m=1 باشد، تابع جدول را با یک خط مستقیم تقریب می زنیم (رگرسیون خطی).

∙ اگر درجه تابع تقریبی m=2 باشد، تابع جدول را با سهمی درجه دوم تقریب می کنیم (تقریبا درجه دوم).

∙ اگر درجه تابع تقریبی m=3 باشد، تابع جدول را با سهمی مکعبی تقریب می کنیم (تقریبا مکعب).

در حالت کلی، هنگامی که لازم است یک چند جمله ای تقریبی با درجه m برای مقادیر جدولی داده شده ساخته شود، شرط حداقل مجموع مجذور انحرافات روی تمام نقاط گرهی به شکل زیر بازنویسی می شود:

- ضرایب مجهول چند جمله ای تقریبی درجه m.

تعداد مقادیر جدول مشخص شده

شرط لازم برای وجود حداقل یک تابع، برابری با صفر مشتقات جزئی آن نسبت به متغیرهای مجهول است. . در نتیجه سیستم معادلات زیر را بدست می آوریم:

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

این سیستم از عبارات جبری خطی را می توان به صورت ماتریسی بازنویسی کرد:

در نتیجه سیستمی از معادلات خطی با ابعاد m + 1 به دست آمد که از مجهولات m + 1 تشکیل شده است. این سیستم را می توان با استفاده از هر روشی برای حل معادلات جبری خطی (مثلاً روش گاوس) حل کرد. در نتیجه حل، پارامترهای ناشناخته تابع تقریبی پیدا می شود که حداقل مجذور انحرافات تابع تقریبی را از داده های اصلی ارائه می دهد. بهترین تقریب درجه دوم ممکن است. لازم به یادآوری است که اگر حتی یک مقدار از داده های اولیه تغییر کند، همه ضرایب مقادیر خود را تغییر می دهند، زیرا آنها کاملاً توسط داده های اولیه تعیین می شوند.

تقریب داده های اولیه با وابستگی خطی

(رگرسیون خطی)

به عنوان مثال، روش تعیین تابع تقریبی را در نظر بگیرید که به صورت یک رابطه خطی ارائه شده است. مطابق با روش حداقل مربعات، شرط حداقل مجموع مجذور انحرافات به صورت زیر نوشته می شود:

مختصات نقاط گرهی جدول؛

ضرایب ناشناخته تابع تقریبی که به صورت یک رابطه خطی آورده شده است.

شرط لازم برای وجود حداقل یک تابع، برابری با صفر مشتقات جزئی آن نسبت به متغیرهای مجهول است. در نتیجه سیستم معادلات زیر را بدست می آوریم:

اجازه دهید سیستم خطی معادلات حاصل را تبدیل کنیم.

ما سیستم معادلات خطی حاصل را حل می کنیم. ضرایب تابع تقریبی در شکل تحلیلی به صورت زیر تعیین می شود (روش کرامر):

این ضرایب ساخت یک تابع تقریبی خطی را مطابق با معیار به حداقل رساندن مجموع مجذورهای تابع تقریبی از مقادیر جدولی داده شده (داده های تجربی) فراهم می کند.

الگوریتم اجرای روش حداقل مربعات

1. داده های اولیه:

با توجه به آرایه ای از داده های تجربی با تعداد اندازه گیری N

درجه چند جمله ای تقریبی (m) داده شده است

2. الگوریتم محاسبه:

2.1. ضرایب برای ساخت یک سیستم معادلات با بعد تعیین می شود

ضرایب سیستم معادلات (سمت چپ معادله)

- شاخص شماره ستون ماتریس مربع سیستم معادلات

اعضای آزاد سیستم معادلات خطی (سمت راست معادله)

- شاخص شماره ردیف ماتریس مربع سیستم معادلات

2.2. تشکیل سیستم معادلات خطی با بعد .

2.3. حل یک سیستم معادلات خطی به منظور تعیین ضرایب مجهول چند جمله ای تقریبی درجه m.

2.4 تعیین مجموع انحرافات مجذور چند جمله ای تقریبی از مقادیر اولیه در تمام نقاط گرهی

مقدار یافت شده مجموع مجذور انحرافات حداقل ممکن است.

تقریب با سایر توابع

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

تقریب گزارش

موردی را در نظر بگیرید که تابع تقریبی با یک تابع لگاریتمی به شکل زیر داده می شود:

با دوستان به اشتراک بگذارید یا برای خود ذخیره کنید:

بارگذاری...