নমুনা থেকে দুটি জনসংখ্যা পৃথক করা


13

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

আমার অনুমান আমাকে সূচনা পয়েন্ট সরবরাহ করে:

  • নমুনার আন্তঃখণ্ড পরিমণ্ডলের মধ্যে সমস্ত পয়েন্টগুলি সাধারণত বিতরণ করা জনগোষ্ঠীর।

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

আমার ধারণাটি কি পরিসংখ্যানগত দিক থেকে শক্ত? এই সম্পর্কে আরও ভাল উপায় কি হতে পারে?

দয়া করে কারও ট্যাগগুলি ঠিক করুন।


আপনি কি ধরে নিতে পারেন যে অন্য দুটি গ্রুপ বিভিন্ন সাধারণ বিতরণ থেকে এসেছে?
csgillespie

@ সিগিলিসপি: আমার ধারণা, এটি দুটি গ্রুপের সাথে একই গ্রুপ, এবং সম্ভবত আমি এটি ধরে নিতে পারি না।
সাইলেন্টগোস্ট

1
আপনি কি জানেন যে দ্বিতীয় গ্রুপের সদস্যরা প্রথম গ্রুপে অন্তর্ভুক্ত নেই বা আপনি কি ভুল করে প্রথম সদস্যের সদস্য হিসাবে লেবেল দিতে ইচ্ছুক?
খ্রিস্টান

উত্তর:


10

যদি আমি সঠিকভাবে বুঝতে পারি, তবে আপনি কেবলমাত্র দুটি সাধারণের মিশ্রণটি ডেটাতে ফিট করতে পারেন। এটি করার জন্য উপলব্ধ প্রচুর আর প্যাকেজ রয়েছে। এই উদাহরণটি মিক্সটুলস প্যাকেজটি ব্যবহার করে :

#Taken from the documentation
library(mixtools)
data(faithful)
attach(faithful)

#Fit two Normals
wait1 = normalmixEM(waiting, lambda = 0.5)
plot(wait1, density=TRUE, loglik=FALSE)

এটি দেয়:

দুটি সাধারণের মিশ্রণ http://img294.imageshack.us/img294/4213/kernal.jpg

প্যাকেজে আরও পরিশীলিত পদ্ধতি রয়েছে - ডকুমেন্টেশন পরীক্ষা করুন।


1
আপনার সংযুক্ত চিত্রটির মেয়াদ শেষ হয়ে গেছে has
নক্তিনিস

3
  1. আইকিউআর সীমাতে থাকা তথ্যের জন্য আপনার এই বিতরণের পরামিতিগুলি অনুমান করার জন্য কাটা কাটা স্বাভাবিক বিতরণ (উদাহরণস্বরূপ আর প্যাকেজ গ্যামলস.আরটি) ব্যবহার করা উচিত।
  2. আরেকটি পদ্ধতির মধ্যে 2 বা 3 উপাদান (বিতরণ) সহ মিশ্রণ মডেল ব্যবহার করা হচ্ছে। আপনি gamlss.mx প্যাকেজ ব্যবহার করে এই জাতীয় মডেলগুলি ফিট করতে পারেন (মিশ্রণের প্রতিটি উপাদানগুলির জন্য প্যাকেজ gamlss.dist থেকে বিতরণ নির্দিষ্ট করা যেতে পারে)।

2

এটি ধরে নিয়েছে যে দ্বিতীয় বিতরণটি স্বাভাবিক কিনা আপনি তাও জানেন না; আমি মূলত কেবলমাত্র সাধারণ বিতরণকে কেন্দ্র করে এই অনিশ্চয়তাটি পরিচালনা করি। এটি সেরা পন্থা বা নাও হতে পারে।

আপনি যদি ধরে নিতে পারেন যে দুটি জনসংখ্যা সম্পূর্ণ আলাদা হয়ে গেছে (যেমন, ডিস্ট্রিবিউশন এ থেকে সমস্ত মান ডিস্ট্রিবিউশন বি থেকে সমস্ত মানের চেয়ে কম), তবে একটি পদ্ধতির ব্রেক-পয়েন্টটি অনুসন্ধান করার জন্য আর-তে অনুকূলিত () ফাংশনটি ব্যবহার করা হবে যে সাধারণ বিতরণের গড় এবং এসডি অনুমান করে যা ডেটা সবচেয়ে বেশি করে তোলে:

#generate completely separated data
a = rnorm(100)
b = rnorm(100,10)
while(!all(a<b)){
    a = rnorm(100)
    b = rnorm(100,10)
}

#create a mix
mix = c(a,b)

#"forget" the original distributions
rm(a)
rm(b)

#try to find the break point between the distributions
break_point = optimize(
    f = function(x){
        data_from_a = mix[mix<x]
        likelihood = dnorm(data_from_a,mean(data_from_a),sd(data_from_a))
        SLL = sum(log(likelihood))
        return(SLL)
    }
    , interval = c(sort(mix)[2],max(mix))
    , maximum = TRUE
)$maximum

#label the data
labelled_mix = data.frame(
    x = mix
    , source = ifelse(mix<break_point,'A','B')
)
print(labelled_mix)

আপনি যদি সম্পূর্ণ বিচ্ছেদ অনুমান করতে না পারেন, তবে আমি মনে করি আপনাকে দ্বিতীয় বিতরণের জন্য কিছু বিতরণ অনুমান করতে হবে এবং তারপরে মিশ্রণ মডেলিংটি ব্যবহার করতে হবে। দ্রষ্টব্য যে মিশ্রণ মডেলিং আসলে পৃথক ডেটা পয়েন্টগুলিতে লেবেল দেয় না, তবে প্রতিটি বিতরণের প্যারামিটারের মিশ্রণ অনুপাত এবং অনুমান দেয় (যেমন, গড়, এসডি, ইত্যাদি)।


optimizeআমি বুঝতে পারছি পাশাপাশি পাশাপাশি দুটি বিতরণ প্রয়োজন। আমার ক্ষেত্রে একটি অন্যটির ভিতরে, অর্থাত্ দ্বিতীয় জনসংখ্যার মানগুলি সীমা উভয়ের দিকে side
সাইলেন্টগোস্ট

1

আমি অবাক হলাম কেউই সুস্পষ্ট সমাধানের প্রস্তাব দেয়নি:

 #generate completely separated data
library(robustbase)
set.seed(123)  
x<-rnorm(200)
x[1:40]<-x[1:40]+10  
x[41:80]<-x[41:80]-10
Rob<-ltsReg(x~1,nsamp="best")
#all the good guys
which(Rob$raw.weights==1)

এখন ব্যাখ্যার জন্য: ltsRegপ্যাকেজে ফাংশন robustbase, যখন বিকল্পটির সাথে ডাকা হয়

nsamp="best"

ইউনিভারিটি (সঠিক) এমসিডি ওজন দেয়। (এগুলি $raw.weightsবস্তুতে সংরক্ষিত একটি এন-ভেক্টর 0-1 ওজন them তাদের সনাক্ত করার জন্য অ্যালগরিদমটি হ'ল এমসিডি অনুমানকারী (1))।

=(এন+ +2)/2

এক্স(আমি)আমিটি
(এক্স(1),,এক্স(+ +1))(এক্স(2),,এক্স(+ +2))

এন-

(1) পি জে রুউসিউ (1984)। স্কোয়ার রিগ্রেশনের সর্বনিম্ন মিডিয়ান, আমেরিকান স্ট্যাটিস্টিকাল অ্যাসোসিয়েশনের জার্নাল।

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