দুটি উপায়ের পার্থক্যের জন্য একটি পরীক্ষা করতে H0 এর অধীনে বুটস্ট্র্যাপ ব্যবহার করা: গ্রুপগুলির মধ্যে বা পুলের নমুনার মধ্যে প্রতিস্থাপন


18

ধরুন আমার কাছে দুটি স্বাধীন গ্রুপ সহ একটি ডেটা রয়েছে:

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 চারপাশে অনুসন্ধান করে, আমি সিভিতে খুব আকর্ষণীয় পোস্ট পেয়েছি যেখানে @ জন.স পোস্টের প্রশ্নে বুটস্ট্র্যাপের অস্বাভাবিক ফলাফলগুলি ব্যাখ্যা করেছে যেখানে লক্ষ্য ছিল দুটি উপায়ের তুলনা করা। তবে, সেই পোস্টে বুটস্ট্র্যাপের পূর্বে ডেটা সংশোধন করা হলে কীভাবে বুটস্ট্র্যাপ সঞ্চালন করা যায় তা কভার করা হয়নি। বুটস্ট্র্যাপের পূর্বে যেখানে ডেটা সংশোধন করা হয়েছে সেদিকে দৃষ্টি আকর্ষণ করুন:

  1. এইচ 0 বলেছে যে দুটি গ্রুপের মাধ্যম একই are
  2. এইচ 0 সত্য বলে ধরে রাখে যদি আমরা পুলের নমুনার মাধ্যম থেকে পৃথক পর্যবেক্ষণগুলি বিয়োগ করি

এই ক্ষেত্রে, ডেটা সংশোধন করার ফলে গোষ্ঠীগুলির অর্থ, এবং তাই এর পার্থক্যটি প্রভাবিত হওয়া উচিত, তবে (এবং এর মধ্যে) গ্রুপগুলির মধ্যে তারতম্য নয়।

  1. পরিবর্তিত ডেটা আরও বুটস্ট্র্যাপের ভিত্তিতে থাকবে, সাবধানে যে প্রতিটি গ্রুপের মধ্যে পৃথকভাবে নমুনা দেওয়া হয় ।
  2. জি 1 এবং জি 2 এর বুটস্ট্র্যাপযুক্ত গড়ের মধ্যে পার্থক্য গণনা করা হয় এবং গ্রুপগুলির মধ্যে পর্যবেক্ষণ (অ-পরিবর্তিত) পার্থক্যের সাথে তুলনা করা হয়।
  3. পুনরাবৃত্তির সংখ্যার দ্বারা বিভক্ত একের চেয়ে সমান বা ততোধিক চূড়ান্ত মানের অনুপাত পি মান দেবে।

এখানে কোডটি রয়েছে (বুটস্ট্র্যাপ 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 এর ব্যাখ্যার সাথে মোকাবেলা করতে হবে , তবে আমি কী বুঝতে পারি না ...


1
আকর্ষণীয় সমস্যা এবং সুন্দরভাবে উপস্থাপিত। নমুনার আকার খুব সামান্য হলে বুটস্ট্র্যাপে সমস্যা হয় কারণ আসল নমুনা জনসংখ্যাকে খুব ভালভাবে উপস্থাপন না করার সম্ভাবনা বেশি। বুটস্ট্র্যাপের কাজ করার জন্য স্যাম্পল আকারটি খুব বড় হতে হবে না। আপনার 6 এবং 22 আকারের নমুনা আকারগুলি খারাপ নাও হতে পারে। ইফ্রন (1983) এর একটি গবেষণাপত্রে বুটস্ট্র্যাপের সাথে 2 শ্রেণীর সাথে শ্রেণিবিন্যাসের সমস্যাগুলিতে রৈখিক বৈষম্যমূলক কার্যকারিতার জন্য ত্রুটি হারের অনুমানের জন্য সিভির একটি ফর্মের সাথে তুলনা করা হয়েছিল যেখানে প্রতিটি প্রশিক্ষণের নমুনার আকার 10 এর চেয়ে কম হয়। আমি এটি আমার বই বুটস্ট্র্যাপ পদ্ধতিতে আবরণ করি ( 2007)।
মাইকেল আর। চেরনিক

2
আমার বইতে বুটস্ট্র্যাপ কখন ব্যর্থ হয় সে সম্পর্কে একটি অধ্যায় রয়েছে এবং এতে ছোট নমুনা আকারের ইস্যু নিয়ে আলোচনা রয়েছে।
মাইকেল আর চেরনিক

একক লাইন আপনি # 2 পদ্ধতির আপনার বুটস্ট্র্যাপ মধ্যে ফিক্স প্রয়োজন এটি কাজ করা এই এগুলির মধ্যে একটি: H0 <- pool - mean (pool)। এটি দিয়ে প্রতিস্থাপন করা দরকার H0 <- c(g1.lengths - mean(g1.lengths), g2.lengths - mean(g2.lengths))। তারপরে আপনি 0.0023 এর পি-মান পাবেন। (জেনিট তার উত্তরে একই জিনিসটি ব্যাখ্যা করেছিল)) কোডের মধ্যে এটি একটি সহজ বাগ This সিসি @ মিশেল চের্নিকে
অ্যামিবা বলেছেন মনিকাকে

এই পদ্ধতিগুলি কি অতিরিক্ত শক্তি প্রয়োগ করা যায়? আমি বলতে চাইছি যে দলগুলি খুব বড়: পুল> 43 কে, তারা উল্লেখযোগ্য হিসাবে যে কোনও পার্থক্য সনাক্ত করতে পারে।
অ্যালেক্স আলভারেজ পেরেজ

উত্তর:


17

ইফ্রোনসের ১ chapter তম অধ্যায় এবং তিবশিরানীর বুটস্ট্র্যাপের পরিচিতি (পৃষ্ঠা 220-224) এর উপর ভিত্তি করে আমি এটি গ্রহণ করব । এর সংক্ষিপ্ততাটি হ'ল আপনার দ্বিতীয় বুটস্ট্র্যাপ অ্যালগরিদমটি ভুলভাবে কার্যকর করা হয়েছিল, তবে সাধারণ ধারণাটি সঠিক।

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

ক্লাসিকাল টি-টেস্ট, যা টি-স্ট্যাটিস্টিকের নমুনা বিতরণ সম্পর্কিত তথ্য পেতে বিশ্লেষণাত্মক ফলাফল ব্যবহার করে, নিম্নলিখিত ফলাফল দেয়:

x <- sleep$extra[sleep$group==1] y <- sleep$extra[sleep$group==2]
t.test(x,y)
t = -1.8608, df = 17.776, p-value = 0.07939

n1n2

# pooled sample, assumes equal variance
pooled <- c(x,y)
for (i in 1:10000){
  sample.index <- sample(c(1:length(pooled)),replace=TRUE)
  sample.x <- pooled[sample.index][1:length(x)]
  sample.y <- pooled[sample.index][-c(1:length(y))]
  boot.t[i] <- t.test(sample.x,sample.y)$statistic
}
p.pooled <-  (1 + sum(abs(boot.t) > abs(t.test(x,y)$statistic))) / (10000+1) 
p.pooled
[1] 0.07929207

H0H0H0z¯

x~i=xix¯+z¯
y~i=yiy¯+z¯

x~/y~z¯H0

# sample from H0 separately, no assumption about equal variance
xt <- x - mean(x) + mean(sleep$extra) #
yt <- y - mean(y) + mean(sleep$extra)

boot.t <- c(1:10000)
for (i in 1:10000){
  sample.x <- sample(xt,replace=TRUE)
  sample.y <- sample(yt,replace=TRUE)
  boot.t[i] <- t.test(sample.x,sample.y)$statistic
}
p.h0 <-  (1 + sum(abs(boot.t) > abs(t.test(x,y)$statistic))) / (10000+1)  # 
p.h0
[1] 0.08049195

এবার প্রায় তিনটি পদ্ধতির জন্য আমরা একই ধরণের পি-মানগুলি দিয়ে শেষ করেছি। আশাকরি এটা সাহায্য করবে!


1
আপনি কি দয়া করে দয়া করে ব্যাখ্যা করেন যে '1' নীচে কেন যুক্ত হয়েছিল: (1 + sum(abs(boot.t) > abs(t.test(x,y)$statistic))) / (10000+1)এর মতো কিছু না করে: mean(abs(boot.t) > abs(t.test(x,y)$statistic))আপনাকে ধন্যবাদ সময়।
টিজি_মন্টানা

+1 টি। এই বুটস্ট্র্যাপ-অন-সংশোধিত-ডেটা-থেকে-নমুনা-থেকে-এইচ 0 পদ্ধতির কোনও বিশেষ নাম রয়েছে?
অ্যামিবা বলেছেন মনিকাকে

3
@ টিজি_মন্টানা: সাধারণ ধারণাটি হ'ল আপনি বুটস্ট্র্যাপড টেস্টের পরিসংখ্যানের অনুপাত গণনা করুন (যেমন এর অধীন এইচ0), যা পর্যবেক্ষণ পরীক্ষার পরিসংখ্যানগুলির তুলনায় আরও চরম (উভয় দিকেই): পি-বনামএকটিতোমার দর্শন লগ করা=একাধিকবার {টি*>টিগুলি}বি, কোথায় বিবুটস্ট্র্যাপ সিমুলেশনের সংখ্যা। সংখ্যা সংক্রান্ত সমস্যাগুলি (0 এর) এড়াতে আমাকে অঙ্ক এবং ডিনোমিনেটর উভয়কেই 1 যুক্ত করতে শিখানো হয়েছিল এবং এক অর্থে আসল পর্যবেক্ষণকে সিমুলেশনগুলির মধ্যে একটি হিসাবে অন্তর্ভুক্ত করা হয়েছে। এখানে বিভাগ 7.1 দেখুন: arxiv.org/pdf/1411.5279.pdf
জেনিট

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

(+1) দুর্দান্ত উত্তর। আপনি কেন এই বিশদটি ব্যাখ্যা করতে পারেন যে "এই অ্যালগরিদম [কেন্দ্রীভূত না করেই তাদের তথ্য পুনরায় প্রতিস্থাপন] x এবং y এর বিতরণ অভিন্ন কিনা তা পরীক্ষা করে নিচ্ছে"? আমি বুঝতে পারি যে এই পুনর্নির্মাণ কৌশলটি বিতরণগুলি একইরূপে নিশ্চিত করে , তবে কেন এটি পরীক্ষা করে যে সেগুলি একই?
হাফ-পাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.