همانطور که می بینید همبستگی قوی ای بین این متغیرها وجود دارم اما بعید میدانم کسی بین شما وجود داشته باشد که اعتقاد داشته باشد رابطه ای بین سن دختر شایسته آمریکا و قتل های با بخار وجود داشته باشد!
تشخیص نادرست بودن مواردی مانند بالا ساده است. اما مشکل اینجاست که بعضی اوقات حتی متخصصین دچار اشتباه می شوند و فکر می کنند هبستگی بین دو متغیر به معنای رابطه ی علی بین آن هاست: پزشکان تا مدت ها تصور می کردند استفاده از داروی 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 است. با تابع چگالی احتمال:
مثلا برای همین توزیع بالا احتمال 5 موفقیت و 3 موفقیت به صورت زیر حساب می شوند:
که در آن pdf تابع توزیع احتمال است. همین جا بهتر است متوقف شوید. دو مفهوم توزیع احتمال(probability distribution) و تابع چگالی احتمال (probability density function) را با هم اشتباه نگیرید. اولی در اصل همان مدل آماری ماست که استفاده می کنیم و شامل پارامتر ها وتنظیمات دیگر است در حالی که دومی فقط تابع ریاضی نشان دهنده احتمال هر پیش آمد است. در متلب می توانید توزیع احتمال چند جمله ای را به صورت زیر ببینید:
p = 0.4;
N = 10;
pd = makedist('Binomial','p',p,'N',N);
y = pdf(pd,[3,5]);
که در آن pdf تابع توزیع احتمال است. همین جا بهتر است متوقف شوید. دو مفهوم توزیع احتمال(probability distribution) و تابع چگالی احتمال (probability density function) را با هم اشتباه نگیرید. اولی در اصل همان مدل آماری ماست که استفاده می کنیم و شامل پارامتر ها وتنظیمات دیگر است در حالی که دومی فقط تابع ریاضی نشان دهنده احتمال هر پیش آمد است. در متلب می توانید توزیع احتمال چند جمله ای را به صورت زیر ببینید:
در نهایت می توان به صورت زیر این توزیع را رسم کرد:
نمودار زیر خروجی را نشان میدهد.
p = 0.4;
N = 10;
pd = makedist('Binomial','p',p,'N',N);
y = pdf(pd,1:N);
plot(1:N, y);
نمودار زیر خروجی را نشان میدهد.
در قسمت های بعدی به صورت جرئی تر به این موارد می پردازیم
@MatlabTips
#For_bigginer, #Probability_distribution, #Statistical_model, #Binomial_distribution
نویسنده: (A-2)
@MatlabTips
#For_bigginer, #Probability_distribution, #Statistical_model, #Binomial_distribution
نویسنده: (A-2)
🔵بردارهای منطقی🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز:(برای مبتدی و متوسط)
می خواهم در مورد یکی از قدرتمندترین و زیباترین ویژگی های متلب صحبت کنم. در مورد بردارهای منطقی.
برای مثال عبارت زیر را در پنجره فرمان وارد کنید:
خروجی بصورت منطقی است. در این حالت مقدار 0 یا false تولید میشود.
✔️عبارت زیر را امتحان کنید:
در این حالت یک بردار منطقی تولید میشود. قطعا تحلیل و تفسیر این بردار نیازمند این نیست که آی کیو بالای 200 داشته باشید.
✔️شما همچنین می توانید دو بردار را بصورت منطقی با یکدیگر مقایسه کنید:
در این حالت مقایسه بصورت المان به المان است.
در پستهای بعدی مثالهای کاربردی در این زمینه ارائه خواهیم کرد.
@MatlabTips
#For_beginner, #For_intermidate
#Logical_vectors
نویسنده:(A-1)
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز:(برای مبتدی و متوسط)
می خواهم در مورد یکی از قدرتمندترین و زیباترین ویژگی های متلب صحبت کنم. در مورد بردارهای منطقی.
برای مثال عبارت زیر را در پنجره فرمان وارد کنید:
r = 1;
r <= 0.5 % no semi-colon
خروجی بصورت منطقی است. در این حالت مقدار 0 یا false تولید میشود.
✔️عبارت زیر را امتحان کنید:
r = 1:5;
r <= 3
در این حالت یک بردار منطقی تولید میشود. قطعا تحلیل و تفسیر این بردار نیازمند این نیست که آی کیو بالای 200 داشته باشید.
✔️شما همچنین می توانید دو بردار را بصورت منطقی با یکدیگر مقایسه کنید:
a = 1:5;
b = [0 2 3 5 6];
a == b % no semi-colon!
در این حالت مقایسه بصورت المان به المان است.
در پستهای بعدی مثالهای کاربردی در این زمینه ارائه خواهیم کرد.
@MatlabTips
#For_beginner, #For_intermidate
#Logical_vectors
نویسنده:(A-1)
🔵نمودارهایی با گسستگی🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: (آشنایی مقدماتی با کدنویسی)
برای:(مبتدیان و مقدماتی)
یک کاربرد خیلی مفید از بردارهای منطقی رسم نمودارهایی با گسستگی موضعی است. فرض کنید می خواهیم تابع دو ضابطه ای زیر را در بازه 0 تا 3pi رسم کنیم:
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: (آشنایی مقدماتی با کدنویسی)
برای:(مبتدیان و مقدماتی)
یک کاربرد خیلی مفید از بردارهای منطقی رسم نمودارهایی با گسستگی موضعی است. فرض کنید می خواهیم تابع دو ضابطه ای زیر را در بازه 0 تا 3pi رسم کنیم:
کد زیر اسکریپت مورد نظر را نشان میدهد.
عبارت y>0 یک بردار منطقی را بر میگرداند. این بردار در جاهایی که مقدار sin مثبت است عدد 1 و در جاهایی که منفی است صفر را میدهد. در نهایت با استفاده از عملیات آرایه ای ضرب، مقادیر مثبت sin را برمیداریم.
✔️سعی کنید این کار را بدون استفاده از بردارهای منطقی انجام دهید.
ما باید خیلی خوشحال باشیم که میتونیم از بردارهای منطقی در متلب استفاده کنیم.
@MatlabTips
#For_beginner, #For_intermediate
#Logical_vecotrs
نویسنده:(A-1)
x=0:pi/20:3*pi;
y = sin(x);
y=y.*(y>0); %setnegative values of sin(x) to zero
plot(x, y)
عبارت y>0 یک بردار منطقی را بر میگرداند. این بردار در جاهایی که مقدار sin مثبت است عدد 1 و در جاهایی که منفی است صفر را میدهد. در نهایت با استفاده از عملیات آرایه ای ضرب، مقادیر مثبت sin را برمیداریم.
✔️سعی کنید این کار را بدون استفاده از بردارهای منطقی انجام دهید.
ما باید خیلی خوشحال باشیم که میتونیم از بردارهای منطقی در متلب استفاده کنیم.
@MatlabTips
#For_beginner, #For_intermediate
#Logical_vecotrs
نویسنده:(A-1)
🔵اجتناب از بی نهایت🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیش نیاز: کدنویسی مقدماتی
برای: (مبتدیان و مقدماتی)
✔️تقدیم به "فرداد پیر"
میخواهیم نمودار tan در بازه 3pi/2- تا 3pi/2 رسم کنیم. اولین چیز یا شایدم تنهاترین چیزی که به ذهنمان می رسد کد زیر است:
نمودار این کد در شکل زیر مشاهده می شود:
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیش نیاز: کدنویسی مقدماتی
برای: (مبتدیان و مقدماتی)
✔️تقدیم به "فرداد پیر"
میخواهیم نمودار tan در بازه 3pi/2- تا 3pi/2 رسم کنیم. اولین چیز یا شایدم تنهاترین چیزی که به ذهنمان می رسد کد زیر است:
x = -3/2*pi : pi/100 : 3/2*pi;
y = tan(x);
plot(x, y)
نمودار این کد در شکل زیر مشاهده می شود: