انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
برنامه نویسی pls

برنامه نویسی pls

#1
سلام .
یکی از دوستان در مورد برنامه نویسی pls سوال پرسیده بودند .
گاهی در صنعت نیاز داریم که از متغیرهایی استفاده کنیم که قابل کنترل (controllable) یا قابل اندازه گیری به آسانی (easy-to-measure) می باشند (factors) و باید آنها را توضیح بدهیم ، تنظیم کنیم یا رفتار سایر متغیرها (یعنی responses) را بر اساس آنها ، پیش بینی کنیم .
وقتی که تعداد factor ها ، اندک باشد آنگاه به اندازه کافی ، خطی (collinear-هم طراز) نمی باشند و رابطه آنها با response ها ، به طور واضح و خوب تعریف می شود . در این موارد ، multiple linear regression یک روش خوب برای ارتباط دادن factor ها با response ها می باشد (MLR) . اما چنانچه شرایط اینگونه نباشد ، آنگاه MLR دیگر مناسب نیست . اینگونه موارد را ، soft science applications می نامند . در این موارد ، محقق با تعداد زیادی factor سر و کار دارد و روابط به خوبی معلوم نیست . اکنون باید بر اساس آنها یک مدل پیش بینی طراحی شود . Partial least squares روشی برای ساخت یک مدل پیش بینی می باشد (PLS) . بنابراین زمانی که تعداد factor ها زیاد باشد و خیلی خطی (collinear) باشند ، از روش PLS برای ساخت مدل پیش بینی استفاده می کنیم .
هر عملیات صنعتی ممکن است دارای صدها متغیر قابل کنترل (controllable) و ده ها خروجی باشد و بنابراین روش PLS بسیار سودمند خواهد بود .
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

برنامه نویسی pls

#2
دستور plsregress در متلب برای اجرای روش PLS به کار میره . ساده ترین شکل استفاده از دستور plsregress در متلب ، به صورت زیر می باشد :


کد:
[XL,YL] = plsregress(X,Y,ncomp)


که در آن ، X همان factors و Y همان responses می باشد . در واقع در سیستم مورد نظرمان ، مقادیر Y از مقادیر X حاصل شده اند . X به صورت یک ماتریس دو بعدی می باشد که هر ردیف آن مربوط به مقادیر مشاهده شده برای تمامی متغیر است ، بنابراین در ستون ماتریس ، مقادیر مشاهده شده برای یک متغیر نوشته می شود (مثلا اگر 20 متغیر داشته باشیم که برای هر کدام ، 100 اندازه گیری (مشاهده) داشته باشیم ، آنگاه ماتریس X دارای 20 ستون و 100 ردیف خواهد بود) . چون تعداد مشاهده برای factors و responses برابر است بنابراین تعداد ردیف دو ماتریس X و Y با هم برابر می باشد و تنها در تعداد ستون با هم تفاوت دارند .
پارامتر ncomp را باید به صورت یک عدد تعریف کنیم که در واقع ، تعداد اجزای PLS را مشخص می کند (PLS components) . در واقع مدل پیشبینی که توسط روش PLS طراحی می شود ، بر اساس ضرایبی از اجزای PLS می باشد . این ضرایب ، یک ترکیب خطی از اجزای PLS را به وجود می آورند . یک سری ضرایب ، برای متغیرهای مربوط به X تعیین می شوند (factors) که در XL که خروجی اول است ، ذخیره خواهند شد و یک سری ضرایب نیز برای متغیرهای مربوط به Y تعیین می شوند (responses) که در YL که خروجی دوم است ، ذخیره خواهند شد
.
برای هر متغیر ، تعداد ncomp ضریب ، تعیین خواهد شد . مثلا اگر اندازه ماتریس های X و Y به صورت زیر باشد :
X >> دارای n ردیف و p ستون (بنابراین دارای p متغیر که از هر کدام ، n مشاهده داریم)
Y >> دارای n ردیف و m ستون (بنابراین دارای m متغیر که از هر کدام ، n مشاهده داریم)
آنگاه خروجی های XL و YL دارای اندازه های زیر می باشند :
XL >> دارای p ردیف و ncomp ستون (چون X دارای p متغیر بوده و برای هر متغیر باید تعداد ncomp ضریب تعیین شود)
YL >> دارای m ردیف و ncomp ستون (چون Y دارای m متغیر بوده و برای هر متغیر باید تعداد ncomp ضریب تعیین شود)

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


کد:
[XL,YL,XS,YS] = plsregress(X,Y,ncomp)


همان طور که می بینید دو خروجی دیگر به نام های XS و YS داریم . قبلا گفته بودیم که در XL و YL ، ضرایبی نوشته می شوند که این ضرایب ، به صورت ضریب برای اجزای PLS می باشند (PLS components) . حال مثلا XS همان اجزای PLS است که ضرایب در آن ضرب شده اند (predictor scores) . در واقع ، XS همان اجزای PLS می باشد که به صورت ترکیب خطی از متغیرهای X تعریف شده اند . YS نیز به طور مشابه ، دارای همین مفهوم برای Y می باشد .
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط شماره مجازی امارات


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان