এটা আসলে সাধারণ লিনিয়ার মডেলগুলিতে (যেমন, এক- বা দ্বিমুখী আনোভা-জাতীয় মডেলগুলি) হিটারোসেসডাস্টিক্যালিটি পরিচালনা করা খুব কঠিন নয় difficult
আনোভা দৃ Rob়তা
প্রথমত, যেমন অন্যদের মন্তব্য রয়েছে, আনোভা সমান বৈকল্পিকগুলির ধারণা থেকে বিচ্যুত হওয়ার জন্য আশ্চর্যজনকভাবে শক্তিশালী, বিশেষত যদি আপনার প্রায় ভারসাম্যপূর্ণ ডেটা থাকে (প্রতিটি গ্রুপে সমান পর্যবেক্ষণের সংখ্যা)। অন্যদিকে সমান বৈকল্পিকের প্রাথমিক পরীক্ষাগুলি হয় না (যদিও পাঠ্যপুস্তকগুলিতে সাধারণত পড়াশুনা করা এফ- টেষ্টের চেয়ে লেভেনের পরীক্ষা অনেক ভাল )। জর্জ বক্স যেমন লিখেছেন:
বৈকল্পিক ক্ষেত্রে প্রাথমিক পরীক্ষা করা সমুদ্রের নৌকায় বন্দরের ছেড়ে যাওয়ার জন্য পরিস্থিতি পর্যাপ্ত পরিমাণে শান্ত কিনা তা অনুসন্ধান করার জন্য একটি রোয়িং নৌকায় সমুদ্রে নামার মতো!
যদিও এনোভা খুব শক্তিশালী, কারণ হিটারোসেসড্যাটিকটি বিবেচনায় নেওয়া খুব সহজ, এটি না করার খুব কম কারণ আছে।
নন-প্যারামেট্রিক পরীক্ষা
যদি আপনি প্রকৃত অর্থে পার্থক্যে আগ্রহী হন , তবে প্যারামিমেট্রিকবিহীন পরীক্ষাগুলি (উদাহরণস্বরূপ, ক্রুসকল – ওয়ালিস পরীক্ষা) আসলেই কোনও কাজে আসে না। তারা দলের মধ্যে পার্থক্য পরীক্ষা করে, কিন্তু তারা তা করে না মানে সাধারণ পরীক্ষা পার্থক্য হবে।
উদাহরণ ডেটা
আসুন ডেটাগুলির একটি সাধারণ উদাহরণ তৈরি করা যাক যেখানে কেউ আনোভা ব্যবহার করতে চান তবে যেখানে সমান পরিবর্তনের অনুমানটি সত্য নয়।
set.seed(1232)
pop = data.frame(group=c("A","B","C"),
mean=c(1,2,5),
sd=c(1,3,4))
d = do.call(rbind, rep(list(pop),13))
d$x = rnorm(nrow(d), d$mean, d$sd)
আমাদের দুটি গ্রুপ রয়েছে, উভয় মাধ্যম এবং বৈকল্পিক (স্পষ্ট) পার্থক্য সহ:
stripchart(x ~ group, data=d)
ANOVA
অবাক হওয়ার মতো বিষয় নয়, একটি সাধারণ আনোভা এটিকে বেশ ভালভাবে পরিচালনা করে:
> mod.aov = aov(x ~ group, data=d)
> summary(mod.aov)
Df Sum Sq Mean Sq F value Pr(>F)
group 2 199.4 99.69 13.01 5.6e-05 ***
Residuals 36 275.9 7.66
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
সুতরাং, কোন গ্রুপ পৃথক? আসুন টুকির এইচএসডি পদ্ধতিটি ব্যবহার করুন:
> TukeyHSD(mod.aov)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = x ~ group, data = d)
$group
diff lwr upr p adj
B-A 1.736692 -0.9173128 4.390698 0.2589215
C-A 5.422838 2.7688327 8.076843 0.0000447
C-B 3.686146 1.0321403 6.340151 0.0046867
একটি সঙ্গে পি 0.26 এর -value, আমরা গ্রুপ A এবং B. এমনকি যদি আমরা কোন পার্থক্য (মানে) দাবি করতে পারবেন না করা হয়নি যে অ্যাকাউন্টটি আমরা তিনটি তুলনা করেনি নিতে, আমরা একটি কম না পেতে হবে পি - মান ( পি = 0.12):
> summary.lm(mod.aov)
[…]
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.5098 0.7678 0.664 0.511
groupB 1.7367 1.0858 1.599 0.118
groupC 5.4228 1.0858 4.994 0.0000153 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.768 on 36 degrees of freedom
তা কেন? চক্রান্ত উপর ভিত্তি করে, সেখানে হয় একটি প্রশংসনীয় স্পষ্ট পার্থক্য। কারণটি হ'ল আনোভা প্রতিটি গোষ্ঠীতে সমান বৈকল্পিকতা গ্রহণ করে এবং ২. in in এর একটি সাধারণ স্ট্যান্ডার্ড বিচ্যুতিটি summary.lm
টেবিলের 'রেসিডুয়াল স্ট্যান্ডার্ড ত্রুটি হিসাবে দেখানো হয়' বা অনুমানের গড় বর্গক্ষেত্রের বর্গমূল গ্রহণ করে আপনি এটি পেতে পারেন (.6..66) আনোভা টেবিলে)।
তবে গ্রুপ এ এর একটি (জনসংখ্যা) স্ট্যান্ডার্ড বিচ্যুতি রয়েছে এবং এটি ২.77 ove এর অতিমাত্রায় পরিসংখ্যানগতভাবে গুরুত্বপূর্ণ ফল পাওয়া (অকারণে) কঠিন করে তোলে, যেমন আমাদের (খুব) কম শক্তি নিয়ে একটি পরীক্ষা রয়েছে।
অসম বৈকল্পিক সহ 'আনোভা'
সুতরাং, কীভাবে একটি উপযুক্ত মডেল ফিট করতে হবে, এমন একটি যা বৈকল্পিকগুলির মধ্যে পার্থক্য বিবেচনা করে? এটি আর এ সহজ:
> oneway.test(x ~ group, data=d, var.equal=FALSE)
One-way analysis of means (not assuming equal variances)
data: x and group
F = 12.7127, num df = 2.000, denom df = 19.055, p-value = 0.0003107
সুতরাং, আপনি যদি সমান বৈকল্পিকতা ধরে না রেখে আর-তে একটি সাধারণ একমুখী 'আনোভা' চালাতে চান তবে এই ফাংশনটি ব্যবহার করুন। এটি t.test()
অসম বৈকল্পিক সহ দুটি নমুনার জন্য মূলত (ওয়েলচ) একটি বর্ধিতাংশ ।
দুর্ভাগ্যবশত, এটা সাথে কাজ করে না TukeyHSD()
(অথবা অন্যান্য অধিকাংশ ফাংশন আপনি ব্যবহার aov
বস্তু), আমরা, তাই এমনকি যদি নিশ্চিত সেখানে হয় গ্রুপ পার্থক্য, আমরা জানি না যেখানে তারা হয়।
হেটেরোসেসটাস্টিটির মডেলিং
সর্বোত্তম সমাধান হ'ল রূপগুলি স্পষ্টভাবে মডেল করা। আর এটি খুব সহজ:
> library(nlme)
> mod.gls = gls(x ~ group, data=d,
weights=varIdent(form= ~ 1 | group))
> anova(mod.gls)
Denom. DF: 36
numDF F-value p-value
(Intercept) 1 16.57316 0.0002
group 2 13.15743 0.0001
এখনও অবশ্যই উল্লেখযোগ্য পার্থক্য। তবে এখন গোষ্ঠী A এবং B এর মধ্যে পার্থক্যগুলিও স্থিতিশীলভাবে তাত্পর্যপূর্ণ হয়ে উঠেছে ( পি = 0.025):
> summary(mod.gls)
Generalized least squares fit by REML
Model: x ~ group
[…]
Variance function:
Structure: Different standard
deviations per stratum
Formula: ~1 | group
Parameter estimates:
A B C
1.000000 2.444532 3.913382
Coefficients:
Value Std.Error t-value p-value
(Intercept) 0.509768 0.2816667 1.809829 0.0787
groupB 1.736692 0.7439273 2.334492 0.0253
groupC 5.422838 1.1376880 4.766542 0.0000
[…]
Residual standard error: 1.015564
Degrees of freedom: 39 total; 36 residual
সুতরাং একটি উপযুক্ত মডেল ব্যবহার সাহায্য করে! এছাড়াও নোট করুন যে আমরা (আপেক্ষিক) স্ট্যান্ডার্ড বিচ্যুতির অনুমান পাই get গ্রুপ এ এর জন্য অনুমিত স্ট্যান্ডার্ড বিচ্যুতি, ফলাফলগুলির নীচে পাওয়া যাবে, 1.02। গ্রুপ বি এর আনুমানিক স্ট্যান্ডার্ড বিচ্যুতি এর থেকে 2.44 গুণ বা 2.48 গুণ এবং গ্রুপ সি এর আনুমানিক মান বিচ্যুতি একইভাবে 3.97 ( intervals(mod.gls)
বি এবং সি গ্রুপের আপেক্ষিক স্ট্যান্ডার্ড বিচ্যুতির জন্য আত্মবিশ্বাসের অন্তর পেতে টাইপ )।
একাধিক পরীক্ষার জন্য সংশোধন করা হচ্ছে
তবে একাধিক পরীক্ষার জন্য আমাদের সত্যই সংশোধন করা উচিত। এটি 'মাল্টকম্প' লাইব্রেরিটি ব্যবহার করা সহজ। দুর্ভাগ্যক্রমে, এটি 'gls' অবজেক্টের জন্য অন্তর্নির্মিত সমর্থন করে না, তাই আমাদের প্রথমে কিছু সহায়ক ফাংশন যুক্ত করতে হবে:
model.matrix.gls <- function(object, ...)
model.matrix(terms(object), data = getData(object), ...)
model.frame.gls <- function(object, ...)
model.frame(formula(object), data = getData(object), ...)
terms.gls <- function(object, ...)
terms(model.frame(object),...)
এখন কাজ করা যাক:
> library(multcomp)
> mod.gls.mc = glht(mod.gls, linfct = mcp(group = "Tukey"))
> summary(mod.gls.mc)
[…]
Linear Hypotheses:
Estimate Std. Error z value Pr(>|z|)
B - A == 0 1.7367 0.7439 2.334 0.0480 *
C - A == 0 5.4228 1.1377 4.767 <0.001 ***
C - B == 0 3.6861 1.2996 2.836 0.0118 *
এখনও গ্রুপ এ এবং গ্রুপ বিয়ের মধ্যে পরিসংখ্যানগতভাবে গুরুত্বপূর্ণ পার্থক্য! Group এবং আমরা এমনকি গ্রুপের মধ্যে পার্থক্যের জন্য আত্মবিশ্বাসের অন্তর অন্তর পেতে পারি:
> confint(mod.gls.mc)
[…]
Linear Hypotheses:
Estimate lwr upr
B - A == 0 1.73669 0.01014 3.46324
C - A == 0 5.42284 2.78242 8.06325
C - B == 0 3.68615 0.66984 6.70245
আনুমানিক (ঠিক এখানে) সঠিক মডেল ব্যবহার করে আমরা এই ফলাফলগুলিতে বিশ্বাস রাখতে পারি!
নোট করুন যে এই সাধারণ উদাহরণের জন্য, গ্রুপ সি এর ডেটা সত্যই গ্রুপ এ এবং বি এর মধ্যে পার্থক্য সম্পর্কে কোনও তথ্য যুক্ত করে না, যেহেতু আমরা প্রতিটি গ্রুপের জন্য পৃথক উপায় এবং স্ট্যান্ডার্ড বিচ্যুতি উভয়কেই মডেল করি। আমরা কেবল একাধিক তুলনার জন্য সংশোধন করা টিয়ারসাইট টি- টেস্ট ব্যবহার করতে পারি:
> pairwise.t.test(d$x, d$group, pool.sd=FALSE)
Pairwise comparisons using t tests with non-pooled SD
data: d$x and d$group
A B
B 0.03301 -
C 0.00098 0.02032
P value adjustment method: holm
তবে আরও জটিল মডেলগুলির জন্য, উদাহরণস্বরূপ, দ্বি-মুখী মডেল বা অনেক ভবিষ্যদ্বাণীকারী সহ রৈখিক মডেলগুলির জন্য, জিএলএস (জেনারেলাইজড ন্যূনতম স্কোয়ারস) ব্যবহার করে এবং স্পষ্টতই ভেরিয়েন্স ফাংশনগুলির মডেলিং সেরা সমাধান।
এবং বৈকল্পিক ক্রিয়াটি প্রতিটি গ্রুপে কেবল আলাদা ধ্রুবক হওয়া উচিত নয়; আমরা এটির উপর কাঠামো চাপিয়ে দিতে পারি। উদাহরণস্বরূপ, আমরা প্রতিটি গ্রুপের গড়ের শক্তি হিসাবে প্রকরণটি মডেল করতে পারি (এবং এইভাবে কেবলমাত্র একটি প্যারামিটার, এক্সপোনেন্টটি অনুমান করা প্রয়োজন ), অথবা সম্ভবত মডেলের কোনও ভবিষ্যদ্বাণীকের লগারিদম হিসাবে। জিএলএস (এবং gls()
আর মধ্যে) এর মাধ্যমে এগুলি খুব সহজ ।
সাধারণীকরণের সর্বনিম্ন স্কোয়ারগুলি হ'ল আইএমএইচও হ'ল একটি খুব কম ব্যবহৃত স্ট্যাটিস্টিকাল মডেলিং কৌশল। মডেল অনুমানগুলি থেকে বিচ্যুতির বিষয়ে চিন্তা করার পরিবর্তে সেই বিচ্যুতির মডেল করুন !
R
, আমার উত্তরটি এখানে পড়তে আপনার পক্ষে উপকৃত হতে পারে: হেটেরোসেসটাস্টিক ডেটার জন্য একমুখী আনোভা বিকল্প , যা এই কয়েকটি বিষয় নিয়ে আলোচনা করে।