আর এর সাথে বুটস্ট্র্যাপ ব্যবহার করে পি-ভ্যালু গণনা করা হচ্ছে


28

আমি আনুমানিক 2-পার্শ্বযুক্ত বুটস্ট্র্যাপযুক্ত পি-মানটি গণনা করতে "বুট" প্যাকেজটি ব্যবহার করি তবে ফলাফল টি.স্টেস্টের পি-মান থেকে খুব বেশি দূরে। আমার আর কোডটিতে আমি কী ভুল করেছি তা বুঝতে পারি না। কেউ দয়া করে আমাকে এর জন্য একটি ইঙ্গিত দিতে পারেন

time = c(14,18,11,13,18,17,21,9,16,17,14,15,
         12,12,14,13,6,18,14,16,10,7,15,10)
group=c(rep(1:2, each=12))
sleep = data.frame(time, group)

require(boot)
diff = function(d1,i){
    d = d1[i,]
    Mean= tapply(X=d$time, INDEX=d$group, mean)
    Diff = Mean[1]-Mean[2]
    Diff
}

set.seed(1234)
b3 = boot(data = sleep, statistic = diff, R = 5000, strata=sleep$group)

pvalue = mean(abs(b3$t) > abs(b3$t0))
pvalue 

2-পার্শ্বযুক্ত বুটস্ট্র্যাপযুক্ত পি-মান (মূল্য) = 0.4804 তবে টিস্টেস্টের 2-পার্শ্বযুক্ত পি-মান 0.04342। উভয় পি-মানগুলি প্রায় 11 বারের পার্থক্য। কীভাবে এটি ঘটতে পারে?


b3 $ t0 এ দুটি প্রবেশ কীভাবে আসে?
শি'য়ান

1
এটি একটি নাম!
এলভিস

2
আপনি একটি ভ্যালু ভুল করে গণনা করছেন । ডকুমেন্টেশন বলছেন যে পর্যবেক্ষিত পরিসংখ্যাত, না স্বরলিপি সুপারিশ করবে হিসাবে নাল বন্টন করা হয়। শূন্যের নীচে ডিস্ট-এন স্যাম্পলিংয়ের একটি অনুমান নিয়ে আসতে হবে। আরও তথ্যের জন্য আমার উত্তর দেখুন। পক্ষপাতহীন অনির্ধারিত পরীক্ষার জন্য চেষ্টা করুন । টি 0pt0mean(abs(b3$t0) < abs(b3$t-mean(b3$t)))
অ্যাডামো

উত্তর:


31

আপনি পর্যবেক্ষণ করা ডেটার অভিজ্ঞতাগত বন্টনের অধীনে ডেটা উত্পন্ন করতে বুটস্ট্র্যাপ ব্যবহার করছেন। দুটি উপায়ের মধ্যে পার্থক্যের বিষয়ে একটি আস্থার ব্যবধান দেওয়ার জন্য এটি কার্যকর হতে পারে:

> quantile(b3$t,c(0.025,0.975))
     2.5%     97.5% 
0.4166667 5.5833333 

ভ্যালু পেতে আপনার নাল অনুমানের অধীনে ক্রম তৈরি করতে হবে। এটি যেমন করা যেতে পারে যেমন:p

diff2 = function(d1,i){
    d = d1; 
    d$group <- d$group[i];  # randomly re-assign groups
    Mean= tapply(X=d$time, INDEX=d$group, mean)
    Diff = Mean[1]-Mean[2]
    Diff
}

> set.seed(1234)
> b4 = boot(data = sleep, statistic = diff2, R = 5000)
> mean(abs(b4$t) > abs(b4$t0))
[1] 0.046

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

> R <- 10000; d <- sleep
> b5 <- numeric(R); for(i in 1:R) { 
+    d$group <- sample(d$group, length(d$group)); 
+    b5[i] <- mean(d$time[d$group==1])-mean(d$time[d$group==2]); 
+ }
> mean(abs(b5) > 3)
[1] 0.0372

5
এটি প্রযুক্তিগতভাবে পারমিটেশন পরীক্ষা, বুটস্ট্র্যাপের পি-মান নয়।
অ্যাডামো

@ অ্যাডামো আমি সম্মত হই যে এই উত্তরে যা উপস্থাপন করা হয়েছে তা হ'ল অনুমতি পরীক্ষা (এবং এর সামান্য পরিবর্তিত রূপ); এটি কারণ কারণ পুনঃনির্মাণের সময় গ্রুপগুলি পুল করা হয়। বিপরীতে, বুটস্ট্র্যাপ-ভিত্তিক পরীক্ষায়, প্রতিটি গ্রুপের মান একই গ্রুপের জন্য কেবলমাত্র ডেটা ব্যবহার করে নমুনা করা উচিত। এটি কীভাবে করবেন সে সম্পর্কে এখানে একটি উত্তর দেওয়া হয়েছে: stats.stackexchange.com/a/187630/28666
অ্যামিবা বলছেন মনিকাকে

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

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

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

25

এলভিসের উত্তর আদেশের উপর নির্ভর করে তবে আমার মতে এটি বুটস্ট্র্যাপের মূল পদ্ধতির সাথে কী ভুল তা পরিষ্কার করে দেয় না। আমি পুরোপুরি বুটস্ট্র্যাপের ভিত্তিতে একটি সমাধান আলোচনা করব discuss

আপনার মূল সিমুলেশনটির গুরুত্বপূর্ণ সমস্যাটি হ'ল বুটস্ট্র্যাপ সর্বদা আপনাকে পরীক্ষার পরিসংখ্যানের সত্য বিতরণ সরবরাহ করে। তবে, পি-ভ্যালু গণনা করার সময় আপনি পরীক্ষার পরিসংখ্যানের প্রাপ্ত মানটিকে তার বন্টন আন্ডার এইচ 0 এর সাথে তুলনা করতে হবে, অর্থাত সত্য বিতরণের সাথে নয়!

[আসুন এটি পরিষ্কার করা যাক। উদাহরণস্বরূপ, এটি জানা যায় যে ক্লাসিকাল টি-টেস্টের পরীক্ষার পরিসংখ্যান টিতে এইচ 0 এর অধীনে ধ্রুপদী "কেন্দ্রীয়" টি-বিতরণ এবং সাধারণভাবে একটি কেন্দ্রহীন বিতরণ রয়েছে। তবে সকলেই এই সত্যের সাথে পরিচিত যে টি এর পর্যবেক্ষণকৃত মানটি ক্লাসিকাল "কেন্দ্রীয়" টি-বিতরণের সাথে তুলনা করা হয়, অর্থাৎ টি এর সাথে তুলনা করার জন্য সত্য [ননসেন্টাল] টি-বিতরণ পাওয়ার চেষ্টা করে না]]

আপনার পি-মান 0.4804 এত বড়, কারণ পরীক্ষার পরিসংখ্যানের গড়ের [t] "পর্যবেক্ষণকৃত মান [1] -মান [2] বুটস্ট্র্যাপড নমুনা" টি "এর কেন্দ্রের খুব কাছে অবস্থিত। এটি প্রাকৃতিক এবং সাধারণত এটি সর্বদা তাই [অর্থাত্ H0 এর বৈধতা নির্বিশেষে], কারণ বুটস্ট্র্যাপড নমুনা "টি" মানে [1] -মান [2] এর প্রকৃত বিতরণকে অনুকরণ করে। তবে, উপরে উল্লিখিত হিসাবে [এবং এলভিস দ্বারাও], আপনার সত্যিকারের যা দরকার তা হ'ল গড়ন [1] -মান [2] এর অধীন এইচ 0 এর বিতরণ। এটা সুস্পষ্ট

1) এইচ 0 এর অধীনে গড়ের বিতরণ [1] -মান [2] প্রায় 0, কেন্দ্রিক হবে

2) এর আকার H0 এর বৈধতার উপর নির্ভর করে না।

এই দুটি পয়েন্ট সূচিত করে যে এইচ 0 এর অধীন গড় [1] -মান [2] এর বন্টন বুটস্ট্র্যাপযুক্ত নমুনা "টি" শিফটেড দ্বারা অনুকরণ করা যেতে পারে যাতে এটি 0 টি কেন্দ্রিক হয় R

b3.under.H0 <- b3$t - mean(b3$t)

এবং সম্পর্কিত পি-মানটি হবে:

mean(abs(b3.under.H0) > abs(b3$t0))

যা আপনাকে 0.0232 এর একটি "খুব সুন্দর" মান দেয়। :-)

আমি নোট করি যে উপরে বর্ণিত পয়েন্ট "2)" কে পরীক্ষার পরিসংখ্যানগুলির "অনুবাদ সমতুল্যতা" বলা হয় এবং এটি সাধারণভাবে ধরে রাখতে হয় না! কিছু পরীক্ষার পরিসংখ্যানের জন্য, বুটস্ট্র্যাপড "টি" স্থানান্তর করা আপনাকে HO এর অধীনে পরীক্ষার পরিসংখ্যান বিতরণের কোনও বৈধ অনুমান সরবরাহ করে না! এই আলোচনাটি দেখুন এবং বিশেষত পি ডালগার্ডের জবাব দেখুন: http://tolstoy.newcastle.edu.au/R/e6/help/09/04/11096.html

