ভিন্ন ভিন্ন উপাত্তের ডেটাগুলির জন্য একমুখী আনোভা বিকল্প


36

শৈবাল বায়োমাসের তিনটি গোষ্ঠীর ( একজন , বি , সি ) ডেটা রয়েছে যার মধ্যে অসম নমুনার আকার রয়েছে ( এনএকজন=15 , এনবি=13 , এনসি=12 ) এবং আমি যদি এই গোষ্ঠীগুলি একই জনসংখ্যার থেকে থাকে তবে আমি তুলনা করতে চাই ।

একমুখী আনোভা অবশ্যই যাওয়ার উপায় হবে, তবে আমার ডেটাতে স্বাভাবিকতা পরীক্ষা করার পরে, হেটেরোসক্যাসেস্টিটি মূল বিষয়টি বলে মনে হয়। আমার কাঁচা তথ্য, কোনও রূপান্তর ছাড়াই, বৈকল্পিকের একটি অনুপাত তৈরি করেছে ( ) যা সমালোচনামূলক মান ( ) এর চেয়ে অনেক বেশি এবং তাই আমি একমুখী আনোভা সম্পাদন করতে পারি না ।এফ সি আর আই টি = 4.16এফসর্বোচ্চ=19.1এফRআমিটি=4.16

আমি আমার ডেটা স্বাভাবিক করার জন্য রূপান্তরের চেষ্টাও করেছি। এমনকি বিভিন্ন রূপান্তরের (লগ বর্গমূল, বর্গাকার) এর বিচারের পর সর্বনিম্ন একটি সঙ্গে রূপান্তর পর উত্পাদিত রূপান্তর ছিল যা এখনও উচ্চতর তুলনায় ছিল, । লগ 10 7.16 এফ সি আর আই টিএফসর্বোচ্চলগ107.16এফRআমিটি

এখান থেকে যেখান থেকে যেতে হবে সেখানকার কেউ আমাকে পরামর্শ দিতে পারেন? আমি ডেটা দ্বারা স্বাভাবিক করার জন্য রূপান্তরের অন্যান্য পদ্ধতির কথা ভাবতে পারি না। একমুখী আনোভা বিকল্প আছে কি?

পিএস: আমার কাঁচা তথ্য নীচে রয়েছে:

A: 0.178 0.195 0.225 0.294 0.315 0.341 0.36  0.363 0.371 0.398 0.407 0.409 0.432 
   0.494 0.719
B: 0.11  0.111 0.204 0.416 0.417 0.441 0.492 0.965 1.113 1.19  1.233 1.505 1.897
C: 0.106 0.114 0.143 0.435 0.448 0.51  0.576 0.588 0.608 0.64  0.658 0.788 0.958

2
এফ পরীক্ষা পরিষ্কারভাবে দেখায় গ্রুপ দ্বারা না একই জনসংখ্যা থেকে। পরবর্তী পদক্ষেপটি হ'ল এই ফলাফলটির ব্যাখ্যা দেওয়া হবে , গোষ্ঠী অনুসারে ভাঙা তথ্যগুলির স্বচ্ছ দৃশ্যায়ন এবং পরিমাণগত বিবরণ দিয়ে শুরু করা।
whuber

মুদ্রা প্যাকেজেও ক্রমশক্তি পরীক্ষা রয়েছে। আনোভার পক্ষে এটি হবে ওয়ানওয়েস্টেস্ট ফাংশন। কুইক-আর উদাহরণ: স্ট্যাটিমেডথস.নেট
রিসাম্পলিং

উত্তর:


73

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

  • রূপান্তরের
  • ওয়েলচ আনোভা
  • ওজন সর্বনিম্ন স্কোয়ার
  • দৃ reg়তা
  • ভিন্নতার সাথে সামঞ্জস্যপূর্ণ মান ত্রুটি
  • বুটস্ট্র্যাপ
  • কৃষকল-ওয়ালিস পরীক্ষা
  • অর্ডিনাল লজিস্টিক রিগ্রেশন

আপডেট: R যখন আপনি বৈকল্পিকতা / ভিন্নতার বৈকল্পিকতা রৈখিক মডেল ফিট করার কিছু উপায়ে (যেমন একটি আনোভা বা একটি রিগ্রেশন) এখানে দেখান।

আসুন আপনার ডেটা একবার দেখে শুরু করা যাক। সুবিধার জন্য, আমি এগুলিকে দুটি ডাটা ফ্রেমে লোড করেছি my.data(যাকে উপরের মতো গ্রুপের প্রতিটি কলাম দিয়ে কাঠামোযুক্ত করা হয়েছে) এবং stacked.data(যার দুটি কলাম রয়েছে: valuesসংখ্যা indসহ এবং গ্রুপ সূচক সহ)।

আমরা আনুষ্ঠানিকভাবে জন্য পরীক্ষা করতে পারেন লেভেনের পরীক্ষা দিয়ে ভিন্নতার :

library(car)
leveneTest(values~ind, stacked.data)
# Levene's Test for Homogeneity of Variance (center = median)
#       Df F value   Pr(>F)   
# group  2  8.1269 0.001153 **
#       38                    

নিশ্চিতভাবেই, আপনার ভিন্নতা আছে। গ্রুপগুলির বিভিন্নতা কী তা আমরা পরীক্ষা করব। থাম্বের একটি নিয়ম হ'ল লিনিয়ার মডেলগুলি যতক্ষণ না সর্বোচ্চ বৈকল্পিকতা 4 এর বেশি না হয় ততক্ষণ বৈচিত্রের ভিন্ন ভিন্নতার পক্ষে যথেষ্ট শক্তিশালী4× ন্যূনতম ভ্যারিয়েন্স তার চেয়ে অনেক বেশী, তাই আমরা যে অনুপাত হিসাবে ভাল খুঁজে পাবেন:

apply(my.data, 2, function(x){ var(x, na.rm=T) })
#          A          B          C 
# 0.01734578 0.33182844 0.06673060 
var(my.data$B, na.rm=T) / var(my.data$A, na.rm=T)
# [1] 19.13021

আপনার রূপগুলি বৃহত্তর সাথে উল্লেখযোগ্যভাবে পৃথক, B 19 এর চেয়ে19× সবচেয়ে ছোট A,। এটি হিটারোসেসডাসটিসিটির সমস্যাযুক্ত স্তর।

parallel.universe.data2.7B.7C

parallel.universe.data = with(my.data, data.frame(A=A, B=B+2.7, C=C+.7))
apply(parallel.universe.data,       2, function(x){ var(x, na.rm=T) })
#          A          B          C 
# 0.01734578 0.33182844 0.06673060 
apply(log(parallel.universe.data),  2, function(x){ var(x, na.rm=T) })
#          A          B          C 
# 0.12750634 0.02631383 0.05240742 
apply(sqrt(parallel.universe.data), 2, function(x){ var(x, na.rm=T) })
#          A          B          C 
# 0.01120956 0.02325107 0.01461479 
var(sqrt(parallel.universe.data$B), na.rm=T) / 
var(sqrt(parallel.universe.data$A), na.rm=T)
# [1] 2.074217

স্কয়ার রুটের ট্রান্সফর্মেশন ব্যবহার করে সেই ডেটাগুলি বেশ ভালভাবে স্থিতিশীল হয়। আপনি এখানে সমান্তরাল মহাবিশ্বের তথ্যের উন্নতি দেখতে পাবেন:

এখানে চিত্র বর্ণনা লিখুন

λλ=.5λ=0

boxcox(values~ind, data=stacked.data,    na.action=na.omit)
boxcox(values~ind, data=stacked.pu.data, na.action=na.omit) 

এখানে চিত্র বর্ণনা লিখুন

এফdf = 19.445df = 38

oneway.test(values~ind, data=stacked.data, na.action=na.omit, var.equal=FALSE)
#  One-way analysis of means (not assuming equal variances)
# 
# data:  values and ind
# F = 4.1769, num df = 2.000, denom df = 19.445, p-value = 0.03097

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

wl = 1 / apply(my.data, 2, function(x){ var(x, na.rm=T) })
stacked.data$w = with(stacked.data, ifelse(ind=="A", wl[1], 
                                           ifelse(ind=="B", wl[2], wl[3])))
w.mod = lm(values~ind, stacked.data, na.action=na.omit, weights=w)
anova(w.mod)
# Response: values
#           Df Sum Sq Mean Sq F value  Pr(>F)  
# ind        2   8.64  4.3201  4.3201 0.02039 *
# Residuals 38  38.00  1.0000                  

এফপি4.50890.01749

এখানে চিত্র বর্ণনা লিখুন

z- রটি50100এন

1 / apply(my.data,       2, function(x){ var(x, na.rm=T) })
#         A         B         C 
# 57.650907  3.013606 14.985628 
1 / apply(my.data,       2, function(x){ IQR(x, na.rm=T) })
#        A        B        C 
# 9.661836 1.291990 4.878049 

rw = 1 / apply(my.data, 2, function(x){ IQR(x, na.rm=T) })
stacked.data$rw = with(stacked.data, ifelse(ind=="A", rw[1], 
                                            ifelse(ind=="B", rw[2], rw[3])))
library(robustbase)
w.r.mod = lmrob(values~ind, stacked.data, na.action=na.omit, weights=rw)
anova(w.r.mod, lmrob(values~1,stacked.data,na.action=na.omit,weights=rw), test="Wald")
# Robust Wald Test Table
# 
# Model 1: values ~ ind
# Model 2: values ~ 1
# Largest model fitted by lmrob(), i.e. SM
# 
#   pseudoDf Test.Stat Df Pr(>chisq)  
# 1       38                          
# 2       40    6.6016  2    0.03685 *

এখানে ওজন তত চরম নয়। পূর্বাভাস গ্রুপ মানে সামান্য ভিন্ন ( A: WLS 0.36673, শক্তসমর্থ 0.35722; B: WLS 0.77646, শক্তসমর্থ 0.70433; CWLS: 0.50554, শক্তসমর্থ 0.51845, মাধ্যম সহ)B এবং Cকম চরম মান দ্বারা টানা হচ্ছে।

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

library(sandwich)
mod = lm(values~ind, stacked.data, na.action=na.omit)
sqrt(diag(vcovHC(mod)))
# (Intercept)        indB        indC 
#  0.03519921  0.16997457  0.08246131 
2*(1-pt(coef(mod) / sqrt(diag(vcovHC(mod))), df=38))
#  (Intercept)         indB         indC 
# 1.078249e-12 2.087484e-02 1.005212e-01 

vcovHCটিটিটি আপনার স্বাধীনতার অবশিষ্টাংশের সাথে বিতরণ)।

Rcarwhite.adjustপি

Anova(mod, white.adjust=TRUE)
# Analysis of Deviance Table (Type II tests)
# 
# Response: values
#           Df      F  Pr(>F)  
# ind        2 3.9946 0.02663 *
# Residuals 38                 
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

এফএফপি

mod    = lm(values~ind, stacked.data, na.action=na.omit)
F.stat = anova(mod)[1,4]
  # create null version of the data
nullA  = my.data$A - mean(my.data$A)
nullB  = my.data$B - mean(my.data$B, na.rm=T)
nullC  = my.data$C - mean(my.data$C, na.rm=T)
set.seed(1)
F.vect = vector(length=10000)
for(i in 1:10000){
  A = sample(na.omit(nullA), 15, replace=T)
  B = sample(na.omit(nullB), 13, replace=T)
  C = sample(na.omit(nullC), 13, replace=T)
  boot.dat  = stack(list(A=A, B=B, C=C))
  boot.mod  = lm(values~ind, boot.dat)
  F.vect[i] = anova(boot.mod)[1,4]
}
1-mean(F.stat>F.vect)
# [1] 0.0485

এন

kruskal.test(values~ind, stacked.data, na.action=na.omit)
#  Kruskal-Wallis rank sum test
# 
# data:  values by ind
# Kruskal-Wallis chi-squared = 5.7705, df = 2, p-value = 0.05584

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

library(rms)
olr.mod = orm(values~ind, stacked.data)
olr.mod
# Model Likelihood          Discrimination          Rank Discrim.    
# Ratio Test                 Indexes                Indexes       
# Obs            41    LR chi2      6.63    R2                  0.149    rho     0.365
# Unique Y       41    d.f.            2    g                   0.829
# Median Y    0.432    Pr(> chi2) 0.0363    gr                  2.292
# max |deriv| 2e-04    Score chi2   6.48    |Pr(Y>=median)-0.5| 0.179
#                      Pr(> chi2) 0.0391

chi2Discrimination Indexesপি0.0363


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

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

4
নোট করুন যে লাইব্রেরিতে হোয়াইট-অ্যাডজাস্টেড carwhite.adjust=T
হেটেরোসেসডাস্টিটিটি

3
হ্যাঁ এটা শুধুমাত্র জন্য এটি উল্লেখ lmএর, কিন্তু এটি কাজ বলে মনে হয় aov'গুলি (বিকল্প white.adjustহয় white.adjust=c(FALSE, TRUE, "hc3", "hc0", "hc1", "hc2", "hc4")- আরো তথ্য দেখতে জন্য ?hccm)
টম Wenseleers

1
@ নকেক্স, না, আমি জানি না know এটি থাম্ব একটি নিয়ম; এটি স্ট্যাটিস্টিকাল সাহিত্যে কোনও কাগজে থাকার সম্ভাবনা কম। এটি সম্ভবত কিছু প্রাথমিক পাঠ্যপুস্তকে রয়েছে।
গুং - মনিকা পুনরায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.