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