আপনার পরীক্ষার সমস্যাটি পরীক্ষার পরিসংখ্যানগুলির একটি নিখুঁতভাবে প্রতিসামগ্রী বিতরণ করে, তবে মনে রাখবেন যে পরীক্ষার পরিসংখ্যানগুলির স্কুটেড বুটস্ট্র্যাপড বিতরণের ক্ষেত্রে TWO-SIDED পি-মানগুলি পেতে কিছু সমস্যা রয়েছে। আবার উপরের লিঙ্কটি পড়ুন।

[এবং অবশেষে, আমি আপনার পরিস্থিতিতে "খাঁটি" ক্রমশক্তি পরীক্ষা ব্যবহার করব; অর্থাৎ এলভিসের উত্তর দ্বিতীয়ার্ধ। :-)]


17

বুটস্ট্র্যাপ সিআই এবং পি-মানগুলি গণনা করার বিভিন্ন উপায় রয়েছে। মূল সমস্যাটি হ'ল বুটস্ট্র্যাপের পক্ষে নাল অনুমানের অধীনে ডেটা উত্পন্ন করা অসম্ভব। পারমিটেশন পরীক্ষা এটির একটি বাস্তব পুনরায় মডেলিং ভিত্তিক বিকল্প। সঠিক বুটস্ট্র্যাপ ব্যবহার করার জন্য আপনাকে পরীক্ষার পরিসংখ্যানগুলির নমুনা বিতরণ সম্পর্কে কিছু ধারণা তৈরি করতে হবে।

পরীক্ষার অদম্যতার অভাব সম্পর্কে একটি মন্তব্য: 95% সিআই খুঁজে পাওয়া সম্ভব নয় নালটি এখনও এপি> 0.05 বা বিপরীতে অন্তর্ভুক্ত নয়। ভাল চুক্তি আছে করার জন্য, নাল অধীনে বুটস্ট্র্যাপ নমুনার হিসাব আবশ্যক যেমন আফিম হতে বদলে । এর অর্থ হ'ল বুটস্ট্র্যাপের নমুনায় ঘনত্বটি যদি ডানদিকে স্কু করা হয় তবে ঘনত্বটি নালার দিকে বামে রাখতে হবে। অ-বিশ্লেষণাত্মক (যেমন: পুনরায় মডেলিং) সমাধানগুলি যেমন সিআইয়ের জন্য পরীক্ষাগুলি উল্টানো সম্ভব নয়।β0=β^β^β0=β^β^

সাধারণ বুটস্ট্র্যাপ

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

পারসেন্টাইল বুটস্ট্র্যাপ

আর একটি পদ্ধতি হ'ল পারসেন্টাইল বুটস্ট্র্যাপ যা আমি মনে করি আমাদের অধিকাংশই বিবেচনা করে যখন আমরা বুটস্ট্র্যাপের কথা বলি। এখানে, প্যারামিটারের বুটস্ট্র্যাপড বিতরণ বিকল্প অনুমানের অধীনে নমুনার একটি অভিজ্ঞতা অভিজ্ঞতা বিতরণ করে। এই বিতরণ সম্ভবত অস্বাভাবিক হতে পারে। এমিরিকাল কোয়ান্টাইলগুলি গ্রহণ করে একটি 95% সিআই সহজেই গণনা করা হয়। তবে একটি গুরুত্বপূর্ণ অনুমান হ'ল এই জাতীয় বিতরণটি মূলত । এর অর্থ হ'ল যদি অন্তর্নিহিত প্যারামিটারটি পরিবর্তন হয় তবে বিতরণের আকারটি কেবল ধ্রুবক দ্বারা স্থানান্তরিত হয় এবং স্কেল অগত্যা পরিবর্তন হয় না। এটি একটি দৃ ass় ধারণা! যদি এটি ধারণ করে, আপনি "নাল অনুমানের অধীনে পরিসংখ্যান বিতরণ" (ডিএসএনএইচ বাF0) অনুমানগুলি থেকে বুটস্ট্র্যাপ বিতরণকে বিয়োগ করে, তারপরে ব্যবহার করে ডিএসএনএইচ-র শতাংশটি আপনার অনুমানের তুলনায় "আরও চরম"2×min(F0(β^),1F0(β^))

স্টুটেজড বুটস্ট্র্যাপ

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

প্রোগ্রামিং উদাহরণ

উদাহরণ হিসাবে, আমি cityবুটস্ট্র্যাপ প্যাকেজে ডেটা ব্যবহার করব । বুটস্ট্র্যাপের আত্মবিশ্বাসের অন্তরগুলি এই কোড দিয়ে গণনা করা হয়:

ratio <- function(d, w) sum(d$x * w)/sum(d$u * w)
city.boot <- boot(city, ratio, R = 999, stype = "w", sim = "ordinary")
boot.ci(city.boot, conf = c(0.90, 0.95),
        type = c("norm", "basic", "perc", "bca"))

এবং এই আউটপুট উত্পাদন:

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 999 bootstrap replicates

CALL : 
boot.ci(boot.out = city.boot, conf = c(0.9, 0.95), type = c("norm", 
    "basic", "perc", "bca"))

Intervals : 
Level      Normal              Basic         
90%   ( 1.111,  1.837 )   ( 1.030,  1.750 )   
95%   ( 1.042,  1.906 )   ( 0.895,  1.790 )  

Level     Percentile            BCa          
90%   ( 1.291,  2.011 )   ( 1.292,  2.023 )   
95%   ( 1.251,  2.146 )   ( 1.255,  2.155 )  
Calculations and Intervals on Original Scale

সাধারণ বুটস্ট্র্যাপের 95% সিআই গণনা করে প্রাপ্ত হয়:

with(city.boot, 2*t0 - mean(t) + qnorm(c(0.025, 0.975)) %o% sqrt(var(t)[1,1]))

পি-মানটি এইভাবে পাওয়া যায়:

> with(city.boot, pnorm(abs((2*t0 - mean(t) - 1) / sqrt(var(t)[1,1])), lower.tail=F)*2)
[1] 0.0315

যা সম্মত হয় যে 95% সাধারণ সিআই 1 এর নাল অনুপাতের মান অন্তর্ভুক্ত করে না।

পারসেন্টাইল সিআই প্রাপ্ত হয় (সম্পর্কের পদ্ধতির কারণে কিছু পার্থক্য সহ):

quantile(city.boot$t, c(0.025, 0.975))

এবং পারসেন্টাইল বুটস্ট্র্যাপের জন্য পি-মানটি হ'ল:

cvs <- quantile(city.boot$t0 - city.boot$t + 1, c(0.025, 0.975))
mean(city.boot$t > cvs[1] & city.boot$t < cvs[2])

0.035 এর এপি দেয় যা মান থেকে 1 বাদ দেওয়ার ক্ষেত্রে আত্মবিশ্বাসের ব্যবধানের সাথেও সম্মত হয়। আমরা সাধারণভাবে এটি পর্যবেক্ষণ করতে পারি না, যদিও পারসেন্টাইল সিআইয়ের প্রস্থটি সাধারণ সিআইয়ের প্রায় প্রায় বিস্তৃত এবং পারসেন্টাইল সিআই নল থেকে আরও বেশি যে পারসেন্টাইল সিআইকে নিম্ন পি-মান প্রদান করা উচিত। এটি হ'ল পারসেন্টাইল পদ্ধতির সিআইয়ের অন্তর্গত নমুনা বিতরণের আকারটি স্বাভাবিক নয়।


এটি @ অ্যাডামো একটি খুব আকর্ষণীয় উত্তর, তবে আপনি কিছু উদাহরণ দিতে পারেন? আর-তে, আপনি ফাংশনটি ব্যবহার করতে পারেন boot.ciএবং স্টুডেন্টাইজড সিআই (আপনি বিসিএ সিআইও চয়ন করতে পারেন) চয়ন করতে "টাইপ" যুক্ত করতে পারেন। তবে, আপনি কীভাবে পি-মানগুলি গণনা করতে পারেন? আপনি কি অনুমান বা পরীক্ষার পরিসংখ্যান ব্যবহার করছেন? আমার একটি অনুরূপ প্রশ্ন ছিল যা উত্তরটি প্রশংসিত হবে।
কেভিন জারকা

1
স্ট্যান্ডিনেটেড বুটস্ট্র্যাপের সুবিধাগুলির সুস্পষ্ট ব্যাখ্যার জন্য +1।
এরিক_কর্নফিল্ড

@ কেভিনআউনেট আমি বুট প্যাকেজের সিআইএস থেকে পি-মানগুলি প্রতিলিপি দেওয়ার দুটি উদাহরণ দিয়েছি। এটা কি সাহায্য করে?
আদমো

1
আপনাকে ধন্যবাদ অ্যাডামো, যা সত্যিই সাহায্য করে! আপনি স্ট্যান্ডিনেটেড বুটস্ট্র্যাপের জন্য একটি শেষ উদাহরণ সরবরাহ করতে পারেন?
কেভিন জারকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.