ধরুন আমার কাছে দুটি স্বাধীন গ্রুপ সহ একটি ডেটা রয়েছে:
g1.lengths <- c (112.64, 97.10, 84.18, 106.96, 98.42, 101.66)
g2.lengths <- c (84.44, 82.10, 83.26, 81.02, 81.86, 86.80,
85.84, 97.08, 79.64, 83.32, 91.04, 85.92,
73.52, 85.58, 97.70, 89.72, 88.92, 103.72,
105.02, 99.48, 89.50, 81.74)
group = rep (c ("g1", "g2"), c (length (g1.lengths), length (g2.lengths)))
lengths = data.frame( lengths = c(g1.lengths, g2.lengths), group)
এটা স্পষ্ট যে গ্রুপে প্রতি নমুনার আকার পক্ষপাতদুষ্ট যেখানে g1 এর 6 টি পর্যবেক্ষণ রয়েছে এবং g2 এর 22 টি রয়েছে । Criticalতিহ্যবাহী আনোভা পরামর্শ দেয় যে সমালোচনামূলক মান 0.05 (পি মান 0.0044 ) এ সেট করা থাকলে গ্রুপগুলির বিভিন্ন উপায় থাকে have
summary (aov (lengths~group, data = lengths))
প্রদত্ত যে আমার লক্ষ্যটি গড় পার্থক্যের তুলনা করা, এই জাতীয় ভারসাম্যহীন এবং ছোট নমুনা তথ্য traditionalতিহ্যগত পদ্ধতির সাথে অনুপযুক্ত ফলাফল দিতে পারে। অতএব, আমি ক্রমশক্তি পরীক্ষা এবং বুটস্ট্র্যাপ সম্পাদন করতে চাই।
পারমিটেশন টেস্ট
নাল হাইপোথিসিস (H0) বলেছে যে গ্রুপের উপায়গুলি একই। ক্রমান্বয়ে পরীক্ষায় এই অনুমান একটি দলকে একটি নমুনায় পুল করে ন্যায়সঙ্গত হয়। এটি নিশ্চিত করে যে দুটি গ্রুপের নমুনাগুলি অভিন্ন বিতরণ থেকে আঁকা হয়েছিল। পুলযুক্ত ডেটা থেকে বার বার নমুনা (বা আরও স্পষ্টভাবে - রদবদল) দ্বারা, পর্যবেক্ষণগুলি নতুন উপায়ে নমুনাগুলিতে পুনরায় স্থানান্তরিত (বদলানো) হয় এবং পরীক্ষার পরিসংখ্যান গণনা করা হয়। এই এন বার সম্পাদন করা, এইচ 0 টি সত্য যেখানে অনুমানের অধীনে পরীক্ষার পরিসংখ্যানগুলির নমুনা বিতরণ দেবে। শেষে, এইচ 0 এর অধীনে, পি মান হ'ল সম্ভাবনা যা পরীক্ষার পরিসংখ্যানগুলি পর্যবেক্ষণকৃত মানের সমান বা তার চেয়ে বেশি।
s.size.g1 <- length (g1.lengths)
s.size.g2 <- length (g2.lengths)
pool <- lengths$lengths
obs.diff.p <- mean (g1.lengths) - mean (g2.lengths)
iterations <- 10000
sampl.dist.p <- NULL
set.seed (5)
for (i in 1 : iterations) {
resample <- sample (c(1:length (pool)), length(pool))
g1.perm = pool[resample][1 : s.size.g1]
g2.perm = pool[resample][(s.size.g1+1) : length(pool)]
sampl.dist.p[i] = mean (g1.perm) - mean (g2.perm)
}
p.permute <- (sum (abs (sampl.dist.p) >= abs(obs.diff.p)) + 1)/ (iterations+1)
পারমিটেশন পরীক্ষার রিপোর্ট করা পি মান 0.0053 । ঠিক আছে, আমি যদি এটি সঠিকভাবে করে থাকি তবে ক্রমবিন্যাস এবং প্যারামেট্রিক আনোভা প্রায় অভিন্ন ফলাফল দেয়।
বুটস্ট্র্যাপ
প্রথমত, আমি সচেতন যে নমুনার আকারগুলি খুব ছোট হলে বুটস্ট্র্যাপ সাহায্য করতে পারে না। এই পোস্টটি দেখিয়েছিল যে এটি আরও খারাপ এবং বিভ্রান্তিকর হতে পারে । এছাড়াও, দ্বিতীয়টি হাইলাইট করেছে যে অনুমানের পরীক্ষাটি প্রধান লক্ষ্য যখন ক্রমশক্তি পরীক্ষা সাধারণত বুটস্ট্র্যাপের চেয়ে ভাল । তবুও, এই দুর্দান্ত পোস্টটি কম্পিউটার-নিবিড় পদ্ধতির মধ্যে গুরুত্বপূর্ণ পার্থক্যগুলিকে সম্বোধন করে। তবে, এখানে আমি একটি আলাদা প্রশ্ন উত্থাপন করতে চাই (বিশ্বাস করি)।
আমাকে প্রথমে সবচেয়ে সাধারণ বুটস্ট্র্যাপ পদ্ধতির পরিচয় করিয়ে দিন (বুটস্ট্র্যাপ 1: পুলযুক্ত নমুনার মধ্যে পুনরায় মডেলিং ):
s.size.g1 <- length (g1.lengths)
s.size.g2 <- length (g2.lengths)
pool <- lengths$lengths
obs.diff.b1 <- mean (g1.lengths) - mean (g2.lengths)
iterations <- 10000
sampl.dist.b1 <- NULL
set.seed (5)
for (i in 1 : iterations) {
resample <- sample (c(1:length (pool)), length(pool), replace = TRUE)
# "replace = TRUE" is the only difference between bootstrap and permutations
g1.perm = pool[resample][1 : s.size.g1]
g2.perm = pool[resample][(s.size.g1+1) : length(pool)]
sampl.dist.b1[i] = mean (g1.perm) - mean (g2.perm)
}
p.boot1 <- (sum (abs (sampl.dist.b1) >= obs.diff.b1) + 1)/ (iterations+1)
এইভাবে সম্পাদিত বুটস্ট্র্যাপের মান 0 0.005 । এমনকি এটি প্যারাম্যাট্রিক আনোভা এবং ক্রমশক্তি পরীক্ষার মতো যুক্তিসঙ্গত এবং প্রায় অনুরূপ বলে মনে হচ্ছে, এই বুটস্ট্র্যাপে এইচ 0 কে কেবলমাত্র যে ভিত্তিতে আমরা নমুনা পোল করেছি তার ভিত্তিতে ন্যায়সঙ্গত হওয়া কি উপযুক্ত? আমরা পরবর্তী নমুনাগুলি আঁটিয়েছি?
বিভিন্ন পদ্ধতির আমি বেশ কয়েকটি বৈজ্ঞানিক গবেষণাপত্রে খুঁজে পেয়েছি। বিশেষত, আমি দেখেছি যে গবেষকরা বুটস্ট্র্যাপের আগে এইচ 0 পূরণের জন্য ডেটা পরিবর্তন করে mod চারপাশে অনুসন্ধান করে, আমি সিভিতে খুব আকর্ষণীয় পোস্ট পেয়েছি যেখানে @ জন.স পোস্টের প্রশ্নে বুটস্ট্র্যাপের অস্বাভাবিক ফলাফলগুলি ব্যাখ্যা করেছে যেখানে লক্ষ্য ছিল দুটি উপায়ের তুলনা করা। তবে, সেই পোস্টে বুটস্ট্র্যাপের পূর্বে ডেটা সংশোধন করা হলে কীভাবে বুটস্ট্র্যাপ সঞ্চালন করা যায় তা কভার করা হয়নি। বুটস্ট্র্যাপের পূর্বে যেখানে ডেটা সংশোধন করা হয়েছে সেদিকে দৃষ্টি আকর্ষণ করুন:
- এইচ 0 বলেছে যে দুটি গ্রুপের মাধ্যম একই are
- এইচ 0 সত্য বলে ধরে রাখে যদি আমরা পুলের নমুনার মাধ্যম থেকে পৃথক পর্যবেক্ষণগুলি বিয়োগ করি
এই ক্ষেত্রে, ডেটা সংশোধন করার ফলে গোষ্ঠীগুলির অর্থ, এবং তাই এর পার্থক্যটি প্রভাবিত হওয়া উচিত, তবে (এবং এর মধ্যে) গ্রুপগুলির মধ্যে তারতম্য নয়।
- পরিবর্তিত ডেটা আরও বুটস্ট্র্যাপের ভিত্তিতে থাকবে, সাবধানে যে প্রতিটি গ্রুপের মধ্যে পৃথকভাবে নমুনা দেওয়া হয় ।
- জি 1 এবং জি 2 এর বুটস্ট্র্যাপযুক্ত গড়ের মধ্যে পার্থক্য গণনা করা হয় এবং গ্রুপগুলির মধ্যে পর্যবেক্ষণ (অ-পরিবর্তিত) পার্থক্যের সাথে তুলনা করা হয়।
- পুনরাবৃত্তির সংখ্যার দ্বারা বিভক্ত একের চেয়ে সমান বা ততোধিক চূড়ান্ত মানের অনুপাত পি মান দেবে।
এখানে কোডটি রয়েছে (বুটস্ট্র্যাপ 2: এইচ 0 টি সত্য বলে সংশোধন করার পরে গোষ্ঠীর মধ্যে পুনরায় মডেলিং করা ):
s.size.g1 <- length (g1.lengths)
s.size.g2 <- length (g2.lengths)
pool <- lengths$lengths
obs.diff.b2 <- mean (g1.lengths) - mean (g2.lengths)
# make H0 to be true (no difference between means of two groups)
H0 <- pool - mean (pool)
# g1 from H0
g1.H0 <- H0[1:s.size.g1]
# g2 from H0
g2.H0 <- H0[(s.size.g1+1):length(pool)]
iterations <- 10000
sampl.dist.b2 <- NULL
set.seed (5)
for (i in 1 : iterations) {
# Sample with replacement in g1
g1.boot = sample (g1.H0, replace = T)
# Sample with replacement in g2
g2.boot = sample (g2.H0, replace = T)
# bootstrapped difference
sampl.dist.b2[i] <- mean (g1.boot) - mean (g2.boot)
}
p.boot2 <- (sum (abs (sampl.dist.b2) >= obs.diff.b2) + 1)/ (iterations+1)
এই জাতীয় পারফরম্যান্সযুক্ত বুটস্ট্র্যাপটি 0.514 এর পি মান দেবে যা পূর্ববর্তী পরীক্ষার তুলনায় দুর্দান্ত tremend আমি বিশ্বাস করি যে এটি @ jan.s এর ব্যাখ্যার সাথে মোকাবেলা করতে হবে , তবে আমি কী বুঝতে পারি না ...
H0 <- pool - mean (pool)
। এটি দিয়ে প্রতিস্থাপন করা দরকার H0 <- c(g1.lengths - mean(g1.lengths), g2.lengths - mean(g2.lengths))
। তারপরে আপনি 0.0023 এর পি-মান পাবেন। (জেনিট তার উত্তরে একই জিনিসটি ব্যাখ্যা করেছিল)) কোডের মধ্যে এটি একটি সহজ বাগ This সিসি @ মিশেল চের্নিকে