مثال درس ها ممکن است برای شما ملموس باشد اما چندان کاربردی به نظر نمی رسد. در این قسمت می خواهیم بر روی مجموعه داده ی بزرگ تری کار کنیم. این مجموعه داده به نام iris شناخته می شود و شامل اطلاعاتی در مورد سه نوع زنبق بر اساس طول و عرض کاسبرگ و طول و عرض گلبرگ آن هاست(ویژگی ها: طول کاسبرگ، عرض کاسبرگ، طول گلبرگ، عرض گلبرگ). 50 نمونه مختلف از هر سه نوع زنبق اندازه گیری شده است که در کل 150 نمونه داریم. این مجموعه داده کلاسیک است و در خود متلب به صورت پیش فرض وجود دارد. با زدن دستور زیر می توانید به آن دسترسی پیدا کنید:
در این جا می خواهیم با داشتن همین 150 نمونه تعداد 10000 نمونه از این گل را شبیه سازی و تولید کنیم. در ضمن می خواهیم به رابطه بین ویژگی های این مجموعه داده پی ببریم. ابتدا با استفاده از برنامه زیر کواریانس را محاسبه می کنیم:
Iris_dataset
در این جا می خواهیم با داشتن همین 150 نمونه تعداد 10000 نمونه از این گل را شبیه سازی و تولید کنیم. در ضمن می خواهیم به رابطه بین ویژگی های این مجموعه داده پی ببریم. ابتدا با استفاده از برنامه زیر کواریانس را محاسبه می کنیم:
dataset=iris_dataset';
sigma = cov(dataset)
در ابتدا مجموعه داده را به صورت ستونی باید در آوردیم(با ترانهاده کردن ماتریس مجموعه داده). و در مرحله بعد کوواریانس آن را محاسبه کردیم. در اینجا ترتیب ویژگی ها به همان صورتی است که گفتیم. بنابراین میزان کوواریانس طول کاسبرگ و طول گلبرگ برابر است با 1.2737
در نهایت با استفاده از برنامه زیر می توان 10000 نمونه را ایجاد و رسم کرد:
در نهایت با استفاده از برنامه زیر می توان 10000 نمونه را ایجاد و رسم کرد:
dataset=iris_dataset';
sigma = cov(dataset);
mu = mean(scores);
r = mvnrnd(mu,sigma,10000);
figure
scatter3(r(:,1),r(:,2),r(:,3), 'MarkerFaceColor',[0 .1 .1])
توجه کنید تا کنون به کلاس هر نمونه (این که چه نوع گلی است) توجه نکردیم چون هنوز به مساله دسته بندی کاری نداریم. در مثال های بعدی این موضوع روشن تر می شود.
@MatlabTips
#For_intermediate, #Normal_distribution, #Covariance_matrix, #Iris_dataset
نویسنده: (A-2)
@MatlabTips
#For_intermediate, #Normal_distribution, #Covariance_matrix, #Iris_dataset
نویسنده: (A-2)
🔵همبستگی لزوما به معنای علیت نیست!🔵
سطح پیچیدگی:🌕🌕🌕🌑🌑
پیشنیاز:(آمار و احتمال و کد نویسی متوسط و ذهنی کنجکاو!)
برای:(متوسط)
تا کنون بر روی مفهوم کوواریانس بحث هایی شد. شاید تا الان متوجه شده باشید کوواریانس مثبت به معنای نوعی رابطه مثبت بین دو متغیر است: یعنی اگر اولی افزایش یابد دومی هم افزایش می یابد و برعکس (مثلا وقتی نمره درس ریاضی دانشجویان افزایش یابد معمولا نمره درس فیزیکشان هم افزایش می یابد) و اگر کوواریانس منفی باشد رابطه برعکس می شود: اگر اولی افزایش یابد دومی کاهش پیدا می کند و برعکس( مثلا وقتی زمان سپری کردن در کافه افزایش یابد نمره درس ریاضی کاهش می یابد و برعکس!) این موضوع آنقدر برای آمارادان ها مهم است که یک مفهوم جدا برای آن ایجاد کرده اند و اسم آن را همبستگی(کورریلیشن correlation) گذاشته اند. همبستگی بین دو متغیر همان کوواریانس آن است که به عددی بین -1 تا 1 نرمال شده است. برای نرمال کردن کافی است کواریانس را به واریانس دو متغیر تقسیم کنیم:
سطح پیچیدگی:🌕🌕🌕🌑🌑
پیشنیاز:(آمار و احتمال و کد نویسی متوسط و ذهنی کنجکاو!)
برای:(متوسط)
تا کنون بر روی مفهوم کوواریانس بحث هایی شد. شاید تا الان متوجه شده باشید کوواریانس مثبت به معنای نوعی رابطه مثبت بین دو متغیر است: یعنی اگر اولی افزایش یابد دومی هم افزایش می یابد و برعکس (مثلا وقتی نمره درس ریاضی دانشجویان افزایش یابد معمولا نمره درس فیزیکشان هم افزایش می یابد) و اگر کوواریانس منفی باشد رابطه برعکس می شود: اگر اولی افزایش یابد دومی کاهش پیدا می کند و برعکس( مثلا وقتی زمان سپری کردن در کافه افزایش یابد نمره درس ریاضی کاهش می یابد و برعکس!) این موضوع آنقدر برای آمارادان ها مهم است که یک مفهوم جدا برای آن ایجاد کرده اند و اسم آن را همبستگی(کورریلیشن correlation) گذاشته اند. همبستگی بین دو متغیر همان کوواریانس آن است که به عددی بین -1 تا 1 نرمال شده است. برای نرمال کردن کافی است کواریانس را به واریانس دو متغیر تقسیم کنیم:
در متلب می توان همبستگی را به صورت زیر حساب کرد:
در ماتریسی که داریم همواره قطر اصلی برابر یک است و به معنای همبستگی کامل هر متغیری با خودش است. اما همبستگی بین x و y برابر با 0.25 است.
در شکل های زیر چند نمونه از داده های مختلف را می بینیم که چگونه با هم ارتباط دارند. هرقدر ارتباط بین دو متغیر خطی تر باشد میزان همبستگی به یک نزدیک تر است و هر قدر متغیر ها به هم بی ربط تر باشند داده ها به صورتی نا منظم پخش می شوند و نتیجه شبیه یک دایره می شود( چون ویژگی اول بدون توجه به ویژگی دوم مقادیر مختلفی میگیرد و بنابراین همه جا حضور دارد اما در حالت خطی زمانی که ویژگی اول یک مقدار دارد ویژگی دوم هم یک مقدار تقریبا متناظر میگیرد)
x=[1;2;3;4]
y=[4;5;1;7]
corrcoef(x,y)
ans=
1.0000 0.2582
0.2582 1.0000
در ماتریسی که داریم همواره قطر اصلی برابر یک است و به معنای همبستگی کامل هر متغیری با خودش است. اما همبستگی بین x و y برابر با 0.25 است.
در شکل های زیر چند نمونه از داده های مختلف را می بینیم که چگونه با هم ارتباط دارند. هرقدر ارتباط بین دو متغیر خطی تر باشد میزان همبستگی به یک نزدیک تر است و هر قدر متغیر ها به هم بی ربط تر باشند داده ها به صورتی نا منظم پخش می شوند و نتیجه شبیه یک دایره می شود( چون ویژگی اول بدون توجه به ویژگی دوم مقادیر مختلفی میگیرد و بنابراین همه جا حضور دارد اما در حالت خطی زمانی که ویژگی اول یک مقدار دارد ویژگی دوم هم یک مقدار تقریبا متناظر میگیرد)
اگر بر روی مجموعه داده iris برنامه زیر را اجرا کنید میزان همبستگی ویژگی های مختلف را می بینید:
چیزی که تا الان متوجه شده اید این است که رابطه آماری بین دو متغیر تصادفی یک رابطه لزوما کامل، فرمول دار، خطی و خلاصه تر و تمیز نیست. این اتفاقا به متغیر هایی که در دنیای اطرافمان میبینیم نزدیک تر است:
✔️ کشیدن سیگار لزوما عمر را کم نمی کند اما همبستگی قوی ای بین کشیدن سیگار و کم شدن طول عمر وجود دارد.
✔️ پول خوشبختی نمی آورد، هر کسی هم که خوشبخت است پولدار نیست! اما وابستگی مثبت نسبتا قوی ای بین پول داشتن و خوشبختی وجود دارد.
وقتی این گونه به مسائل نگاه کنید از "منطقی" دیدن دنیا هم خلاص می شوید و آن را به صورت درست تر "آماری" می بینید!
اما به مساله به همین سادگی ها هم نیست زیرا دنیا پر است از همبستگی های بی معنی و صد البته افرادی هم هستند که با توسل به مغلطه ی همبستگی، بین چیز های بی ربط، ارتباط برقرار می کنند. برای نشان دادن پوچ بودن تکیه بیش از حد به همبستگی به مثال های زیر نگاه کنید:
corr(iris_dataset’)
چیزی که تا الان متوجه شده اید این است که رابطه آماری بین دو متغیر تصادفی یک رابطه لزوما کامل، فرمول دار، خطی و خلاصه تر و تمیز نیست. این اتفاقا به متغیر هایی که در دنیای اطرافمان میبینیم نزدیک تر است:
✔️ کشیدن سیگار لزوما عمر را کم نمی کند اما همبستگی قوی ای بین کشیدن سیگار و کم شدن طول عمر وجود دارد.
✔️ پول خوشبختی نمی آورد، هر کسی هم که خوشبخت است پولدار نیست! اما وابستگی مثبت نسبتا قوی ای بین پول داشتن و خوشبختی وجود دارد.
وقتی این گونه به مسائل نگاه کنید از "منطقی" دیدن دنیا هم خلاص می شوید و آن را به صورت درست تر "آماری" می بینید!
اما به مساله به همین سادگی ها هم نیست زیرا دنیا پر است از همبستگی های بی معنی و صد البته افرادی هم هستند که با توسل به مغلطه ی همبستگی، بین چیز های بی ربط، ارتباط برقرار می کنند. برای نشان دادن پوچ بودن تکیه بیش از حد به همبستگی به مثال های زیر نگاه کنید:
همانطور که می بینید همبستگی قوی ای بین این متغیرها وجود دارم اما بعید میدانم کسی بین شما وجود داشته باشد که اعتقاد داشته باشد رابطه ای بین سن دختر شایسته آمریکا و قتل های با بخار وجود داشته باشد!
تشخیص نادرست بودن مواردی مانند بالا ساده است. اما مشکل اینجاست که بعضی اوقات حتی متخصصین دچار اشتباه می شوند و فکر می کنند هبستگی بین دو متغیر به معنای رابطه ی علی بین آن هاست: پزشکان تا مدت ها تصور می کردند استفاده از داروی HRT منجر به کاهش سکته های قلبی می شود تنها بر اساس داده هایی که نشان از یک همبستگی می داد!
اما ما چیزی به جز داده ها نداریم چگونه می توانیم بفمیم رابطه "علی" واقعی کدام است؟
دیوید هیوم فیلسوف تجربه گرای انگلیسی "علیت" را به صورت هم آیی (نظم در ادراک) دو اتفاق در طول زمان و اتفاق افتادن علت قبل از معلول تعریف می کند. با این که این تعریف بسیار مدرن و جامع است هنوز مشکلات زیادی دارد به طور مثال هم آیی تقریبا مشابه با هبستگی آماری است که مشکلات آن را دیدیم و همچنین در مورد بسیاری از متغیر ها تشخیص قبل تر آمدن یکی قبل از دیگری سخت و گاهی بی معنی است. مثلا زمان حضور نیکلاس کیج در فیلم و غرق شدن در استخر!
برای همبستگی آماری بین A و B حالت های زیر ممکن است:
تشخیص نادرست بودن مواردی مانند بالا ساده است. اما مشکل اینجاست که بعضی اوقات حتی متخصصین دچار اشتباه می شوند و فکر می کنند هبستگی بین دو متغیر به معنای رابطه ی علی بین آن هاست: پزشکان تا مدت ها تصور می کردند استفاده از داروی HRT منجر به کاهش سکته های قلبی می شود تنها بر اساس داده هایی که نشان از یک همبستگی می داد!
اما ما چیزی به جز داده ها نداریم چگونه می توانیم بفمیم رابطه "علی" واقعی کدام است؟
دیوید هیوم فیلسوف تجربه گرای انگلیسی "علیت" را به صورت هم آیی (نظم در ادراک) دو اتفاق در طول زمان و اتفاق افتادن علت قبل از معلول تعریف می کند. با این که این تعریف بسیار مدرن و جامع است هنوز مشکلات زیادی دارد به طور مثال هم آیی تقریبا مشابه با هبستگی آماری است که مشکلات آن را دیدیم و همچنین در مورد بسیاری از متغیر ها تشخیص قبل تر آمدن یکی قبل از دیگری سخت و گاهی بی معنی است. مثلا زمان حضور نیکلاس کیج در فیلم و غرق شدن در استخر!
برای همبستگی آماری بین A و B حالت های زیر ممکن است:
تشخیص علیت نیازمند تحقیق زیادی بر روی تمامی جوانب مساله است و دانشمندان معمولا در نتیجه گیری برای یافتن علیت بسیار محتاط عمل می کنند. قبل از نتیجه گیری های کلی باید آزمون های تست آماری انجام شود و داده ها چندین بار مورد بررسی قرار گیرد. در نهایت اینکه همبستگی مفهومی بسیار مفید، حتی به اندازه خود علیت است.اما باید حواستان باشد وقتی با مجموعه داده ای روبرو می شوید سریعا نتیجه گیری نکنید! در قسمت های بعدی سعی میکنیم در مورد مفهوم توزیع احتمالاتی و چگونگی پیاده سازی آن در متلب صحبت کنیم.
@MatlabTips
#For_intermediate, #Correlation, #Fallacy, #Philosophy
نویسنده: (A-2)
@MatlabTips
#For_intermediate, #Correlation, #Fallacy, #Philosophy
نویسنده: (A-2)
🔵توزیع احتمال🔵
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیشنیاز:(آمار و احتمال و کد نویسی متوسط)
برای:(مبتدیان)
یک توزیع احتمال تابعی است که به هر رویداد یک احتمال نسبت می دهد مانند انداختن یک سکه با رویدادهای شیر یا خط و احتمال هر کدام هم 0.5 است. پس کافی است داده ها را جمع آوری کرده و احتمال روی دادن اتفاقاتی که می خواهیم را حساب کنیم. مثلا اگر داده هایمان تصاویر ساحل باشند. احتمال اینکه یک پیکسل خاص ساحل را نشان دهد را به صورت مجموع پیکسل های ساحل در تمام عکس ها تقسیم بر تمام پیکسل های تمام عکس ها میکنیم. به این نحوه دید به محاسبه ی احتمال، روش فرکانسی گفته می شود. به این ترتیب با داشتن حجم زیادی از داده می توان یک توزیع احتمال تجربی به دست آورد. به جای عکس ها یک مثال ساده تر را در نظر بگیرید. فرض کنید من قد تعدادی افراد را یادداشت کرده ام. دراین صورت می توان توزیع احتمال تجربی به صورت زیر داشته باشم:
که به صورت زیر است:
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیشنیاز:(آمار و احتمال و کد نویسی متوسط)
برای:(مبتدیان)
یک توزیع احتمال تابعی است که به هر رویداد یک احتمال نسبت می دهد مانند انداختن یک سکه با رویدادهای شیر یا خط و احتمال هر کدام هم 0.5 است. پس کافی است داده ها را جمع آوری کرده و احتمال روی دادن اتفاقاتی که می خواهیم را حساب کنیم. مثلا اگر داده هایمان تصاویر ساحل باشند. احتمال اینکه یک پیکسل خاص ساحل را نشان دهد را به صورت مجموع پیکسل های ساحل در تمام عکس ها تقسیم بر تمام پیکسل های تمام عکس ها میکنیم. به این نحوه دید به محاسبه ی احتمال، روش فرکانسی گفته می شود. به این ترتیب با داشتن حجم زیادی از داده می توان یک توزیع احتمال تجربی به دست آورد. به جای عکس ها یک مثال ساده تر را در نظر بگیرید. فرض کنید من قد تعدادی افراد را یادداشت کرده ام. دراین صورت می توان توزیع احتمال تجربی به صورت زیر داشته باشم:
heights = [170, 171, 173,171, 178, 180, 161, 161, 162, 163, 165,181,180, 176, 177,177,177,178, 170];
histogram(heights,'Normalization','probability')
که به صورت زیر است:
مشکلی که ممکن است تاکنون متوجه شده باشید این است که ما همواره با داده های محدودی سر و کار داریم و معلوم نیست احتمال داشتن قد 180 تقریبا برابر با 0.1 باشد. در این جاست که باید از یک مدل علمی مانند تمامی شاخه های دیگر علم استفاده کنیم. مدل آماری(statistical model) یک قانون ریاضی است که ما فرض می کنیم داده ها از آن می آیند. مدل آماری ما را قادر می سازد نمونه های جدید بر اساس نمونه های اندکی که دیده ایم ایجاد کنیم!(مانند پست های قبلی که نمونه های جدید از نمره های افراد را ایجاد می کردیم) این نمونه های جدید برای پیش بینی مورد استفاده قرار می گیرند. اما مدل ها خود به دو دسته تقسیم می شوند: مدل های پارامتریک و غیر پارامتریک. مدل های پارامتریک دارای تعداد محدودی پارامتر هستند مانند توزیع گاوسی (نرمال) که دارای دو پارامتر میانگین و واریانس است. اما مدل های غیر پارامتریک دارای تعداد بی نهایت پارامتر هستند و فراتر از مباحث اینجا می باشند(در آینده به آن ها می پردازیم).
نرم افزار متلب روشی ساده برای ایجاد بسیاری از توزیع های شناخته شده و معروف در اختیار ما می گذارد. به طور مثال می توان توزیع نرمال را به صورت زیر تعریف و از آن نمونه گرفت:
شاید تصور کنید که روش ساده تری هم برای این کار وجود دارد که همان استفاده از تابع randn است. اما باید توجه کرد با روش بالا تقریبا هر توزیعی را می توان مورد استفاده قرار داد. به طور مثال توزیع دو جمله ای با پارامتر های احتمال 0.4 و تعداد تکرار 10 به صورت زیر می توان نمونه گرفت:
توزیع چند جمله متناظر با احتمال k موفقیت در N آزمایش با احتمال موفقیت p است. با تابع چگالی احتمال:
نرم افزار متلب روشی ساده برای ایجاد بسیاری از توزیع های شناخته شده و معروف در اختیار ما می گذارد. به طور مثال می توان توزیع نرمال را به صورت زیر تعریف و از آن نمونه گرفت:
mu = 0;
sigma = 1;
pd = makedist('Normal',mu,sigma);
pd.random
شاید تصور کنید که روش ساده تری هم برای این کار وجود دارد که همان استفاده از تابع randn است. اما باید توجه کرد با روش بالا تقریبا هر توزیعی را می توان مورد استفاده قرار داد. به طور مثال توزیع دو جمله ای با پارامتر های احتمال 0.4 و تعداد تکرار 10 به صورت زیر می توان نمونه گرفت:
p = 0.4;
N = 10;
pd = makedist('Binomial','p',p,'N',N);
pd.random
توزیع چند جمله متناظر با احتمال k موفقیت در N آزمایش با احتمال موفقیت p است. با تابع چگالی احتمال: