Wednesday, April 3, 2019

    ডেটা সায়েন্সের অন্যতম জনপ্রিয় প্রোগ্রামিং ল্যাংগুয়েজ R। জনপ্রিয়তা পেছনে অন্যতম বড় একটি কারণ এর বিশাল ইউজার কমিউনিটি। আর অনলাইনে রয়েছে ল্যাংগুয়েজটি শেখার প্রচুর পরিমাণ রিসোর্স। এ রকম কিছু রিসোর্স নিয়ে বলছি। এর বাইরেও ভালো রিসোর্স থাকা অসম্ভব নয়।

    অনলাইন কোর্স
    ১। DataCamp: Introduction to R

    ডেটা সায়েন্সের জন্যে অনলাইন কোর্সের সবচেয়ে বড় মাধ্যম ডেটা ক্যাম্প। এখানে R একেবারে প্রাথমিক পর্যায় থেকে শুরু করতে Introduction to R কোর্সটি খুব ভালো ভূমিকা রাখতে পারে। একজন বিগিনার হিসেবে R সম্পর্কে যা যা জানা দরকার তার সবই এখানে আছে। তার ওপর কোর্সটি করা যাবে বিনা মূল্যেই। এই কোর্সে ছয়টি চ্যাপ্টার আছে। এগুলোতে যথাক্রমে ভ্যারিয়েবল টাইপ, অ্যাসাইনমেন্ট, ভেক্টর, ম্যাট্রিক্স, ফ্যাক্টর, ডেটা ফ্রেইম ও লিস্ট শেখানো হয়।


    ডেটাক্যাম্পের বড় একটি সুবিধা হলো এখানে বেশিরভাগ ক্ষেত্রেই টেক্সট বা ভিডিও টিউটোরিয়ালের বদলে প্র্যাকটিসের মাধ্যমে শেখানো হয়। প্রতিটি সেকশনে নির্দেশনা অনুসারে আপনার নিজেকে কোড লিখে সফলভাবে সাবমিট করে তবেই পরের সেকশনে যেতে হবে। তবে এই কোর্সটাকে R এর বিশাল রত্মভাণ্ডারের দরজা বলা যায়। R এর সঠিক প্রয়োগ করতে হলে আরও আরও রিসোর্সের সহায়তা নিতে হবে। ডেটাক্যাম্পেই শুধু R নিয়েই প্রায় ১০০ কোর্স আছে। তবে প্রথমটি ছাড়া বাকি প্রায় সবগুলোরই অ্যাক্সেস পেতে ডলার গুণতে হবে আপনাকে।

    ডেটাক্যাম্পR এর সব কোর্সের লিঙ্ক

    ২। Coursera
    এখন পর্যন্ত অনলাইন কোর্সের সবচেয়ে বড় মাধ্যম Coursera। এখানে ডেটা সায়েন্স নিয়ে বেশ কিছু কোর্স আছে। তার একটির একাংশে আছে R Programing নামে R নিয়ে একটি মোটামুটি পূর্ণাঙ্গ কোর্স। কোর্সটি জনস হপকিন্স ইউনিভার্সিটির প্রফেসরদের দ্বারা পরিচালিত। এতে আগের কোর্সটির কন্টেন্ট এর পাশপাশি লুপ ও সিমুলেশনও আছে। কোর্সটি ৪ সপ্তাহের। প্রতি সপ্তাহেই আছে অ্যাসাইনমেন্ট। এগুলো করতে করতে R অনেকটাই সহজ হয়ে উঠবে।

    Courseraয় প্রায় সব কোর্সই টাকা দিয়ে করতে হয়। তবে প্রায় যে-কোনো কোর্সেই Financial aid এর জন্যে অ্যাপ্লাই করা যায়। এটায়ও করা যায়। অ্যাপ্লিকেশনের ১৫ দিন পরে অনুমোদন হলো কি না জানা যায়। হলে তখনই শুরু করা যায়। তবে অ্যাপ্লিকেশন রিজেক্ট হবার নজির আমি দেখিনি কখনও।

    ৩। Essential R (পেন স্টেইট ইউনিভার্সিটি) 
    এটা ওদের অনলাইন কোর্সের জন্যে করা হলেও খুবই হেল্পফুল। পাশাপাশি ওদের R এর অনলাইন কোর্সটাও চেখে দেখার মতো।

    আরও কোর্স
    ১। EDX: The Analytics Edge
    ২। EDX: Statistics and R


    বই

    ১। R Programming for Data Science, Roger Peng
     এই বইটি মূলত Coursera'র কোর্সের আলোকে করা। এটা পড়লেই কোর্সের প্রায় সব কিছু জানা হয়ে যাবে।

    ২। R in a Nutshell, Joseph Adler
    নাটশেল বলা হলেও আসলে বইটির কলেবর বেশ বড়। পিডিএফে ৭২২ পৃষ্ঠা! তবে ধাপে ধাপে R বিশেষজ্ঞ হতে এর জুড়ি নেই।

    ৩। R for Data Science: IMPORT, TIDY, TRANSFORM, VISUALIZE, AND MODEL DATA
    Hadley Wickham & Garrett Grolemund

    বইটির অন্যতম লেখক হ্যাডলি উইকাম। বর্তমান সময়ের সবচেয়ে প্রভাবশালী ডেটা সায়েন্টিস্ট। R এত জনপ্রিয় হবার পেছনে আছে এই মানুষটির অবদান আমার মতে সবচেয়ে বেশি। tidyr, ggplot2, dplyr, readr, devtools, roxygen2 এর মতো জনপ্রিয় R প্যাকেজগুলোর ডেভেলপার তিনি। ডেটা সায়েন্সের কোনো প্রোজেক্ট R দিয়ে একদম শুরু থেকে শেষ পর্যন্ত করতে যা যা লাগবে তার সব এই বইতেই আছে। বইটির একটি বড় অংশ অনলাইনেই পড়া যায়। এই লিঙ্ক থেকে


    ৪। ggplot2: Elegant Graphics for Data Analysis; Hadley Wickham
    যে প্যাকজটির জন্যে হ্যাডলি সবচেয়ে বিখ্যাত সেটি হলো ggplot2। দারুণ সব গ্রাফিক্স আঁকতে এই প্যাকেজের জুড়ি নেই। ggplot2 এর সব খুঁটিনাটি নিয়েই এই বই।

    ৫। Machine Learning with R, Brett Lantz
    মেশিন লার্নিং এর কাজগুলো কত দারুণভাবে R দিয়ে করা যায় তা জানা যায় এই বইটি পড়লে। শুরুর দিকে R এর বেসিক বিষয়গুলোও দারুণভাবে উঠে এসেছে।

    ৬। Introduction to visualising spatial data in R

    এটা ফ্রিতে ডাউনলোড করা যায় এই লিঙ্ক থেকে। জিওগ্রাফিক ডেটা অ্যানালাইসিস ও ম্যাঁপ আঁকা শুরু করতে এটার জুড়ি নেই।

    আরও কিছু বই
    ১। Advanced R, Hadley Wickham
    ২। Applied Predictive Modeling, Max Kuhn and Kjell Johnson
    ৩। Hands-On Programming with R, Garrett Grolemund
    ৪। R Graphics Cookbook, Winston Chang
    ৫। Machine Learning for Hackers, Drew Conway and John Myles White
    ৬। Machine Learning Mastery With R, Jason Brownlee

    এই বইটার কন্টেন্ট আমার খুব নজর কেড়েছে।



    অনলাইন টিউটোরিয়াল
    ১। R tutorial: listendata.com
    শুধু এখানে যে আছে শেষ করতে পারলেই R এর বিশেষজ্ঞদের সাথে পাল্লা দেওয়া যাবে।

    ২। টিউটোরিয়াল পয়েন্ট
    এখানে একেবারে বেসিক থেকে ধারাবাহিকভাবে সবে কিছু আলোচনা করা আছে।

    ৩। GIS in R by Nick Eubank
    R দিয়ে ম্যাপ আঁকতে ও জিওগ্রাফিক ডেটা অ্যানালাইসি শিখতে।

    আরও কিছু ওয়েবসাইট
    ১। R graph gallery
    ২। Variance explained

    এছাড়াও R এর ইউজার কমিউনিটি খুব শক্তিশালী বলে প্রোগ্রামিং করতে করতে সমস্যায় পড়ে গেলে সমাধান পাওয়া যায় খুব সহজে। কারণ, আপনি আজ যে সমস্যায় পড়লেন, আরও লাখ লাখ মানুষ অনেক বছর আগেই সে সমস্যায় পড়েছেন। সমধানও পেয়েছেন। সমস্যা নিয়ে গুগোল সার্চ দিলেই সমধানগুলো চোখে পড়বে। সম্ভবত সবচেয়ে বড় অবদান রাখে Stackoverflow ওয়েবসাইটটি।

    এখানে r ট্যাগযুক্ত প্রশ্নোত্তরগুলো চর্চা করতে থাকলে ক্রিয়েটিভিটি লাফিয়ে লাফিয়ে বৃদ্ধি পাবে।

    এবার একটু নিজেদের কথা বলি। আমাদের এই সাইটেও  R নিয়ে কিছু টিউটোরিয়াল আছে। আপাতত খুব সামান্যই। তবে জিওগ্রাফিক ম্যাপিং এর আর্টিকেলটি বিশেষভাবে উল্লেখযোগ্য। অন্যান্য আর্টিকেলগুলো পাওয়া যাবে এই লিঙ্কে

    ভালো থাকুন!
    Category: articles

    Thursday, March 14, 2019

    এর আগের লেখায় আমরা দেখেছিলাম, কোনো সংখ্যাকে শূন্য দিয়ে ভাগ দেওয়া যায় না। দিতে গেলে আসে অদ্ভুত সব ফলাফল। ১ = ১০০ ইত্যাদি। ওখানে আমরা $\frac{০}{০}$ নিয়ে কিছু বলিনি। এবার এটা দেখা যাক!

    এখানেও ০-এর কাছাকাছি সংখ্যাদেরকে নিয়ে ভাগ করে দেখি।
    $$\frac{০.১}{০.১}=১$$
    আবার, একই উত্তর পাব ০.০১ নিলেও। কারণ,
    $$\frac{০.০১}{০.০১}=১$$
    একইভাবে,
    $$\frac{০.০০০১}{০.০০০১}=১$$
    এবং
    $$\frac{০.০০০০০১}{০.০০০০০১}=১$$
    তার মানে, মনে হচ্ছে $\frac{০}{০}$ হয়ত ১-ই হবে। কারণ, ঋণাত্মক সংখ্যা নিলেও একই ফল আসবে। 
    $\frac{-০.১}{-০.১}=১$, $\frac{-০.০১}{-০.০১}=১$, $\frac{-০.০০০১}{-০.০০০১}=১$ এবং $\frac{-০.০০০০০১}{-০.০০০০০১}=১$

    অতএব, মনে হচ্ছে যথেষ্ট শক্তিশালী যুক্তি পাওয়া গেছে। $\frac{০}{০}=১$ ই হওয়া উচিৎ। 

    কিন্তু এবার মুদ্রার উল্টো পিঠটা একটু দেখি। ০-কে ০ দিয়ে ভাগ না দিয়ে ক্রমেই ০-এর কাছাকাছি সংখ্যা দিয়ে ভাগ করি। এই কাজটা আমরা আগেও করেছি। 

    $$\frac{০}{০.১}=০$$
    আবার, একই উত্তর পাব ০.০১ নিলেও। কারণ, 
    $$\frac{০}{০.০১}=০$$
    একইভাবে,
    $$\frac{০}{০.০০০১}=০$$
    এবং 
    $$\frac{০}{০.০০০০০১}=০$$

    তার মানে, যতই ছোট সংখ্যা দিয়ে ভাগ করব, মান পাব ০-এর তত কাছাকাছি। তাহলে, আগের মতো একই যুক্তিতে বলা যায়, $\frac{০}{০}$ এর মান হবে ০। এই যুক্তি আগের যুক্তির (যেখানে ভাগফল ১ হয়েছিল) চেয়ে কোনো অংশে কম দুর্বল নয়। 

    এবং আগের মতোই, ০-কে ঋণাত্মক সংখ্যা দ্বারা ভাগ করলেও একই অবস্থা হবে। তাহলে কোনটা ঠিক? ০, নাকি ১? 

    ফলাফল আসলে যে-কোনো অশূন্য সংখ্যাকে শূন্য দিয়ে ভাগ করার মতোই। $\frac{০}{০}$-কে সংজ্ঞায়িত করার উপায় নেই। ফলে, (কোনোকিছু÷০) এর মতোই $\frac{০}{০}$ও অসংজ্ঞায়িত। 
    তবে গণিতের আরও গভীরে প্রবেশ করলে $\frac{০}{০}$ কে অনির্ণেয় (indeterminate) বলা হয়। সেটাও আমরা দেখব ইনশাআল্লাহ।

    আরও পড়ুন:
    Category: articles
    প্রথমে একটি মজার ফলাফল দেখি। চাতুরী খাটিয়ে দেখানো যায় ১ = ০। বা ১ = ১০০। অথবা আপনি যা চান তাই। এটা দেখানোর অনেকগুলো উপায়। অবশ্যই সবগুলো উপায় ভুল।


    এর মধ্যে অন্যতম সহজ একটি উপায় এমন-

    ধরি,
    $$\begin{eqnarray}
    x &=& 0      \nonumber \\
    & \implies & x (x-1)=0 \nonumber \\
    &\implies &(x-1)=0    \nonumber \\
    &\implies &x=1   \nonumber
    \end{eqnarray}$$
    আমরা পেলাম x = 1, অথচ শুরুতে x = 0 ধরে নিয়েছিলাম।
    মানে এখন ০ এবং ১ সমান। এখানে দ্বিতীয় লাইনে (x-1) এর বদলে (x-100) ধরলে 100 = 0 দেখানো যাবে। দেখানো যাবে অন্য যে-কোনো কিছুই। কিন্তু এটা আসলে ভুল।

    ভুলটা হয়েছে তৃতীয় লাইনে। যেখানে আসলে আমরা উভয়পক্ষকে x দিয়ে ভাগ করেছি। কিন্তু x মানে আগেই ০ ধরে নিয়েছিলাম। আর ০ দিয়ে ভাগ দেবার নিয়ম নেই।

    কিন্তু কেন? দিলে ক্ষতি কী? সেটাই আমরা দেখার চেষ্টা করব।

    গণিতের গভীরে যাবার আগে প্রথমে একটু কমন সেন্স কাজে লাগাই। ভাগ দেওয়ার মানে আসলে কী? ধরুন, আপনার কাছে ২০টি আম আছে। ৫ জন বন্ধু এগুলো ভাগ করে খেতে চান। সবাইকে সমান আম দিলে সবাই $\frac{২০}{৫} = ৪$  টি করে পাবে। কিন্তু যদি বাকি ৪ বন্ধু খেতে না চায়, তাহলে একজনই ২০টি আম পেয়ে যাবে। কারণ, $\frac{২০}{১} =২০$।

    এবার একটু ভাবুন: কেউই যদি খেতে না চায়, তাহলে কী হবে? ২০ টি আম ০ জন মানুষের কাছে কীভাবে বণ্টন করা যাবে? একটু ভাবুন। ভাগের ধারণাটাই কাজ করছে না।

    আরেকভাবে দেখুন। ভাগ কিন্তু আবার গুণ করে মিলিয়ে নেওয়া যায়। $\frac{২০}{৫} = ৪$। এর মানে হলো, ৪-কে ৫ দিয়ে গুণ করলে ২০ পাওয়া যাবে। এবার $\frac{২০}{০}$ ভাগফলটি দেখুন। এটা সমান ধরুন 'ক' পাব। তার মানে 'ক'-কে ০ দিয়ে গুণ করলে ২০ পাওয়ার কথা। এবার একটু গভীরভাবে ভাবুন। এমন কোনো সংখ্যা আছে কি, যাকে ০ দিয়ে গুণ করলে ২০ পাব? ২০ এর বদলে অন্য যে-কোনো সংখ্যা (০ ছাড়া) নিয়ে ভাবলেও একই কথা পাওয়া যাবে।

    আসলে শূন্য দিয়ে কোনো (অশূন্য) সংখ্যাকে ভাগ দিলে কত পাওয়া যাবে তার সুনির্দিষ্ট কোনো সংজ্ঞা নেই। অন্য কথায় এই মানটি হবে অসংজ্ঞায়িত। এই কথাটির আরেকটি মানে হলো শূন্যকে কোনো কিছু দিয়ে ভাগ দিলে কত হবে তার কোনো মান গণিতবিদরা নির্দিষ্ট করতে পারেননি। এর জন্য কোনো ভাল উত্তর ঠিক করতে পারেননি তারা। এমন না যে এটা তাদের দুর্বলতা। বিষয়টিই আসলে এমন। 

    যেমন ধরুন, আমরা কোনোকিছুকে শূন্য দিয়ে ভাগ দিলে যা হতে পারে সেটাকে ধরলাম 'ক'। এখন তাহলে $\frac{৯}{০}$ এর যে মান হবে, $\frac{১০০}{০}$ এর মানও তাই হবে। তাহলে তো মেনে নিতে হয় ৯ আর ১০০ সমান! এই অদ্ভুত ভাগটি করলে এমন অদ্ভুত সব ফলই আসবে। যেগুলো স্ত্যি হলে গণিতের ভিত্তিটাই ধসে পড়ে।

    তবুও ধরা যাক, আমরা (কোনোকিছু ÷ ০) এর একটি মান বের করতেই চাই। তাহলে কী ঘটে দেখা যাক। সহজভাবে চিন্তা করতে আমরা ১-কে শূন্য এর কাছাকাছি বিভিন্ন সংখ্যা দিয়ে ভাগ করে দেখি।

    • ১-কে ০.১ দিয়ে ভাগ করলে পাব ১০
    • ১-কে ০.০১ দিয়ে ভাগ করলে পাব ১০০
    • ১-কে ০.০০০১ দিয়ে ভাগ করলে পাব ১০,০০০
    • ১-কে ০.০০০০০১ দিয়ে ভাগ করলে পাব ১০০,০০,০০
    একটা বিষয় নিশ্চয়ই খেয়াল করেছেন। আমরা ০-এর যত কাছের সংখ্যা দিয়ে ভাগ দিচ্ছি, ভাগফল তত বেশি হচ্ছে। একই ব্যাপার ঘটবে আমরা ১-এর বদলে অন্য কোনো সংখ্যাকে ভাগ দিতে থাকলে। যেমন ১ এর বদলে ৭-কে ভাগ দিলে হত যথাক্রমে ৭০; ৭০০; ৭০,০০,০০ ও ৭০, ০০, ০০, ০০। 

    তার মানে শূন্য দিয়ে ভাগ দিলে আমরা অনেক বিশাল একটি সংখ্যা পাব। যাকে অন্য অর্থে বলা চলে অসীম। এর জন্য একটি চিহ্নও আছে বটে। চিহ্নটা হলো ∞। অনেক সময় আমরা গাণিতিক কাজ করতে গিয়ে ব্যবহার করিও (সতর্কতার সাথে)। কিন্তু (কোনোকিছু ÷ ০) এর মান ∞ ধরে নিলে সমস্যা আছে। কারণ হলো এই কোনোকিছু যদি ঋণাত্মক হয়, তাহলে উত্তর আর ∞ হয় না। দেখুন না! 
    • ১-কে - ০.১ দিয়ে ভাগ করলে পাব - ১০
    • ১-কে - ০.০১ দিয়ে ভাগ করলে পাব - ১০০
    • ১-কে - ০.০০০১ দিয়ে ভাগ করলে পাব - ১০,০০০
    • ১-কে - ০.০০০০০১ দিয়ে ভাগ করলে পাব - ১০০,০০,০০

    তার মানে ঋণাত্মক সংখ্যাকে শূন্য দিয়ে ভাগ দিলে আমরা পাব অনেক ক্ষুদ্র একটু সংখ্যা। এখানে কিন্তু মাথায় রাখতে হবে কোনো সংখ্যা যত বড় হবে, তার আগে ঋণাত্মক চিহ্ন দিয়ে দিলে সেটি তত ছোট হয়ে যাবে। 

    উপরের আলোচনা গ্রাফে বসালে এমন হয়। দেখুন x এর মান ধনাত্মক দিক থেকে ০-এর দিকে যেতে থাকলে $\frac{1}{x}$ এর মান ∞ এর দিকে যেতে থাকে। আবার ঋণাত্মক দিক থেকে ০-এর দিকে যেতে থাকলে $\frac{1}{x}$ এর মান -∞ এর দিকে যেতে থাকে।
    ছবি: উইকিপিডিয়া কমন্স
    এখন তাহলে (ঋণাত্মক সংখ্যা ÷ ০) এর মান আমরা ধরতে পারি ঋণাত্মক অসীম (-∞)। খেয়াল করুন, ধনাত্মক বা ঋণাত্মক, দুই ক্ষেত্রেই আমরা ভাগ দিতে দিতে ০-এর কাছাকাছি যাওয়ার চেষ্টা করেছি। কিন্তু দুই ক্ষেত্রে ফল এসেছে আলাদা। একবার পাচ্ছি ∞। আবার পাচ্ছি -∞। দুটো সংখ্যার মধ্যে সর্বোচ্চ দূরত্বের উদাহরণ এই দুটি সংখ্যা। থুক্কু! এদেরকে গণিতে সংখ্যা হিসেবে গণ্যই করা হয় না। এর আসলে শুধুই 'অনেক বড়' বা 'অনেক ছোট' ধারণাগুলো প্রকাশ করার একটি উপায় মাত্র। 

    অসীম ও ঋণাত্মক অসীমকে সংখ্যারেখায় বসিয়ে দেখি-

    তার মানে কী দাঁড়াল? (কোনোকিছু ÷ ০) এর কোনো ভাল উত্তর আমরা পাচ্ছি না। এ জন্যেই আগে বলেছি, এই না পাওয়ার বিষয়টি গণিতবিদদের কোনো দুর্বলতা নয়। এই ভাগফলটিই এমন। তাই গণিতবিদরা এর নাম দিয়েছেন অসংজ্ঞায়িত।

    এ কারণেই কৌতুকবিদ স্টিভেন রাইট বলেছিলেন, "ব্ল্যাক হোলে ঈশ্বর শূন্য দিয়ে ভাগ দিয়েছেন ।" এটি বলার কারণ আসলে ব্ল্যাক হোলে ভেতরে পদার্থবিদ্যার সূত্রগুলো ভেঙে পড়ে। ওখানে ঠিক কী ঘটে তা সঠিক করে বলার উপায় নেই। যেভাবে বলার উপায় নেই শূন্য দিয়ে ভাগের ভাগফল।

    সূত্র
    ১। খান অ্যাকাডেমি
    ২। উইকিপিডিয়া
    Category: articles

    Sunday, January 27, 2019

    পরিসংখ্যান নিয়ে কথা বলতে গেলে এই দুজন মানুষের কথা আসবেই। দুজনেই ইংরেজ। বয়সে পিয়ারসন বড়। জন্ম ১৮৫৭ সালে। ফিশারের জন্মসাল ১৮৯০। কার্ল পিয়ারসনকে বলা হয় গাণিতিক পরিসংখ্যানের জনক। লন্ডনের ইউনিভার্সিটি কলেজে তিনিই বিশ্বের প্রথম কোনো পরিসংখ্যান বিভাগ প্রতিষ্ঠা করেন। অন্য দিকে ফিশারকে বলা হয় আধুনিক পরিসংখ্যানিক বিজ্ঞানের জনক। এছাড়াও তাকে বলা হয় বিংশ শতকের সবচেয়ে গুরুত্বপূর্ণ পরিসংখ্যানবিদ।



    আরও পড়ুন
    রোনাল্ড ফিশার কে ছিলেন?

    তবে পরিসংখ্যানের মহান এই দুই দিকপালের মধ্যে সম্পর্ক একেবারেই খারাপ ছিল। শুরুটা পিয়ারসনই করেছিলেন। ফিশার তখন সবে তরুণ গবেষক। পিয়ারসন আগে থেকে কিছু না বলে ফিশারের কাজের সমালোচনা শুরু করে দিলেন। ফিশারও মারাত্মক রেগে গেলেন। তার মনে হলো, পিয়ারসন আসলে ফিশারের গবেষণা বুঝতেই পারেননি। আসলে তো তিনি পিয়ারসনের কাজেরই উন্নতি সাধন করছিলেন।

    ফিশার ছিলেন একটু রাগী। আর পিয়ারসন ছিলেন আবেগপ্রবণ ও কলহপ্রিয়। কারও জন্যেই ব্যাপারটা সুবিধার ছিল না। ১৯২৯ সালে ফিশার রয়েল সোসাইটিতে যোগ দেন। এবার তার কাজ আরও বেগবান হলো। অনেকগুলো বিষয়ে পেপার লিখতে শুরু করলেন। কিছু কিছু পেপার এত নতুন ও অসাধারণ ধারণা নিয়ে আসতে যে পেপারের রেফারিরা সেগুলো রিভিউ করতে রাজি হতেন না। কারণ আর কিছুই নয়, তারা নিজদেরকে ওই বিষয়গুলো রিভিউ করার অযোগ্য মনে করতেন।

    ওদিকে পিয়ারসন তখন বায়োমেট্রিকার মতো জার্নালের সম্পাদক। তিনি আবার জার্নালটির সহ-প্রতিষ্ঠাতাও। সেই সময় এটিই ছিল পরিসংখ্যানের সেরা জার্নাল। এই ক্ষমতা ব্যবহার করে তিনি ফিশারের বিরুদ্ধে লাগলেন। ফিশারের পেপার পেলেই নাকচ। এমনকি তিনি ব্যক্তিগত আক্রমণ করে এটাও বলে বসলেন যে নিজের অদক্ষতার মাধ্যমে ফিশার নাকি পরিসংখ্যান পেশাটার সুনাম নষ্ট করছেন। সে সময় যুক্তরাজ্যের পরিসংখ্যানের জগতে পিয়ারসন সবচেয়ে বড় নাম। ফলে অন্য জায়গায়ও ফিশার প্রায় একই রকম আচরণ পেতে শুরু করলেন। রয়েল পরিসংখ্যান সোসাইটিও ফিশারের পেপার ছাপতে অস্বীকৃতি জ্ঞাপন করল। কী আর করা! ফিশার সোসাইটির পদই ছেড়ে দিলেন।

    এভাবে চলল কিছু দিন। আস্তে আস্তে পিয়ারসনের প্রভাব কমে এল। আর ফিশার হয়ে উঠলেন প্রভাবশালী। ১৯৩৬ সালে পিয়ারসন মারা গেলেন। তত দিনে তার প্রভাব এতই কমে গেছে যে মানুষ তাকে প্রায় ভুলেই গিয়েছে। অথচ ফিশার তখন ক্যারিয়ারের সেরা সময় অতিক্রম করছেন।

    পিয়ারসনের ছেলের নাম ইগন পিয়ারসন। ইগন কিন্তু বাবার মতো হিংসুক ছিলেন না। নম্র-ভদ্র স্বভাবের মানুষ। কিন্তু ফিশারের সাথে বাবার আচরণের ফল এসে পড়ল তাঁর ওপর। ফিশার ইগনের সাথে দূর্ব্যবহার করতে থাকেন। ফিশার কখনোই আর তার সাথে সহজ আচরণ করেননি। যদিও ইগন অনেকবার সে চেষ্টা করেছিলেন। শেষ পর্যন্ত ইগন আরেক পরিসংখ্যানবিদ নেইম্যানের সাথে মিলে হাপোথিসিস টেস্টিং এর দারুণ এক রূপ দেন, যা ফিশারের পদ্ধতির চেয়ে সরল। একেই আমরা নেইম্যান-পিয়ারসন লেমা হিসেবে চিনি। স্বভাবতই ফিশার এতে ক্ষেপে যান।

    তবে আরেক ইংরেজি পরিসংখ্যানবিদ উইলিয়াম গসেট দুজনের সাথেই সুসম্পর্ক রক্ষা করে চলেছিলেন। এতে করে তাঁর অনেক গবেষণার কাজ সহজ হয়েছিল। মারামারির চেয়ে যে বোঝাপড়া ভালো তারই এক উজ্জ্বল হয়ে থাকলে গসেট!

    সূত্র: The Lady Tasting Tea by David Salsburg
    Category: articles

    Sunday, January 20, 2019

    যে-কোনো গবেষণা বা স্টাডি পরিচালনা করতে গেলেই দরকার হয় ডেটা। ডেটা সংগ্রহ করতে গেলেই প্রশ্ন দাঁড়ায়, কত সাইজের স্যাম্পল নেব? লাখ টাকার প্রশ্ন। আক্ষরিক অর্থেই লাখ টাকার প্রশ্ন। কারণ আপাত দৃষ্টিতে সরল এই প্রশ্নটির জবাব আসলে অনেক জটিল। আর জটিল হিসাবটি সহজ করে দিয়ে পরিসংখ্যানবিদরা আসলেই লাখ লাখ টাকা কামান।

    অনেকের কাছে মনে হতেই পারে, ইচ্ছা মতো যে-কোনো একটা সাইজের স্যাম্পল নিলেই তো হলো। এতে কী আর আসে-যায়?
    অনেক কিছু আসে যায়। আপনার স্যাম্পল (sample) বা নমুনা যদি খুব ছোট হয়, তবে সেটা থেকে পাওয়া ফলাফলের ওপর ভরসা রাখা মুশকিল। কেউ কেউ বলবেন, ওকে, তাহলে ভুল এড়াতে বড়সড় একটা স্যাম্পল নিয়ে নেব। কিন্তু বুঝতে হবে বড় স্যাম্পল নিতে গেলে আপনার বিপুল পরিমাণ অর্থ, সময় ও লোকবল অপচয় হবে। অথচ হয়ত আসলে অত বড় স্যাম্পল নেবার কোনো দরকারই ছিল না। যেমন, আপনি ভাবলেন, আমার অনেক টাকা আছে। নিয়ে নিলাম দশ হাজার সাইজের একটি স্যাম্পল। অথচ এমন হওয়া অসম্ভব নয় যে দশ হাজার সাইজের স্যাম্পল নিয়ে যে ফল পাবেন, মাত্র ৪০০ সাইজের স্যাম্পলও প্রায় একই পরিমাণ নির্ভুল ফল দেবে। কেন তাহলে বোকার মতো সময় আর শিক্ত ক্ষয় করবেন?



    আজকে আমরা স্যাম্পল সাইজ পরিমাপের একবারে সাধারণ একটা উদাহরণ দেখব। ধরা যাক, আমার দেখতে চাই ঢাকার আরামবাগ এলাকায় কত শতাংশ মানুষের ডায়াবেটিস রোগ আছে? আমরা ধরে নিচ্ছি এক্ষেত্রে সরল দৈব নমুনায়ন (simple random sampling) পদ্ধতি কাজ করবে। এর মানে হলো আমরা যে মানুষদেরকে তথ্য নেবার জন্য বাছাই করব, বাছাইকৃত হবার সম্ভাবনা তাদের প্রত্যেকের ক্ষেত্রে সমান। ধরুন, আরামবাগ এলাকায় ১০,০০০ মানুষ আছেন। হয়ত আমরা স্যাম্পল নেব ৪০০ সাইজের। এখন এই ৪০০ জনের মধ্যে আসার সম্ভাবনা দশ হাজার মানুষের সবার জন্য সমান। অন্য কথায়, প্রত্যেকের সম্ভাবনা $\frac{১}{১০০০০}$।

    এখন আমরা কত সাইজের নমুনা নেব? এর উত্তর জানতে হলে তার আগে আরেকটি প্রশ্নের উত্তর পেতে হবে। আমরা কতটা নির্ভুল পরিমাপ চাচ্ছি। ধরা যাক, আমরা যে পরিমাপ পাব, বাস্তব হার (ডায়াবেটিসের) সেটার ৫ শতাংশ এদিক-ওদিক হলেও কিছু মনে করব না। এর মানে হলো, ধরা যাক, আমরা স্যাম্পল নিয়ে হিসাব করে পেলাম ৩৫ শতাংশ। তাহলে সত্যিকার ডায়াবেটিস রোগীর হার (P) ৩০ থেকে ৪০ শতাংশের মধ্যে থাকবে।

    এখানে আরেকটা কথা বলে না রাখলেই নয়। এই যে বললাম, ৩০ থেকে ৪০ এর মধ্যে থাকবে এটা পুরোপুরি নিশ্চিত কিছু নয়। তবে স্যাম্পল বড় হলে এর চেয়ে বেশি এদিক-সেদিক হবে না বলে আশা করা যায়। সাধারণভাবে বলা চলে ৫ শতাংশ ভুল মানে হলে প্রতি ২০টা নমুনার মাত্র একটায় ফল ৩০ থেকে ৪০ এর বাইরে চলে যাবে।

    স্যাম্পল সাইজের হিসাবকে আরেকটু সরল করার জন্যে আমরা আরও ধরে নিচ্ছি শতাংশের পরিমাপটা পরিমিত বিন্যাস মেনে চলে। কথাটি অপরিচিত হলে এই লেখাটায় ঢুঁ মেরে আসতে পারেন। এছাড়াও আমরা আপাতত FPC (Finite population correction) কে বিবেচনা থেকে বাদ দিচ্ছি।

    যেহেতু আমরা ধরে নিলাম p পরিমিত বিন্যাস মেনে চলবে, তাহলে এই লেখা অনুসারে p সত্যিকার হারের (P) ২ পরিমিত ব্যবধানের ($\sigma$) মধ্যে থাকবে। ২ পরমিত ব্যবধানে থাকবে বলার কারণ হলো ৫ শতাংশ এদিক-সেদিক মেনে নিয়েছি বলে। মাত্র এক শতাংশেরও কম এদিক-সেদিক মেনে নিতে চাইলে পরিমিত ব্যবধান নেব ৩ পর্যন্ত। যাই হোক, আপাতত আমরা জানলাম, আমাদের পরিমাপ $P \pm 2 \sigma$ এর মধ্যে থাকবে। ২০ বার পরিমাপ করলে একবার এর বিপরীত হয়ে যেতে পারে।

    আবার আমরা জানি, $\sigma _p = \sqrt{\frac{PQ}{n}}$।

    এখানে $Q = 100- P$ আর $n$ হলো আমাদের কাঙ্খিত স্যাম্পল সাইজ।

    এখন, আগের কথা অনুসারে $\sigma _p$ এর দ্বিগুণ সমান 5 হবে। যেহেতু আমরা 5 শতাংশ কম-বেশি হওয়া মেনে নিয়েছি।

    তাহলে,  $2 \sqrt{\frac{PQ}{n}} = 5$

    বা, $n = \frac{4PQ}{25}$

    এবার আমরা স্যাম্পল সাইজ বের করার একটা ফর্মুলা পেয়ে গেলাম। কিন্তু একটি সমস্যা রয়ে গেছে। স্যাম্পল সাইজ বের করতে গেলেই এই সমস্যার মুখে পড়তে হয়। এখানে $n$ বের করতে গেলে $P$ জানা দরকার হচ্ছে। অথচ $P$ জানার জন্যেই $n$ নিয়ে এত কিছু। ব্যাপারটা অনেকটা এই রকম। আপনি বাসার ছাদে বসে আছেন। নামতে হলে মই লাগবে। অথচ মইটা খাড়া করা নেই। তার মানে মই খাড়া করার জন্যে আপনাকে নামতে হবে। আহা! নামতে পারলে তো আর মইয়ের দরকারই হতো না। তাহলে উপায়?

    উপায় আছে। অন্য কাউকে দিয়ে যেমন মইটা দাঁড় করিয়ে নেওয়া যায়, তেমনি অন্য কোনো উপায়ে $P$ জানারও বুদ্ধি বের করতে হবে। আগের তথ্য থেকে বা অন্য কোনোভাবে আমাদেরকে $P$ সম্পর্কে একটা মোটামুটি অনুমান তৈরি করে নিতে হবে। যেমন আমরা ধরে নিতে পারি আরামবাগে ডায়াবেটিস রোগীদের হার ৩০ শতাংশ থেকে ৬০ শতাংশের বাইরে হবে না। সেক্ষেত্রে $P = 30$ বা $60$ হবে। আপনি যুক্তি দেখাতেই পারেন, $P$ যদি ৮০, ৯০ হয়ে যায় তাহলে তার দায় কে নেবে?

    আসলে সেটার দায় নেওয়া কঠিন কিছু না। উপরের সূত্রে খেয়াল করুন। P এর মান ৩০ ধরলে Q হবে ৭০। গুণফল হবে ২১০০। আর এদের মান যথাক্রমে ৮০ আর ২০ হলে গুণফল দাঁড়ায় ১৬০০, যা আগের চেয়েও ছোট। তার মানে $P$ আর $Q$ এর পার্থক্য যত বেশি হবে আমাদের তত ছোট স্যাম্পল লাগবে। তার মানে সবচেয়ে বড় স্যাম্পল লাগবে যদি $P$ আর $Q$ সমান হয়। মানে দুটোই ৫০। আর সেক্ষেত্রে $PQ$ হবে 2500।

    তাহলে স্যাম্পল সাইজ, $n = \frac{4 \times 2500}{25} = 400$

    তার মানে এক্ষেত্রে ৪০০ সাইজের স্যাম্পল নেওয়ায় যথেষ্ট। আর সত্যিকারের $P$ যদি ৩০ হয় (৭০ হলেও একই কথা) তাহলে লাগবে ৩৩৬ সাইজের স্যাম্পল। নিরাপদ থাকতে চাইলে ৪০০ নিয়ে ফেলাই যায়।

    আপাতত এই $n$ দিয়েই কাজ চালানো যায়। তবে সমগ্রক (সকল মানুষের সংখ্যা) যদি ৮,০০০ এর কম হয় তবে আগে বাদ দিয়ে রাখা FPC নিয়েও চিন্তা করা দরকার হবে। আর বাকি ক্ষেত্রে ৪০০ দিয়েই মোটামুটি ঠিকঠাক কাজ চলবে। বাকি অনুমানগুলো সঠিক না হলে কীভাবে কী করা লাগবে সেটা আমরা অন্য কোনো সময় দেখব, ইনশাআল্লাহ।

    সূত্র: Sampling Techniques (3rd edition) by William G. Cochran
    Category: articles

    Sunday, January 6, 2019

    হুম, আমরা নীচের চিত্রটিই আঁকতে চাই। এতে প্রয়োজন হবে R এর অন্যতম জনপ্রিয় প্যাকেজ ggplot2। হ্যাঁ, প্যাকেজ ছাড়াই আপনি এমন গ্রাফ আঁকতে পারেন। তবে দেখতে সেটা এতটা দৃষ্টিনন্দন নাও হতে পারে।

    R প্রোগ্রামিং প্যাকেজ ggplot2 এর কারসাজি 

    তাহলে প্যাকেজটি না থাকলে ইনস্টল করে নিন। library ফাংশন দিয়ে লোড করতেও ভুলবেন না কিন্তু!
    install.packages("ggplot2")
    library(ggplot2)

    বরাবরের মতোই আগে একটি ডেটা লাগবে। বানিয়ে নেই তাহলে। 
    x <- sample(10)
    y <- sample(10)
    z <- sample(10)

    তবে এটাকে ggplot2 পরিচ্ছন্ন (tidy) ডেটা বলতে রাজি না। তাহলে ডেটাকে পরিশুদ্ধ করে নেই। পরিচ্ছন্ন ডেটা সম্পর্কে আরও জানতে এই লিঙ্কটা ঘুরে আসুন। রেফারেন্সে থাকা লিঙ্কগুলোয়ও ঢুঁ মেরে আসতে পারেন। 
    যাই হোক, পরিচ্ছন্ন হবে এভাবে:
    dt <- data.frame(var=rep(c("x","y","z"), each=10), val=c(x,y,z),
                     crit=1:10)

    উল্লেখ্য, এটা আমি নিজের মতো করে বানিয়েছি। tidy করার ফর্মাল উপায়ের জন্যে tidy প্যাকেজে gather নামে একটা ফাংশন আছে। আপনার ইচ্ছা আপনি কীভাবে করবেন। নিয়ম মেনে করাই ভাল। যাই হোক, সামনে যাওয়া যাক। বড় কোড দেখে ঘাবড়াবেন না! কোডের শেষের তিন লাইনই অপশনাল। করলে ভালো, না করলে নাই। 

    ggplot(data=dt, aes(crit, val, color=var))+
      geom_line()+geom_point(size=2)+
      xlab("Criteria")+
      ylab("Value")+
      ggtitle("My title")

    আমরা পেয়ে গেলাম উপরের গ্রাফের মতো গ্রাফ। 

    চাইলে কাজটি আপনি ggplot2 ব্যবহার না করেও করতেই পারেন। এর আগে আমরা টাইম সিরিজ ডেটার জন্যে এমন গ্রাফ দেখেছিও। তবে এবার দেখব যে-কোনো রকম ডেটার জন্যে। 

    ধরে নিলাম আগের x, y, z চলক তিনটা স্টোর করা আছে। 

    এবার আগে তিনটা কালার বানিয়ে রেখে দেই। 
    col <- c("blue", "black", "green4")
    এবার একে একে তিনটা চলক প্লট করা:
    plot(x, col=col[1], pch=19, xlab="Some text", ylab="other text")
    lines(x, col=col[1])
    points(y, col=col[2], pch=15)
    lines(y, col=col[2])
    points(z, col=col[3], pch=18)
    lines(z, col=col[3])
    legend("topright", legend=c("x", "y", "z"), col=col, pch=c(19,15,18),
           ncol=3)

    পাওয়া গেল গ্রাফখানি
    বেইজ R দিয়ে মাল্টিপল লাইন প্লটিং। বড় করে দেখতে ক্লিক করুন এখানে
    এই কোডটিকে নানানভাবে কাস্টোমাইজ করে প্লট আরও সুন্দর করে নিতে পারেন। তবে আমার মতে ggplot-ই ভালো। নিজে নিজে সব করতে গেলেই ঝামেলা বাঁধে। আমার খুব প্রিয় একটা কথা হলো:
    Category: articles

    Thursday, November 15, 2018

    কাজটা করার অনেকগুলো উপায় আছে। সবচেয়ে ভালো উপায় হলো readxl প্যাকেজ ব্যবহার করা। তবে এমন যদি হয় যে শুধু অল্প কিছু ডেটা লাগবে, মানে অল্প কয়টি row আর কলাম, তাহলে? এক্ষেত্রে প্যাকেজ ব্যবহার করে করা বা ফাইলকে csv বানিয়ে কাজ করা বেশ সময়সাপেক্ষ। আমরা চাই ১ সেকেন্ডে করে ফেলতে।


    যেমন ধরুন, আমরা এ রকম একটা এক্সেল ডেটাকে R-এ নিয়ে আসতে চাই।

    এক্সেল ডেটা 

    প্রথমেই আমরা R-এ সামান্য একটু কাজ করে রাখি। নীচের ফাংশনটি এক্সিকিউট করাতে হবে।

    excelr <- function(header=TRUE,...) {
      read.table("clipboard",sep="\t",header=header,...)
    }

    এই ফাংশনটা কিন্তু বারবার রান করাতে হবে না। এক সেশনে বা Rstudio এর এক প্রোজেক্টে একবার রান করালেই হবে। আর অবশ্যই excelr এর বদলে R এর নিয়ম মেনে যে-কোনো নাম দিতে পারেন। নামটা মনে রাখলেই হবে।

    এবার এক্সেলে গিয়ে নির্দিষ্ট অংশটিকে হাইলাইট করে কপি করতে হবে। রাইট ক্লিক দিয়ে copy বা ctrl + C চাপুন। এটা তাহলে কম্পিউটারের ক্লিপবোর্ডে থাকবে।

    এবার R-এ এসে নীচের কোড রান করার। যতবার কপি করা দরকার হবে, শুধু এক্সেলে কপি করে এটা রান দিলেই কেল্লাফতে!

    new_data <- excelr()

    ব্যস! এক্সেলের ডেটাটুকু new_data নামে একটি ডেটাফ্রেইমে সেইভ হয়ে যাবে। তবে মনে রাখতে হবে, শুরুতে ফাংশনের নাম যেটা দিয়েছেন এখানেও সেটাই দিতে হবে।

    চাইলে Rstudio তে View() ফাংশন কাজে লাগিয়ে দেখে নিতে পারেন কী পেলেন!

    নিশ্চয়ই ভাবছেন, তাহলে উল্টো কাজটা কীভাবে হবে? R থেকে এক্সেলে কীভাবে নেব? এটাও আগেরটার মতোই সহজ কাজ। মনে করুন, আপনি my_data অংশটিকে এক্সেলে নিয়ে যেতে চান। তাহলে আগের মতোই আগে একটা ফাংশন রান করে রাখুন।

    write.excel <- function(x,row.names=FALSE,col.names=TRUE,...) {  write.table(x,"clipboard",sep="\t",row.names=row.names,col.names=col.names,...)
    }
    এবার রান করুন
    write.excel(dat)

    এবার এক্সেলে গিয়ে Ctrl+V চাপুন। বা মাউসে রাইট ক্লিক করে paste অপশনে ক্লিক করুন। আবার চাইলে এটাকে সরাসরি ওয়ার্ড ফাইলেও পেস্ট করতে পারেন।

     সূত্র
    ১। R-Bloggers
    Category: articles

    Saturday, August 4, 2018

    মনে করুন, এমন একটি জরিপ চালানো হলো, যেখানে মানুষের আয়, বয়স, শিক্ষাগত যোগ্যতা, লিঙ্গ, ধর্ম ইত্যাদি অনেকগুলো চলক (variable) নিয়ে তথ্য সংগ্রহ করা হল। আরও ধরা যাক, কাজটি করা হলো অনেকগুলো আলাদা আলাদা সময়ের জন্য। এভাবে পাওয়া ডেটাকেই আমরা বলব প্যানেল ডেটা। অর্থাৎ, যেখানে অনেকগুলো আলাদা আলাদা চলক সম্পর্কে আলাদা আলাদা সময়ের বিচারে তথ্য নেওয়া হবে সেটাই হবে প্যানেল ডেটা (panel data)।

    প্যানেল ডেটার একটি উদাহরণ দেখুন:
    \begin{array}{|c|c|c|c|c|}
    \hline
    person & year & income& age & gender\\ \hline
    1&2001& 24000&28 &male\\ \hline
    1& 2002& 24500 & 29&male\\ \hline
    1&2003 & 28000&30&male\\ \hline
    2&2001& 34000&35 &male\\ \hline
    2& 2002& 37500 &36&male\\ \hline
    2&2003 & 40000&37&male\\ \hline
    3&2001& 40000&40 &male\\ \hline
    3& 2002& 45500 &41&male\\ \hline
    3&2003 & 50000&42&male\\ \hline
    \end{array}
    প্যানেল ডেটার আরেক নাম লনজিটিউডিনাল (longitudinal) ডেটা।


    এবার তাহলে ক্রস-সেকশনাল (cross-sectional) ও টাইম সিরিজ (time series) ডেটা বুঝে নেওয়া যাক।

    একই চলকের তথ্য যখন বিভিন্ন সময়ে নেওয়া হবে তখন সেটাই হয়ে যাবে টাইম সিরিজ ডেটা। 

    টাইম সিরিজ ডেটা বা কালীন সারির একটি উদাহরণ:
    \begin{array}{|c|c|}
    \hline
    year & income\\ \hline
    2001& 24000\\ \hline
    2002& 24500\\ \hline
    2003& 25000\\ \hline
    2004& 27000\\ \hline
    2005& 28000\\ \hline
    2006& 30000\\ \hline
    2007& 33000\\ \hline
    2008& 33400\\ \hline
    2009& 35000\\ \hline
    2010& 45000\\ \hline
    2011& 46000\\ \hline
    2012& 46800\\ \hline
    2013& 50000\\ \hline
    2014& 55000\\ \hline
    2015& 67000\\ \hline
    \end{array}
    আবার একটি নির্দিষ্ট সময়ে যখন অনেকগুলো আলাদা চলকের তথ্য নেওয়া হবে, সেটা হয়ে যাবে ক্রস-সেকশনাল ডেটা। যেমন আমাদের প্রথম টেবিলে আমরা যদি প্রত্যেক person এর জন্য শুধু ২০০১ সালের ডেটা চিন্তা করি, তাহলে সেটা ক্রস-সেকশনাল ডেটা হবে। একইভাবে শুধু ২০০২ বা ২০০৩ চিন্তা করলেও একই কথা। কিন্তু একই সাথে একাধিক সময় বিবেচনায় নিলেই সেটা হয়ে যাবে প্যানেল ডেটা।

    একটি সহজ বিষয়। একদম উপরের টেবিলটার কথা ভাবুন। এখান থেকে একটি কলাম আর সাথে বছর- এই দুটি চলক নিয়ে নতুন একটি ডেটাসেট তৈরি করলেই সেটা হবে টাইম সিরিজ ডেটা। তবে একাধিক ব্যক্তির জন্য চিন্তা করলে, মানে একই বছর একাধিক বার নিলে সেক্ষেত্রে দুটো আলাদা টাইম সিরিজ ডেটা হবে।

    আবার ঐ টেবিলেই কলামের পরিবর্তে একটি সারি (row) নিয়ে নিলে (সাথে টেবিলের হেডার, যেখানে আছে চলকগুলোর নাম) পাওয়া যাবে ক্রস-সেকশনাল ডেটা। অনেকগুলো সারি নিলেও সমস্যা নেই, যদি না আলাদা আলাদা সময় চলে আসে।

    ক্রস-সেকশনাল ডেটার উদাহরণ
    \begin{array}{|c|c|c|c|c|c|c|}
    \hline
    person & year & income& age & gender&height (cm)&weight(kg)\\ \hline
    1&2001& 24000&28 &male&172&76\\ \hline
    2&2001& 34000&35 &male&171&81\\ \hline
    3&2001& 40000&40 &male&165&65\\ \hline
    \end{array}
    ডেটার উপর ভিত্তি করেই আবার অ্যানালাইসিসির নাম হয়। যেমন প্যানেল ডেটা নিয়ে কাজ করলে বলা হয় প্যানেল অ্যানালাইসিস। টাইম সিরিজ ডেটা নিয়ে টাইম সিরিজ অ্যানালাইসি। আবার দুটোর সমন্বয় নিয়ে হতে পারে ক্রস-সেকশনাল স্টাডি। আবার উল্টোটাও হয়। স্টাডি কেমন হবে সেটার উপর নির্ভ করে সংগ্রহ করা হয় ডেটা। প্রতিটি স্টাডিরই কিছু সুবিধা-অসুবিধা আছে।

    এ বিষয়ে বিস্তারিত জানতে নীচের বইগুলো সহায়ক হতে পারে:

    ১। Fitzmaurice, Garrett M.; Laird, Nan M.; Ware, James H. (2004). Applied Longitudinal Analysis. Hoboken: John Wiley & Sons. p. 2.
    ২। Epidemiology for the Uninitiated by Coggon, Rose, and Barker, Chapter 8, "Case-control and cross-sectional studies", BMJ (British Medical Journal) Publishing, 1997
    ৩। Baltagi, Badi H. (2008). Econometric Analysis of Panel Data (Fourth ed.). Chichester: John Wiley & Sons.
    ৪। Diggle, Peter J.; Heagerty, Patrick; Liang, Kung-Yee; Zeger, Scott L. (2002). Analysis of Longitudinal Data (2nd ed.). Oxford University Press. p. 2.
    Category: articles

    Saturday, July 28, 2018

    [স্টিফেন হকিং এর লেখা ও আব্দুল্যাহ আদিল মাহমুদ অনূদিত অ্যা ব্রিফার হিস্ট্রি অব টাইম বই অবলম্বনে]  

    বিজ্ঞানী হতে হলে জানতে হবে বিজ্ঞান বা বৈজ্ঞানিক তত্ত্ব কাকে বলে।


    সোজা কথায় বললে, থিওরি বা তত্ত্ব হচ্ছে একটি মডেল বা নমুনা, অথবা সেই নমুনার কোন সীমিত অংশবিশেষ এবং এমন এক গুচ্ছ নিয়ম বা সূত্র, যে সূত্রগুলো পর্যবেক্ষণে প্রাপ্ত তথ্যকে মডেলের মাধ্যমে ব্যাখ্যা করতে পারবে। এই তত্ত্ব থাকে আমাদের মস্তিষ্কে এবং এর অন্য রকম কোনো বাস্তবতা নেই (বাস্তবতার সংজ্ঞা যা হয় হোক)।

    একটি তত্ত্বকে ভালো বলা হয় যদি এর মধ্যে দুটো গুণ পাওয়া যায়। এক, অনেকগুলো পর্যবেক্ষণকে এটি অল্প কথায় সঠিকভাবে ব্যাখ্যা করতে পারবে। দুই, একে ভবিষ্যত পর্যবেক্ষণের ফলাফল সম্পর্কে সুনির্দিষ্ট পূর্বাভাস [১] দিতে হবে। অ্যারিস্টটল এমপেডোক্লেসের এই তত্ত্ব  মেনে নিয়েছিলেন যে জগতের সবকিছু মাটি, বায়ু, আগুন ও পানি- এই চারটি উপাদান দিয়ে তৈরি। তত্ত্বটি যথেষ্ট সরল ছিল, কিন্তু এটি কোনো সুনির্দিষ্ট পূর্বাভাস দিতে পারেনি। অন্য দিকে, নিউটনের মহাকর্ষ তত্ত্বটি উপস্থাপন করা হয় আরো সরল ভাবে। এই তত্ত্বে বস্তুরা একে অপরকে তাদের ভরের সমানুপাতিক ও তাদের মধ্যবর্তী দূররত্বের বর্গের ব্যস্তানুপাতিক বলে আকর্ষণ করে। তত্ত্বটি দেখতে সরল হলেও এটি অনেক নিখুঁতভাবে সূর্য, চন্দ্র এবং গ্রহদের গতির পূর্বাভাস দিতে পারে।

    যে কোনো ভৌত তত্ত্বই (physical theory)এই অর্থে অস্থায়ী যে এটি শুধুই একটি অনুমান। একে কখোনই পুরোপুরি প্রমাণ করা যাবে না। পরীক্ষার ফলাফলের সাথে হাজারবার মিলে গেলেও আপনি কখোনই নিশ্চিত করে বলতে পারবেন না এটি পরের বার বিপরীত ফলাফল দেবে না। উল্টো দিকে একটি তত্ত্বকে ভুল বলার জন্যে এর বিপক্ষে একটি মাত্র পর্যবেক্ষণই যথেষ্ট। বিজ্ঞানের দার্শনিক কার্ল পপার যেমন জোর দিয়ে বলেছেন,
    একটি ভালো তত্ত্বের বৈশিষ্ট্য হচ্ছে, এতে এমন অনেকগুলো পূর্বাভাস থাকবে যাদেরকে পর্যবেক্ষণের মাধ্যমে ভুল বা মিথ্যা প্রমাণ করার সুযোগ থাকবে। 

    যখনি নতুন কোনো পরীক্ষার সাথে এর পূর্বাভাস মিলে যাবে, তত্ত্বটি বেঁচে যাবে। কিন্তু কখনো নতুন কোনো পর্যবেক্ষণ এর সাথে না মিললে আমাদেরকে তত্ত্বটিকে পরিত্যাগ বা সংস্কার করতে হবে।

    বাস্তবে দেখা যায় নতুন তত্ত্ব আসলে আগের তত্ত্বেরই পরিবর্ধন মাত্র। উদাহরণ হিসেবে বলা যায় বুধ গ্রহের গতির কথা। নিউটনের মহাকর্ষ তত্ত্বের পূর্বাভাসের সাথে এর গতির সামান্য ভিন্নতা দেখা দেয়। আইনস্টাইনের সার্বিক আপেক্ষিক তত্ত্ব নিউটনের তত্ত্বের চেয়ে কিছুটা ভিন্ন অনুমান প্রদান করে, যা পর্যবেক্ষণের সাথে ঠিক ঠিক মিলে যায়। নিউটনের তত্ত্বের জায়গায় নতুন এই তত্ত্বের জায়গা করে নিতে এটি গুরুত্বপূর্ণ ভূমিকা রাখে। তবু এখনও আমরা বাস্তবে নিউটনের তত্ত্বই বেশি ব্যবহার করি, কারণ আমাদের দৈনন্দিন জীবনের প্রয়োজনীয় ক্ষেত্রে দুটো থিওরির পার্থক্য সামান্য। নিউটনের তত্ত্বের আরেকটি সুবিধা হল এটি আইনস্টাইনের সূত্রের চেয়ে অনেক সরল।

    বিজ্ঞানের চূড়ান্ত লক্ষ্য হচ্ছে এমন একটি তত্ত্ব প্রদান করা,  যা সমগ্র মহাবিশ্বকে ব্যাখ্যা করতে পারবে। অবশ্য অধিকাংশ বিজ্ঞানীই বাস্তবে সমস্যাটিকে দুই ভাগে বিভক্ত করে কাজ করেন। প্রথমত, কিছু সূত্র আমাদেরকে বলছে যে সময়ের সাথে সাথে মহাবিশ্বের কীরূপ পরিবর্তন ঘটছে। (আমরা যদি কোনো একটি সময়ে মহাবিশ্বের অবস্থা জানি, এই ভৌত সূত্রগুলো আমাদের বলবে পরবর্তী কোনো সময়ে মহাবিশ্ব কী অবস্থায় থাকবে।) দ্বিতীয় প্রশ্নটি হল মহাবিশ্বের আদি অবস্থা নিয়ে। কেউ কেউ মনে করেন, বিজ্ঞানের উচিত শুধু প্রথম অংশটি নিয়ে কাজ করা। তাদের মতে, মহাবিশ্বের আদি অবস্থার বিষয়টি অধিবিদ্যা[২] বা ধর্মের আলোচ্য বিষয়। তাদের মতে, সর্বশক্তিমান ঈশ্বর মহাবিশ্বের সূচনা নিজের যেভাবে ইচ্ছা সেভাবেই করেছেন[৩]। তা হলেও হতেও পারে, কিন্তু সেক্ষেত্রে ঈশ্বর মহাবিশ্বকে কোনো অনির্দিষ্ট প্রক্রিয়াতেই বিবর্তিত হতে দিতেন। কিন্তু বাস্তবে দেখা যাচ্ছে তিনি একে কিছু নির্দিষ্ট নিয়মের অধীন করেছেন, যা কিছু সূত্র মেনে চলছে। কাজেই মহাবিশ্বের আদি অবস্থাও কিছু নিয়ম মেনে চলছিল মনে করাটাই যুক্তির দাবি।

    মহাবিশ্বের সবকিছুকে একই তত্ত্বে গেঁথে ফেলা কঠিন একটি কাজ। ফলে আমরা একে ভেঙে অনেকগুলো আংশিক তত্ত্ব তৈরি করি। এই আংশিক তত্ত্বদের প্রতিটি কিছু নির্দিষ্ট পর্যবেক্ষণের ব্যাখ্যা ও পূর্বাভাস দিতে পারে। এর আওতার বাইরের বিষয়গুলো সম্পর্কে এটি নীরব থাকে অথবা তাদেরকে কিছু সংখ্যা দ্বারা প্রকাশ করে। খুব সম্ভব, এটি একটি ভুল পদ্ধতি। যদি মৌলিক জায়গাটিতে মহাবিশ্বের সবকিছু অন্য সব কিছুর উপর নির্ভরশীল হয়, তাহলে এদেরকে আংশিকভাবে মূল্যায়ন করে পূর্ণাঙ্গ সমাধানে পৌঁছা সম্ভব নাও হতে পারে। তবুও, আমরা অতীতে কিন্তু এটাই করে এসেছি।

    উদাহরণ হিসেবে আবারও বলব নিউটনের মহাকর্ষ তত্ত্বের কথা। এটি বলছে, দুটো বস্তুর মধ্যে ক্রিয়াশীল মহাকর্ষ বল বস্তুদ্বয়ের একটিমাত্র নিজস্ব বৈশিষ্ট্যের উপর (ভর)নির্ভরশীল[৪]। বস্তু কী দিয়ে তৈরি তার উপর এই বল নির্ভর করে না। কাজেই গ্রহদের কক্ষপথের হিসাব বের করার জন্য এদের এবং সূর্যের গঠন ও উপাদানের জন্যে আমাদের আলাদা কোনো তত্ত্বের প্রয়োজন নেই।

    বর্তমানে মহাবিশ্বের ব্যাখ্যায় বিজ্ঞানীরা দুটি মৌলিক আংশিক তত্ত্ব কাজে লাগাচ্ছেন। এরা হল জেনারেল থিওরি অব রিলেটিভিটি বা সার্বিক আপেক্ষিক তত্ত্ব ও কোয়ান্টাম মেকানিক্স। এই দুটি তত্ত্ব বিংশ শতাব্দীর প্রথমার্ধের বুদ্ধির জগতের এক বিরাট অর্জন। সার্বিক আপেক্ষিক তত্ত্ব মহাকর্ষ বল ও মহাবিশ্বের বড় দৈর্ঘ্যের কাঠামোকে (Large scale structure) ব্যাখ্যা করে। মাত্র কয়েক মাইল থেকে শুরু করে অন্তত এক হাজার কোটি কোটি কোটি (১ এর পরে ২৪ টি শুন্য) মাইল তথা পর্যবেক্ষণযোগ্য মহাবিশ্বের আকারের সমপরিমাণ অংশ এই তত্ত্বের আওতায় আছে। অন্য দিকে কোয়ান্টাম মেকানিক্স কাজ করে এক ইঞ্চির এক লক্ষ কোটি ভাগের এক ভাগের মতো অত্যন্ত ক্ষুদ্র দৈর্ঘ্যের জগতে।

    পরমাণু থেকে মহাবিশ্ব। [বিংশ শতকের প্রথমার্ধ পর্যন্ত নিউটনীয় পদার্থবিদ্যার সূত্রগুলো কাজ করত শুধু দৈনন্দিন জীবনের ক্ষেত্রগুলোতে। এরপরে এসে পদার্থবিদ্যার পরিধি বিস্তৃত হয়ে পৌঁছায় মহাবিশ্বের ক্ষুদ্রতম থেকে বৃহত্তম চৌহদ্দি পর্যন্ত। ] 

    এই দুটি তত্ত্ব আবার একে অপরের বিরোধী- এদের দুটোই যে ঠিক হবে সেটি সম্ভব নয়। বর্তমানে পদার্থবিদ্যার একটি প্রধান লক্ষ্য হচ্ছে নতুন একটি তত্ত্ব প্রদান করা, যা এই দুটো তত্ত্বকে একীভূত করে কোয়ান্টাম গ্র্যাভিটি নামে কমন একটি তত্ত্বের জন্ম দেবে। এখনও এমন তত্ত্ব প্রস্তুত করতে হয়নি। হতে পারে, আমরা এখনও এর থেকে বহু দূরে আছি। কিন্তু এই তত্ত্বের কী কী বৈশিষ্ট্য থাকা উচিত তার অনেকগুলোই ইতোমধ্যে জানা সম্ভব হয়েছে।

    এখন আমরা যদি বিশ্বাস করি যে মহাবিশ্ব এলোমেলোভাবে নয় বরং চলছে কিছু নির্দিষ্ট নিয়ম মেনে, তাহলে এই আংশিক সূত্রগুলোকে অবশ্যই একটি পূর্ণাংগ একীভূত তত্ত্বে রূপদান করতে হবে, যা ব্যাখ্যা দেবে মহাবিশ্বের সব কিছুর। কিন্তু এরকম একটি একীভূত তত্ত্বের সন্ধানে নামলে একটি সঙ্কটের মুখে পড়তে হয়। ওপরে উল্লিখিত বিজ্ঞানের এই চিন্তা- ভাবনাগুলোতে ধরে নেওয়া হচ্ছে যে আমরা বুদ্ধিমান জীব, যারা স্বাধীনভাবে মহাবিশ্বকে দেখছি ও তা থেকে সিদ্ধান্ত নিচ্ছি। যদি এটা সঠিক হয়ে থাকে, তাহলে আমরা উন্নতি করতে করতে একদিন মহাবিশ্বের কার্যকরী নিয়মগুলোর কাছাকাছি পৌঁছতে পারব বলে মনে করা খুবই স্বাভাবিক।

    অনুবাদকের নোটঃ
    ১। যেমন আইনস্টাইনের জেনারেল থিওরি অব রিলেটিভিটি বা সার্বিক আপেক্ষিক তত্ত্ব। ১০০ বছর আগে এর মহাকর্ষ তরঙ্গের পূর্বাভাস ২০১৬ এসে প্রমাণিত হয়। ফলে এটি ভালো তত্ত্ব হিসেবে আরো জোরালো স্বীকৃতি লাভ করে।
    ২। অধিবিদ্যা (Metaphysics) হল দর্শনের একটি শাখা। অন্য অনেক কিছুর মতো এরও জনক এরিস্টটল। বিশ্বের অস্তিত্ব, আমাদের অস্তিত্ব, সত্যের ধারণা, বস্তুর গুণাবলী, সময়, স্থান, সম্ভাবনা ইত্যাদি এর আলোচ্য বিষয়।
    ৩। অর্থ্যাৎ,তাদের মতে নির্দিষ্ট কোনো সূত্র প্রয়োগ করে মহাবিশ্ব সৃষ্টি করা হয়নি, তাই সেই আদি অবস্থার ব্যাখ্যা দেবার মত কোনো নির্দিষ্ট সূত্রের ব্যাখ্যা খোঁজা অনর্থক।
    ৪। মহাকর্ষ বল বস্তুদের দূরত্বের উপরও নির্ভরশীল- এটা ঠিক, কিন্তু দূরত্বতো আর বস্তুর নিজস্ব কোনো বৈশিষ্ট্য নয়।
    ৫। কারণ আমরাওতো মহাবিশ্বেরই একটি অংশ।
    Category: articles

    Thursday, July 26, 2018

    একটি উদাহরণ চিন্তা করি। আমরা দেহের ওজোনের সাথে উচ্চতার সম্পর্ক দেখতে চাই। উচ্চতার উপর ওজোনের (ভর) প্রভাব কতটা সেটা জানতে চাই। ব্যাপারটার যৌক্তিকতা নিয়ে প্রশ্ন তোলা যেতেই পারে। আপাতত আমাদের উদ্দেশ্য রিগ্রেশন লাইন আঁকা বলে সে বিতর্ক তোলা থাকল।

    তাহলে শুরুতেই আমরা গ্রাফের মাধ্যমে দুটো চলকের সম্পর্ক দেখব। ধরা যাক আমাদের কাছে নীচের ডেটা আছে।

    আরও পড়ুন
    R প্রোগ্রামিং: কীভাবে ইনস্টল ও ব্যবহার করবেন?

    height = c(176, 154, 138, 196, 132, 176, 181, 169, 150, 175)
    bodymass = c(82, 49, 53, 112, 47, 69, 77, 71, 62, 78) 

    এবার এ দুটো নিয়ে একটি Scatter plot বা বিক্ষেপণ চিত্র আঁকা যাক।
    plot(bodymass, height)

    প্লটটিকে চাইলে আরেকটু স্টাইলিশ করে নেওয়া যায়। 
     plot(bodymass, height, pch=19, col="blue", xlab="Body Mass (kg)",
         ylab="Height (cm)", main="Bodymass vs Height")

    এগুলোর মধ্যে কোন argument কেন ব্যবহার করা হল জানতে হেল্প সেকশন দেখতে পারেন। 
    ?plot

    এবার আমরা কাঙ্খিত রিগ্রেশন লাইন আঁকব। আপাতত আমরা লিনিয়ার রিগ্রেশন লাইন নিয়ে কাজ করছি। 

    আরও পড়ুন

    এক্ষেত্রে আমরা ব্যবহার করছি abline() ফাংশন। এ ফাংশনটি দিয়ে প্লটে অনুভূমিক (horizontal) বা উলম্ব (vertical) রেখা টানা হয়। যেমন উপরের প্লটে আমরা এভাবে বিভিন্ন রেখা টেনে বিন্দুগুলোর অবস্থান বুঝতে পারি। 
    abline(h=155
    abline(v=87))
    এখানে h ও v বোঝাচ্ছে যে যথাক্রমে x ও y অক্ষের কোন পয়েন্ট দুটিতে রেখা আঁকা হবে। তবে ফাংশনটির প্রথম দুটি আর্গুমেন্ট হলো a ও b। এগুলো হলো রেখার যথাক্রমে ইন্টারসেপ্ট ও ঢাল। lm(height ~ bodymass) কমান্ডের মাধ্যমে আমরা এই a ও b এর মানই পাব। 
    abline(lm(height ~ bodymass))
    ব্যস রেখা হয়ে গেল। চাইলে এটাকে কাস্টোমাইজও করতে পারেন। কালার দিতে পারেন। 

    আরও পড়ুন

    পুনশ্চ: 
    যারা বুঝতে চান উপরের রিগ্রেশন রেখা কীভাবে এল। 

    উপরের lm(height ~ bodymass) কমান্ড থেকে আমরা নীচের মডেলের মান পাব। 
    $$Y=\alpha + \beta X + \epsilon$$
    কমান্ডটির ফলাফল: 
    Call:
    lm(formula = height ~ bodymass)
    Coefficients:
    (Intercept)     bodymass
        98.0054       0.9528

    এখানে $\alpha$ এর পরিমাপকৃত মান (a) 98.0054 আর $\beta$ এর মান (b) 0.9528। এরা হলো যথাক্রমে রিগ্রেশন লাইনের ইন্টারসেপ্ট বা x অক্ষ থেকে কর্তিত অংশ ও রেখার ঢাল। ঢাল মানে হলো x এক একক বাড়লে y কত একক বাড়ে। তার মানে আমাদের মডেলে ভর এক কেজি বাড়ালে উচ্চতা গড়ে ০.৯৫২৮ সেমি. বাড়ে। 

    abline(lm(height ~ bodymass)) কমান্ডের মাধ্যমে এই দুটি মানই কাজে লেগেছে। উপরের প্লটের দিকে তাকালে খেয়াল করবেন, রেখাটিকে পেছন দিকে বাড়িয়ে দিলে বিন্দুতে গিয়ে 98.0054 বিন্দুতে গিয়ে x অক্ষকে ছেদ করবে। 
    Category: articles