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

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

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

ایده خبیثانه جالبیه ولی چرا اصولا از اول کبریت های کمتری توی جعبه نذاریم؟ اصولا اگر می شه اینجوری پول درآورد مطمئنا کشور ما جای بسیار مناسبی براشه.

من به کبریت مشکوکم

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

بسته ده تایی کبریت

و بعد می ریم سراغ ده تا جعبه کبریتی که خریدیم و پشتشون مدعی است که تعداد متوسط کبریت‌های هر جعبه چهل تا است:

کبریت توکلی

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

تصویر اولیه کبریت ها

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

جعبه های کبریت

اول نیازمند یک برنامه هستیم که بتونه در یک عکس کبریت ها رو بشمره. بعد با یک اسکریپت این برنامه رو برای همه عکس ها اجرا خواهیم کرد. من برای اینکار اول کتابخونه‌های cv2 رو امتحان کردم ولی با numpy نتیجه بهتر و قشنگ تری گرفتم. در قدم اول کافیه عکس رو بخونیم، اون ۱ به کتابخونه می گه عکس رو بعد از خوندن خاکستری کنه که کار ما رو راحتتر می کنه:

kebrit = scipy.misc.imread(fileName, 1) # gray-scale image

و خروجی چیز شبیه این است:

تصویر کبریت قبل از پردازش تصویر

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

kebrit_smooth = ndimage.gaussian_filter(kebrit, 6)

حالا متغیر kebrit_smooth یک تصویر نرم شده از تصویر اصلی است:

تصویر با فیلتر گاوسی پردازش تصویر

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

tresh = 120
labeled, objectsNum = ndimage.label(kebrit_smooth < tresh)

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

tresh = 120
removeOnes = np.ones((3,3), dtype="bool8")
labeled, objectsNum = ndimage.label(kebrit_smooth < tresh, structure=removeOnes)

دقت کنین که اون استراکچر در اصل می گه حداقل تصویر قابل تشخیص من باید این باشه:

array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)

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

پردازش تصویر نهایی نوک کبریت ها

و خب چنین خروجی متنی ای:

10boxes/IMG_2608.JPG , 29

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

#!/bin/bash

for f in *JPG
do
    ../count.py $f
done

و به خروجی زیر برسیم:

$ ./doall.sh 
IMG_2606.JPG , 35
IMG_2607.JPG , 30
IMG_2608.JPG , 29
IMG_2609.JPG , 32
IMG_2610.JPG , 29
IMG_2611.JPG , 33
IMG_2612.JPG , 36
IMG_2613.JPG , 38
IMG_2614.JPG , 37
IMG_2615.JPG , 38

وقتشه سراغ زبون مورد علاقمون R بریم. یک زبان تخصصی برای کارهای آماری و وررفتن با اعداد و ماتریس ها و رفیق رفقاشون. فایل رو می خونیم و بخش مورد نظر رو جدا می کنیم:

> tavakoli <- read.csv(file="results.csv",head=FALSE,sep=",")
> matches <- tavakoli[2]$V2

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

> summary (matches)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  29.00   30.50   34.00   33.70   36.75   38.00 

بعله. می بینیم که میزان متوسط پایینتر از ۳۴ است. یعنی تعداد متوسط این ده قوطی کبریت ۶ تا کمتر از چیزی است که ادعا شده یا به بیان صحیح‌تر ۱۵٪ کمتر به ما جنس فروختن. جالبیش اینه حتی یک جعبه از این ده جعبه هم به چیزی که ادعا می شد میانگین است نرسیده. بذارین جلوتر بریم:

> hist(matches, xlim=c(28,42), ylim=c(0,4), main="هیستوگرام تعداد کبریت های توکلی در هر جعبه", sub="www.jadi.net", breaks=8)
> curve(dnorm(x, mean=mean(matches), sd=sd(matches))*10, add=TRUE, col="red", lwd=2) 

و روی این نمودار با کمی آمار احتمالات می تونیم احتمال اینکه در یک جعبه کبریت اتفاقی توکلی که خریده‌ایم و مدعی داشتن ۴۰ کبریت است، چهل یا بیشتر کبریت وجود داشته باشد را حساب کنیم:

> 1-pnorm(40, mean=mean(matches), sd=sd(matches)) #یک منهای سمت چپ نمودار نرمال در نقطه ۴۰ کبریت
[1] 0.03970968

بله. با اینکه کبریت توکلی مدعی است در هر جعبه اش تقریبا ۴۰ کبریت وجود داره، برنامه پردازش تصویر و نمودارهای نرمال ما نشون می دن که احتمال اینکه واقعا در یک جعبه کبریت توکلی چهل یا بیشتر کبریت باشه، سه صدم درصد بیشتر نیست

آمار شیرین است

نتیجه‌ها

۰- موسسه استاندارد و حقوق مصرف کننده خاصی نداریم یا هنوز این مساله رو ندیدن
۱- راکفلر باید بیاد پیش تولید کننده‌های ما لنگ بندازه
۲- آمار شیرین و فان است
۳- می تونیم با کارهای علمی بامزه هم تفریح کنیم هم چیز یاد بگیریم

مرتبط

و البته مثل همیشه هر جاییش ممکنه اشتباه داشته باشه. خوشحال می شم دوستان حرفه ای اصلاح کنن یا توسعه بدن و به این فکر کنیم که کاش آمار رو اینطوری به ما درس می دادن (:

  • حمید

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

  • مسعود

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

  • مسعود

    جااااادی فئق العاده ای
    یک گیک به تمام معنا
    فک کنم از این به بعد جای اینکه بگیم طرف یک گیک هست باید گفت طرف خیلی جادی هست :)

  • خیلی جالب و خوندنی بود
    چه ایده هایی به سرت میزنه :)))

  • MASOUD

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

    • عارف

      جادی خیلی جادی هستی!

  • رضا

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

    • جادی

      منم مطمئن نیستم چرا سبز الان بهترین رنگه. قبلا آبی بود و حتی می گفتن «تکنیک پرده آبی»‌در حالی که الان می گن «پرده سبز». شاید کسی که فیزیک نور بدونه بتونه کامنت دقیقی بده. تو پردازش تصویر که می بینیم سبز خیلی راحت قبل تشخیص و تفکیک است در حالی که اگر با سفید کار کنیم خیلی خیلی سخته چون به طیف خاکستری نزدیک می شی و نمی دونی کجا باید متوقفش کنی… ولی اینکه چرا آبی یا قرمز نه رو نمی دونم.

  • In your text you say .03 percent, but it’s 3 percent.

    “بله. با اینکه کبریت توکلی مدعی است در هر جعبه اش تقریبا ۴۰ کبریت وجود داره، برنامه پردازش تصویر و نمودارهای نرمال ما نشون می دن که احتمال اینکه واقعا در یک جعبه کبریت توکلی چهل یا بیشتر کبریت باشه، سه صدم درصد بیشتر نیست”

    • جادی

      ممنون. اصلاح کردم.

  • محمد

    فکر میکنم نمیتونید ده تا سمپل رو داشته باشید و روی منحنی نرمال فیتش کنید و نتیجه آخرو بگیرید. بهتره با روشی مثل بوت‌استرپ یا جک‌نایف تعداد سمپلاتو بیشتر کنی بعد sample mean and sample std بگیری.

    • جادی

      ممنون نگاه می کنم

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

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

    ثانیا تعداد داده های شما کم است.

    ثالثا روشی که شما در نظر گرفتید اشتباهه. شما باید از روش آزمون فرض آماری مربوط به میانگین ها استفاده کنید.
    رجوع کنید به فصل 13 ، کتاب آمار ریاضی و کاربرد های آن (جان فروند)

    راه درست استفاده از نرم افزار یا برنامه ایست که بتونه آزمون فرض آماری رو انجام بده. برای مثال نرم افزار Minitab این کار رو خوب انجام می دهد. ( اینجا می تونید عکس های همین نمونه که حل شده رو ببینید : http://imgur.com/a/sRUxj

    شاید توی این مثال به جواب درست رسیده باشید ولی راه اصولی اش اینگونه نیست.

    • مهدی

      در مورد آزمون آماری با شما موافقم. من در اینجا با همون 10 داده و با R چندتا آزمون انجام دادم.
      x<- scan() 35 30 29 32 29 33 36 38 37 38

      t.test(x,mu=40,conf.level = 0.99, alternative=”less

      (
      اینم خروجی:

      One Sample t-test

      data: x
      t = -5.5468, df = 9, p-value = 0.0001789
      alternative hypothesis: true mean is less than 40
      99 percent confidence interval:
      I-Inf 36.90454
      sample estimates:
      mean of x
      33.7
      این یک آزمون فرض یک طرفه است که در اون فرض صفر درست بودن ادعای تولیدکننده مبنی بر اینکه میانگین کبریتها 40 هست، در نظر گرفته میشه. فرض مقابل هم کمتر بودن میانگین از 40 هستش. طبق خروجی، با این مشاهدات احتمال اینکه میانگین 40 و بیشتر باشه فقط 0.0001789 هستش. پس فرض صفر با اطمینان کامل رد میشه.
      آزمون t بر فرض نرمال بودن داده‌ها استوار است. اگه نگران این موضوع باشیم که این شرط برقرار نیست میتونیم از آزمونهای ناپارامتری استفاده کنیم. یک نمونه از این آزمونها، آزمون ویلکاکسون یا آزمون من-ویتنی هست. دستور و خروجی رو این پایین میبینید:

      wilcox.test(x,mu=40,alternative=”less

      (

      Wilcoxon signed rank test with continuity correction

      data: x
      V = 0, p-value = 0.002929
      alternative hypothesis: true location is less than 40

      مشابه قبلی احتمال اینکه میانگین 40 و بیشتر باشه فقط 0.002929 هستش. از قبلیه بیشتره به دلیل اینکه آزمونهای ناپارامتری محتاط تر عمل میکنند. اما باز با اطمینان زیاد فرض صفر رد میشه. یادآوری میکنم فرض صفر همون ادعای تولید کننده (جناب توکلی) است.
      تا یادم نرفته بگم من سطح اطمینان رو 99 درصد در نظر گرفتم.

      • جادی

        ممنون عالی بود (: دوباره می خونم که یاد بگیرم (:

    • صالح

      اینکه ممکنه داده‌ها توزیع نورمال نداشته باشن کاملا درسته.
      بهتره از یه آزمون ناپارامتری مناسب استفاده بشه برای مقایسه میانگین‌ها یا اینکه با یک آزمون نیکویی برازش فرض نورمال بودن داده‌ها بررسی بشه اول.
      اما در مورد ‌R باید بگم R همه‌ی این آزمون‌ها رو داره و نیازی به MiniTab نیست.

    • جادی

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

  • عالی بود! تشویق داری :)

  • نرگس

    چرا این همه اذیت کردی خودتو ؟ o-O
    همون اولش نمی شد همه رو بشمری و خلاص ؟!

    • جادی

      گاهی راه مهمتر از نتیجه است (:

  • نرگس

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

  • فرزاد

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

    • جادی

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

  • فافا

    پسر تو معرکه ای

  • ابوالفضل

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

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

    • دانیال

      احتمالا منظور جادی فقط روش انجام کار بوده و نه آمار دقیق کل کشور،وگرنه به قول دوستان ۱۰ تا قوطی کبریت دیگه چیه که بخوای اینهمه روش وقت بذاری؟از اول مینشست میشمردش

      • جادی

        دقیقا همینه (: کلا ۱۰ تا جعبه کبریت حتی نمونه آماری هم نیست و نتیجه قابل استناد نیست.

    • جادی

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

  • نامی

    سلام، هم مطلب و هم نظرات جالبی بود. دیروز پریروز بود از سر بیکاری یه قوطی کبریت ستاره ممتاز رو وایسادم شمردن توش 43 تا بود بقیه رو نشمردم چون کاردار شدم :) یه وخ فکر نکنید تبلیغ کردما :)

    و یه نکته خارج از بحث: اگه ممکنه بیزحمت یه کاری کنید ادرس تصاویر در جادی۲، جادی.نت نباشه

  • خیلی باحال بود جادی
    کارت واقعا درسته.

  • متین

    حرکات خیلی گیکانه ای بود و کلا با حرکتای آماری حال میکنم (البته یه سری مشکلات داشت که دیگه انقد همه گفتن نمیگم) ولی با آرپی‌جی مگس کشتیا!! ده تا کبریت شمردن با پردازش تصویر؟؟!

    • جادی

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

  • نیشگون

    خوب بود ولی دو تا مشکل داشت:

    ۱) روش کبریت شماری رو اعتبارسنجی نکردی. اول باید برای (مثلا) پنج تا جعبه، عددی که با پردازش تصویر در اومده رو با عدد واقعی (نتیجه شماری دستی) مقایسه کنی. از کجا معلوم حداقل‌های تصویر که انتخاب کردی باعث نشه کبریت‌هایی که سرشون کوچک‌تره شمرده نشن؟

    ۲) درصدی که آخرش گفتی اشتباهه. pnorm یک احتمال می‌ده بین صفر و یک. به همین تناسب یک منهای pnorm هم یک احتمال می‌ده بین صفر و یک. وقتی یک منهای pnorm می‌شه ممیز صفر سه، معنی‌اش «سه درصد» هست نه «سه صدم درصد».

    • جادی

      نکات خوبیه و مرسی که نوشتی.
      ۱- اتفاقا اینکار رو کردم ولی یادم رفت بنویسم. هر ده تا جعبه رو شمردم ببینم چقدر اشتباه دارم. فقط در دو مورد اونهم هر کدوم یک اشتباه داشت. یادم رفت اینو تو مقاله بگم.
      ۲- بله بله اشتباه نوشتم. البته روی شکل درسته. اصلاح کردم.

  • کارجالبی بود
    نظرات بقیه هم جالب بود
    پس منم یه ۲ تا نظر بدم :D
    ۱) نباید تصویر رو سیاه و سفید کنیم چون یه سری از داده های خوب از دست می رن بهتر که مثلا برای این تصویر فقط رنگ قرمز رو در نظر بگیریم (یا در حالت کلی اختلاف رنگ هر پیکسل رو با رنگ سر چوب کبریت ها به دست بیاریم)
    ۲) با توجه به نمودار هیستوگرام نمودار به نظر نورمال نمی یاد پس نباید برای تخمین از pnorm استفاده کرد

    • جادی

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

  • مدامین

    وای چقدر تو باحالی! کاشکی منم مثله تو بودم :دی

  • مدامین

    آقا خواستم نظر بدم بهم گفت: “خیلی تند تند مینویسید کمی آرامتر” برای چی همچین پیغامی داد؟

  • مدامین

    آقا خواستم نظر بدم بهم نوشت: “خیلی تند تند مینویسید کمی آرامتر” برای چی همچین پیغامی داد؟

  • دانیال

    جادی جان کارت حرف نداشت.
    راستی من هم ۴ بار معادلات دیفرانسیل رو افتادم،ولی دفعه ی پنجم خودم پاس کردم.یعنی منم یه روز میتونم یه گیک خوب بشم؟ :)))))))))))))

  • MindFactory

    عالی بود جادی:D
    همین:DD

  • sina

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

  • کبری کبریتی

    عجب برنامه ردیفی! قبل از پختن پلو بدیم این برنامه بشماره ببینیم چند تا میشه هر روز. آمار بگیریم و جدول مدول و نمودار و صفا. هر چی نخود و لوبیا و عدس می‌خوریم آمارش رو بگیریم چاپ کنیم بزنیم در آشپزخونه!

  • فراز power

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

    • جادی

      حتما می گم. البته خیل گسترده نیست و مطمئن هستم دوستان راهنمایی های بهتری خواهند کرد زیرش. ولی می نویسم به زودی. کلا باید تنبل نباشم و در مورد کتاب ها و فیلم ها و این چیزها بنویسم.

  • سجاد

    جالب بود مرسی

  • ManoochD

    سلام،
    قسمت آمارى اين داستان و اين كه دقيقا از چه متدى استفاده شده براى من كمتر جذابيت داره (البته هنوز جالبه). مهمتر به نظرم طرح ايده هست كه خيلى جالبه، و اينكه آدم چطورى ميتونه خودش با يك فكر ساده با كامپيوتر دست گرمى بكنه. در نهايت تو محيط كار هم همين تمرينهاست كه بين توانايى افراد فرق ايجاد ميكنه.
    R البته حرف نداره، ولى برام جالبه چرا از Matplotlib استفاده نكردى. در اون صورت كل برنامه ميشد تو پايتون …

    • جادی

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

  • ههه منم چهاربار ديفرانسيل برداشتم هيچوقت هم خودم پاسش نكردم (((:

    كاش آخرشم حساب ميكردي با اين عددها تو توليد حدودي يك سال اين آقاى توكلى چقدر ازين چهارتا دونه چوب كبريت به جيب ميزنه

  • هادی

    عاشقتم جادی

  • امیر

    چقد استاد آمار داشتیم اینجا!! حرکت گیکانه به این باحالی رو ول کردن گیر دادن به آمار و نرمال و فلان!
    آقا منم 4 بار افتادم، بار پنجمم خود استاد 8 رو داد 10
    و نیز آمار رو هم دوبار داشتم :|

  • دوستان عزیز: R یه نرم افزار و زبان برنامه نویسی آماریه که به هیچ روش و آزمون آماری نه نمیگه (اخیرا قرار شده نون هم بگیره :)) پس اینقد Minitab Minitab نگید خواهشن!
    جادی ایول داری! فقط همونطور که دوستان گفتن:
    – توزیع نرمال به نظر مناسب نمیاد

    • جادی

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

  • نقی معمولی

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

  • کامبیز

    ۱. برای توزیع نرمال باید شرایط تئوری حد مرکزی برقرار باشه. نه اینکه همه‌چی نرمال باشه. مثلا شما می‌تونید از ۱۰ بسته کبریت نمونه‌برداری ۳ تایی بکنید و این کار رو ادامه بدید حداقل ۳۰ بار نمونه برداری کنید تا طبق Central Limit Theorem به احتمال قوی شبیه توزیع نرمال می‌شه.

    ۲. با خشونتی که در نتیجه‌های صفر و یک شما بود این اجازه رو به خودم می‌دم که بگم با آمار راحت می‌شه دروغ گفت و حتمن شما به به یاد دارید با همین آمار و مار چند سال ما با چه کردند. برای نمونه عرض می‌کنم حتی بر فرض صحت محاسبات شما که ۳ درصد بالاتر یا مساوی با ۴۰ کبریت در هر بسته داریم، و با در نظر گرفتن p-value=1% فرض صفر شرکت توکلی رو نمی‌شه رد کرد (یعنی فاکتور شانس دخیل بوده، نه فاکتور سیستماتیک) و در نتیجه حق با اون‌ها است نه با شما.

    ۳. با همه‌ی این حرف‌ها از جزییات که بگذریم به قول معروف با آمار راحت می‌شه دروغ گفت، اما بدون اون خیلی راحت‌تر می‌شه دروغ گفت. ممنون برای اشاره به اهمیت آمار و یادآوری جذابیت اون. موفق باشی.

  • نیما

    یه مورد دیگه به نتیجه ها اضافه میکنیم:
    -دزدی از مردم از همه جای این جامعه داره میجوشه! اصلا مهم نیست به کجا بنگری، حتما یه دزدی در کاره :/

  • مصطفی محمدزاده

    خدا قوت واقعا!
    به نظرم جواب دادن به نظرات بیشتر از خود آزمایش انرژی گرفته :)

  • محسن

    فوق العاده بود
    انصافا خیلی کارت درسته.
    آمار.لینوکس.پایتون.پردازش تصویر.angular js .این ها فقط چیزهاییه که رو کردی
    خیلی دوست دارم بدونم دقیقا دیگه چه چیزهایی بلدی.
    خلاصه بگم که الگوی منی :)

  • دیمیتری

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

    • جادی

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

  • چقد همه نظر گذاشتند!
    دیگه نظر من فکر نکنم دیده بشه
    ولی آمار دوس دارم خیلی!
    دستت درد نکنه جادی
    لذت بردم :)

  • مانی

    جالب بود. من رشته ام شیمی کاربردی بود لیسانسم رو تو تبریز گرفتم. من کارآموزیم رو تو همین کارخونه کبریت سازی توکلی کار کردم. جالبه که استاندارد هر هفته می اومد و چند تا باکس کبریت برای آزمایش می برد. کار من هم این بود که روزی 1200 تا کبریت می سوزوندم و کیفیتشون رو چک می کردم. در مورد تعداد کبریت تو یه بسته تقریبآ همیشه درست بود اون موقع یعنی سال 85. بعد از اون دیگه نمی دونم. من کارم این بود که می دیدم از یک جعبه کبریت چند تاشون میشکنند و چند تاشون روشن نمی شند و چند تاشون موقع روشن شدن اخگر پرت می کنند.
    بعد از اون اومدم شیمی و آمار تو شیمی خوندم واسه ارشد و دکتری. همه ی این نرم افزار هایی رو که میگی رو باهاشون کار کردم اما واسته مولکول ها. یه نرم افزار هم خودمون نوشتیم واسته طبقه بندیه همه ی مولکول های دنیا. http://www.csminer.com
    اما مسئله این هست الان من به نمونه برداری اعتراض دارم. الان این نمونه ای که شما گرفتی ممنکنه بایاس باشه. یعنی واسه یه روزی بوده که دستگاه ها خراب بودن. چون استاندارد خیلی این ها رو چک نمی کنه و نمیشه چک هم کرد. اگه چند تا بسته برمی داشتی بهتر بود. تو که اسکریپت ها رو نوشتی. طبق قضیه حد مرکزی ممکنه بعد از چند تا بسته میانگین به نزدیک چهل میل کنه واقعآ .

    • جادی

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

  • عماد

    سلام جادی،
    یک نکته ای که وجود داره، اون زمانها که پردازش تصویر نبوده، بر اساس وزن تعداد رو میگفتن. مثل همون کاری که دستگاه های تبدیل پول خرد به اسکناس میکنن.
    همین کار رو میشه با وزن این کبریت ها کرد و بر اساس وزنشون و میانگین اون گفت که آیا با معیار وزن عدد ۴۰ رو درست گفتن، یا اونجا هم دست راکفلر رو از پشت بستن که هیچ، یه فیلیپینی هم بهش زدن!

  • علی

    سلام جادی
    عکس ها رو همراه با کدها داخلی گیت می زاری ازش استفاده کنیم
    ممنونم

  • Pingback: لینک های مفید برای زبان R - آکادمی داده کاوی انجام پروژه ها و پایانامه های داده کاوی دانشجوی کارشناسی ارشد و دکترا()