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

  • آموزش

معرفی

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

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

آیا می دانید مشتق چیست؟ به احتمال زیاد در مورد حد و مرز رابطه تفاوت به من خواهید گفت. در سال اول ریاضیات در دانشگاه دولتی سنت پترزبورگ، ویکتور پتروویچ خاوین من تعریف شده استمشتق به عنوان ضریب اولین جمله از سری تیلور تابع در نقطه (این یک ژیمناستیک جداگانه برای تعیین سری تیلور بدون مشتقات بود). مدت زیادی به این تعریف خندیدم تا اینکه بالاخره فهمیدم در مورد چیست. مشتق چیزی بیش از اندازه گیری نیست که نشان می دهد چقدر تابعی که ما متمایز می کنیم به تابع 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

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

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

کاربردهای زیادی دارد، زیرا امکان نمایش تقریبی یک تابع داده شده توسط سایر تابع های ساده تر را فراهم می کند. 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 برای آن ناشناخته است.

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

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

روش حداقل مربعات ( MNK، OLS، حداقل مربعات معمولی) - یکی از روش های اساسی تحلیل رگرسیون برای تخمین پارامترهای ناشناخته مدل های رگرسیون از داده های نمونه. این روش بر اساس به حداقل رساندن مجموع مجذورهای باقیمانده رگرسیون است.

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

ماهیت MNC

اجازه دهید یک مدل (پارامتری) وابستگی احتمالی (رگرسیون) بین متغیر (توضیح داده شده) yو بسیاری از عوامل (متغیرهای توضیحی) ایکس

بردار پارامترهای مدل ناشناخته کجاست

- خطای مدل تصادفی

اجازه دهید مشاهدات نمونه ای از مقادیر متغیرهای نشان داده شده نیز وجود داشته باشد. اجازه دهید عدد مشاهده (). سپس مقادیر متغیرها در مشاهده -ام قرار دارند. سپس، برای مقادیر داده شده پارامترهای b، می توان مقادیر نظری (مدل) متغیر توضیح داده شده y را محاسبه کرد:

مقدار باقیمانده ها به مقادیر پارامترهای b بستگی دارد.

ماهیت LSM (معمولی، کلاسیک) یافتن پارامترهایی b است که مجموع مجذورهای باقیمانده (eng. مجموع باقیمانده مربع ها) حداقل خواهد بود:

در حالت کلی می توان این مشکل را با روش های عددی بهینه سازی (حداقل سازی) حل کرد. در این مورد، شخص صحبت می کند حداقل مربعات غیر خطی(NLS یا NLLS - انگلیسی. حداقل مربعات غیر خطی). در بسیاری از موارد می توان یک راه حل تحلیلی به دست آورد. برای حل مسئله کمینه سازی، لازم است نقاط ساکن تابع را با تفکیک آن نسبت به پارامترهای مجهول b، معادل سازی مشتقات با صفر، و حل سیستم معادلات حاصل، پیدا کنیم:

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

LSM در مورد یک مدل خطی

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

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

سپس بردار تخمین های متغیر توضیح داده شده و بردار باقیمانده های رگرسیون برابر با

بر این اساس مجموع مجذورهای باقیمانده رگرسیون برابر خواهد بود

با تمایز این تابع با توجه به بردار پارامتر و معادل سازی مشتقات با صفر، سیستمی از معادلات (به صورت ماتریسی) به دست می آید:

.

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

برای اهداف تحلیلی، آخرین نمایش این فرمول مفید است. اگر داده ها در مدل رگرسیونی متمرکز شده استسپس در این نمایش ماتریس اول به معنای ماتریس کوواریانس نمونه عوامل و ماتریس دوم بردار کوواریانس عوامل با متغیر وابسته است. اگر علاوه بر این، داده نیز باشد عادی شده استدر SKO (یعنی در نهایت استاندارد شده، سپس ماتریس اول به معنای ماتریس همبستگی نمونه عوامل است، بردار دوم - بردار همبستگی نمونه عوامل با متغیر وابسته.

ویژگی مهم تخمین LLS برای مدل ها با یک ثابت- خط رگرسیون ساخته شده از مرکز ثقل داده های نمونه می گذرد، یعنی برابری برآورده می شود:

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

مثال: رگرسیون ساده (جفتی).

در مورد اتاق بخار رگرسیون خطیفرمول های محاسبه ساده شده اند (شما می توانید بدون جبر ماتریسی انجام دهید):

خواص تخمین OLS

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

  1. انتظار ریاضی خطاهای تصادفی صفر است و
  2. عوامل و خطاهای تصادفی متغیرهای تصادفی مستقل هستند.

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

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

این مفروضات را می توان برای ماتریس کوواریانس بردار خطای تصادفی فرموله کرد

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

حداقل مربعات تعمیم یافته

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

ثابت شده است (قضیه آیتکن) که برای یک مدل رگرسیون خطی تعمیم یافته (که در آن هیچ محدودیتی بر روی ماتریس کوواریانس خطاهای تصادفی اعمال نمی شود)، موثرترین (در کلاس تخمین های بی طرف خطی) تخمین های به اصطلاح هستند. OLS تعمیم یافته (OMNK، GLS - حداقل مربعات تعمیم یافته)- روش LS با ماتریس وزنی برابر با ماتریس کوواریانس معکوس خطاهای تصادفی: .

می توان نشان داد که فرمول تخمین GLS پارامترهای مدل خطی دارای شکل است.

ماتریس کوواریانس این برآوردها به ترتیب برابر خواهد بود

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

حداقل مربعات وزنی

در مورد ماتریس وزن مورب (و از این رو ماتریس کوواریانس خطاهای تصادفی)، به اصطلاح حداقل مربعات وزنی (WLS - Weighted Least Squares) را داریم. در این حالت، مجموع وزنی مجذورهای باقیمانده مدل به حداقل می رسد، یعنی هر مشاهده یک «وزن» دریافت می کند که با واریانس خطای تصادفی در این مشاهده نسبت معکوس دارد: . در واقع، داده ها با وزن دادن به مشاهدات (تقسیم بر مقداری متناسب با انحراف استاندارد فرضی خطاهای تصادفی) تبدیل می شوند و حداقل مربعات نرمال برای داده های وزنی اعمال می شود.

برخی موارد خاص از کاربرد LSM در عمل

تقریب خطی

موردی را در نظر بگیرید که در نتیجه مطالعه وابستگی یک کمیت اسکالر معین به یک کمیت اسکالر خاص (این می تواند به عنوان مثال، وابستگی ولتاژ به قدرت جریان باشد: جایی که یک مقدار ثابت است، مقاومت هادی )، این مقادیر اندازه گیری شد، در نتیجه مقادیر و مقادیر مربوط به آنها. داده های اندازه گیری باید در یک جدول ثبت شود.

جدول. نتایج اندازه گیری

شماره اندازه گیری
1
2
3
4
5
6

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

حداقل بود

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

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

داستان

تا اوایل قرن نوزدهم. دانشمندان قوانین خاصی برای حل یک سیستم معادلات که در آن تعداد مجهولات کمتر از تعداد معادلات باشد، نداشتند. تا آن زمان روش‌های خاصی بسته به نوع معادلات و هوشمندی ماشین‌حساب‌ها مورد استفاده قرار می‌گرفت و بنابراین ماشین‌حساب‌های مختلف، با شروع از داده‌های مشاهداتی یکسان، به نتایج متفاوتی می‌رسیدند. اولین کاربرد این روش به گاوس (1795) نسبت داده می شود و لژاندر (1805) به طور مستقل آن را کشف و با نام مدرن خود منتشر کرد (fr. Metode des moindres quarres ) . لاپلاس این روش را به نظریه احتمال مرتبط کرد و ریاضیدان آمریکایی آدرین (1808) کاربردهای احتمالی آن را در نظر گرفت. این روش با تحقیقات بیشتر توسط انکه، بسل، هانسن و دیگران گسترش یافته و بهبود یافته است.

استفاده جایگزین از MNC ها

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

یکی از کاربردها حل سیستم معادلات خطی است که در آن تعداد معادلات از تعداد متغیرها بیشتر است.

که در آن ماتریس مربع نیست، بلکه مستطیل است.

چنین سیستمی از معادلات، در حالت کلی، هیچ راه حلی ندارد (اگر رتبه واقعاً از تعداد متغیرها بیشتر باشد). بنابراین، این سیستم را می توان تنها به معنای انتخاب چنین بردار به منظور به حداقل رساندن «فاصله» بین بردارها و . برای این کار می توانید معیار کمینه سازی مجذور اختلاف قسمت های چپ و راست معادلات سیستم را اعمال کنید، یعنی . به راحتی می توان نشان داد که حل این مسئله کمینه سازی منجر به حل سیستم معادلات زیر می شود

  • برنامه نويسي
    • آموزش

    معرفی

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

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

    آیا می دانید مشتق چیست؟ به احتمال زیاد در مورد حد و مرز رابطه تفاوت به من خواهید گفت. در سال اول ریاضیات در دانشگاه دولتی سنت پترزبورگ، ویکتور پتروویچ خاوین من تعریف شده استمشتق به عنوان ضریب اولین جمله از سری تیلور تابع در نقطه (این یک ژیمناستیک جداگانه برای تعیین سری تیلور بدون مشتقات بود). مدت زیادی به این تعریف خندیدم تا اینکه بالاخره فهمیدم در مورد چیست. مشتق چیزی بیش از اندازه گیری نیست که نشان می دهد چقدر تابعی که ما متمایز می کنیم به تابع 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

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

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

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

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

    - فضای خرده فروشی یک فروشگاه مواد غذایی، متر مربع،
    - گردش مالی سالانه یک فروشگاه مواد غذایی، میلیون روبل.

    کاملاً واضح است که هر چه مساحت فروشگاه بزرگتر باشد، در اکثر موارد گردش مالی آن بیشتر است.

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

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

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

    بیایید به یک سوال مهم پاسخ دهیم: برای یک مطالعه کیفی چند امتیاز لازم است؟

    هرچه بزرگتر بهتر. حداقل مجموعه قابل قبول شامل 5-6 امتیاز است. علاوه بر این، با مقدار کمی داده، نتایج "غیر طبیعی" نباید در نمونه گنجانده شود. بنابراین، برای مثال، یک فروشگاه کوچک نخبه می‌تواند بیشتر از «همکاران خود» به سفارش‌های بزرگ کمک کند، در نتیجه الگوی کلی را که باید پیدا کرد، مخدوش می‌کند!

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

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


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

    یا به صورت تا شده: (ناگهان، کسی که نمی داند: نماد جمع است و یک متغیر کمکی است - "counter" که مقادیری از 1 تا را می گیرد).

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

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

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

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

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

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

    حال توجه کنید که در هر دو مورد صحبت می کنیم توابع دو متغیر، که استدلال های آن است گزینه های وابستگی را جستجو کرد:

    و در اصل، ما باید یک مشکل استاندارد را حل کنیم - پیدا کنیم حداقل یک تابع از دو متغیر.

    مثال ما را به یاد بیاورید: فرض کنید که نقاط "فروشگاه" در یک خط مستقیم قرار دارند و هر دلیلی برای باور وجود وجود دارد. وابستگی خطیگردش مالی از منطقه تجاری بیایید چنین ضرایبی "a" و "be" را پیدا کنیم تا مجذور انحرافات کوچکترین بود همه چیز طبق معمول - اول مشتقات جزئی از مرتبه 1. مطابق با قانون خطی بودنمی توانید درست در زیر نماد جمع متمایز کنید:

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

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

    هر معادله را یک "دو" کاهش می دهیم و علاوه بر این، مجموع را "از هم جدا می کنیم":

    توجه داشته باشید : به طور مستقل تجزیه و تحلیل کنید که چرا می توان "a" و "be" را از نماد جمع خارج کرد. به هر حال، به طور رسمی این را می توان با مجموع انجام داد

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

    پس از آن الگوریتم حل مسئله ما شروع به ترسیم می کند:

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

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

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

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

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

    وظیفه

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

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

    توجه داشته باشید که مقادیر "x" مقادیر طبیعی هستند و این یک معنای معنی دار مشخصه دارد که کمی بعد در مورد آن صحبت خواهم کرد. اما آنها، البته، می توانند کسری باشند. علاوه بر این، بسته به محتوای یک کار خاص، هر دو مقدار "X" و "G" می توانند به طور کامل یا تا حدی منفی باشند. خوب، به ما یک وظیفه "بی چهره" داده شده است و ما آن را شروع می کنیم راه حل:

    ما ضرایب تابع بهینه را به عنوان یک راه حل برای سیستم پیدا می کنیم:

    برای یک نماد فشرده تر، متغیر "counter" را می توان حذف کرد، زیرا از قبل مشخص است که جمع بندی از 1 تا .

    محاسبه مقادیر مورد نیاز به صورت جدولی راحت تر است:


    محاسبات را می توان بر روی یک ریز ماشین حساب انجام داد، اما استفاده از Excel بسیار بهتر است - هم سریعتر و هم بدون خطا. تماشای یک ویدیوی کوتاه:

    بنابراین، موارد زیر را بدست می آوریم سیستم:

    در اینجا می توانید معادله دوم را در 3 ضرب کنید و عدد 2 را از معادله 1 کم کنید. اما این شانس است - در عمل، سیستم ها اغلب با استعداد نیستند و در چنین مواردی باعث صرفه جویی می شود روش کرامر:
    ، بنابراین سیستم یک راه حل منحصر به فرد دارد.

    بیا چک کنیم می‌دانم که نمی‌خواهم، اما چرا از اشتباهاتی که نمی‌توانی آنها را از دست ندهی، بگذریم؟ جواب پیدا شده را در سمت چپ هر معادله سیستم جایگزین کنید:

    قسمت های مناسب معادلات مربوطه به دست می آید، یعنی سیستم به درستی حل شده است.

    بنابراین، تابع تقریبی مورد نظر: – از همه توابع خطیداده های تجربی به بهترین وجه توسط آن تقریب می شوند.

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

    برای رسم تابع تقریبی، دو مقدار از آن را پیدا می کنیم:

    و نقشه را اجرا کنید:


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

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

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


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

    اما انجام روشی که قبلاً شناخته شده است بسیار کارآمدتر است:

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

    بیایید مجموع متناظر انحرافات مربع را پیدا کنیم - برای تشخیص آنها، آنها را با حرف "epsilon" مشخص می کنم. تکنیک دقیقاً مشابه است:


    و دوباره برای هر محاسبه آتش برای نقطه 1:

    در اکسل از تابع استاندارد استفاده می کنیم انقضا (سینتکس را می توان در راهنمای اکسل یافت).

    نتیجه: بنابراین تابع نمایی نقاط آزمایشی را بدتر از خط مستقیم تقریب می کند .

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

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

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

    بارگذاری...