কীভাবে আর ব্যবহার করে পরীক্ষা করা যায় তা দেখার জন্য ডেটা স্বাভাবিক বিতরণ অনুসরণ করে কিনা to


44

নিম্নলিখিত কাঠামোর সাথে আমার একটি ডেটা সেট রয়েছে:

a word | number of occurrence of a word in a document | a document id 

আর-তে সাধারণ বিতরণের জন্য আমি কীভাবে একটি পরীক্ষা করতে পারি? সম্ভবত এটি একটি সহজ প্রশ্ন তবে আমি একজন আর নবাগত।


5
@ সাকারাব সম্ভবত আমি পুরোপুরি বন্ধ, জিপ্ফের আইন অনুযায়ী ( j.mp/9er2lv ) কোনও শব্দটির ফ্রিকোয়েন্সি শব্দের ফ্রিকোয়েন্সি টেবিলের শর্তের সাথে তার বিপরীতে আনুপাতিকভাবে আনুপাতিক হবে বলে আপনি কি আশা করবেন না ? এই ক্ষেত্রে, zipfRপ্যাকেজটি দেখুন।
chl

1
আমি @ chl এর সাথে একমত - আপনার ডেটা সাধারণত বিতরণ করা হলে এটি সামান্য অলৌকিক কাজ হবে। আপনি ডেটা দিয়ে কী করতে চান সে সম্পর্কে আরও একটি প্রশ্ন সার্থক হবে। চাকা পুনর্নবীকরণ করবেন না!
csgillespie

3
এমন কোনও মডেল অনুসারে কীভাবে আপনার ডেটা বিতরণ করা যেতে পারে যা নেতিবাচক ঘটনার শূন্যতার সম্ভাবনা দেয়?
ব্যবহারকারী 60

1
এই পরীক্ষা করার কারণ কী?
whuber

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

উত্তর:


47

যদি আমি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে ডকুমেন্টের একটি সেটে শব্দের উপস্থিতি যদি একটি সাধারণ বিতরণ অনুসরণ করে তবে তা পরীক্ষা করতে আপনি কেবল শাপিরো-উইলক পরীক্ষা এবং কিছু কিউকিপ্লিট ব্যবহার করতে পারেন। উদাহরণ স্বরূপ,

## Generate two data sets
## First Normal, second from a t-distribution
words1 = rnorm(100); words2 = rt(100, df=3)

## Have a look at the densities
plot(density(words1));plot(density(words2))

## Perform the test
shapiro.test(words1); shapiro.test(words2)

## Plot using a qqplot
qqnorm(words1);qqline(words1, col = 2)
qqnorm(words2);qqline(words2, col = 2)

কিউকিপ্লট আদেশগুলি দেয়: বিকল্প পাঠ

আপনি দেখতে পাচ্ছেন যে দ্বিতীয় ডেটা সেটটি ভারী লেজ ( আরও তথ্য ) দ্বারা পরিষ্কারভাবে স্বাভাবিক নয় ।

শাপিরো-ওয়াকের স্বাভাবিকতা পরীক্ষায়, পি-মানটি প্রথম ডেটা সেট (> .9) এর জন্য বড় তবে দ্বিতীয় ডেটা সেট (<.01) এর জন্য খুব ছোট। এটি আপনাকে দ্বিতীয়টির জন্য নাল অনুমানকে প্রত্যাখ্যান করতে পরিচালিত করবে।


7
কেন এটি পরিষ্কারভাবে স্বাভাবিক নয়?
হারমান টুথ্রোট

আমি মনে করি যে প্লট করা পয়েন্টগুলি একটি সাধারণ বন্টন আঁকার সাথে তত কাছাকাছি আই-তৃতীয় চতুর্ভুজ দ্বিখণ্ডকের উপর থাকা উচিত।
ক্যাম্পা

আরও সাধারণভাবে (মানে! = 0), এর qqline1 টি opeাল এবং মিউ ইন্টারসেপ্ট থাকবে।
ক্যাম্পা

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

15

ধরে নিলাম আপনার ডেটাসেটটি ডাকা হয়েছে wordsএবং তার একটি countsকলাম রয়েছে, আপনি বিতরণটির দৃশ্যধারণের জন্য হিস্টগ্রাম প্লট করতে পারেন:

hist(words$counts, 100, col="black")

যেখানে 100 টি বিনের সংখ্যা

আপনি একটি সাধারণ কিউকিউ প্লট ব্যবহার করেও করতে পারেন

qqnorm(words$counts)

শেষ অবধি, আপনি স্বাভাবিকতার জন্য শাপিরো-উইলক পরীক্ষাটিও ব্যবহার করতে পারেন

shapiro.test(word$counts)

যদিও, এই আলোচনাটি দেখুন: সাধারণতা পরীক্ষা: 'প্রয়োজনীয়ভাবে অকেজো?'


14

কোন পরীক্ষা আপনাকে দেখাবে আপনার ডেটা যে হয়েছে একটি সাধারণ বন্টনের - এটি শুধুমাত্র আপনাকে দেখাতে সক্ষম হবে ডেটা একটি স্বাভাবিক সঙ্গে পর্যাপ্ত অসঙ্গত যে আপনার নাল প্রত্যাখ্যান করবে।

তবে গণনাগুলি কোনও ক্ষেত্রেই স্বাভাবিক নয়, তারা ইতিবাচক পূর্ণসংখ্যার - একটি সাধারণ বন্টন থেকে একটি পর্যবেক্ষণ এমন কোনও মান গ্রহণ করবে যে কোনও পূর্ণসংখ্যা নয়? (... এটি সম্ভাবনার 1 এর ইভেন্ট)।

এই ক্ষেত্রে আপনি কেন স্বাভাবিকতার জন্য পরীক্ষা করবেন? এটা অবশ্যই অসত্য।

[কিছু ক্ষেত্রে এটি অগত্যা গুরুত্বপূর্ণ নয় যে আপনি বলতে পারেন যে আপনার ডেটা আসলে স্বাভাবিক নয়। বাস্তব তথ্য কখনই (বা প্রায় কখনই হয় না) আসলে একটি সাধারণ বিতরণ থেকে আঁকা হতে পারে]]

আপনার যদি সত্যিই কোনও পরীক্ষা করার দরকার হয় তবে শাপিরো-উইলক পরীক্ষা ( ?shapiro.test) সাধারণতার একটি ভাল সাধারণ পরীক্ষা, যা ব্যাপকভাবে ব্যবহৃত হয়।


9

স্বাভাবিকতা দেখার আরও একটি আনুষ্ঠানিক উপায় হল কুর্তোসিস এবং স্কিউনেস শূন্যের থেকে উল্লেখযোগ্যভাবে পৃথক কিনা তা পরীক্ষা করে।

এটি করার জন্য, আমাদের পাওয়া দরকার:

kurtosis.test <- function (x) {
m4 <- sum((x-mean(x))^4)/length(x)
s4 <- var(x)^2
kurt <- (m4/s4) - 3
sek <- sqrt(24/length(x))
totest <- kurt/sek
pvalue <- pt(totest,(length(x)-1))
pvalue 
}

কুরটোসিসের জন্য, এবং:

skew.test <- function (x) {
m3 <- sum((x-mean(x))^3)/length(x)
s3 <- sqrt(var(x))^3
skew <- m3/s3
ses <- sqrt(6/length(x))
totest <- skew/ses
pt(totest,(length(x)-1))
pval <- pt(totest,(length(x)-1))
pval
}

অসুস্থতার জন্য।

এই উভয় পরীক্ষা এক-লেজযুক্ত, তাই আপনাকে দ্বি-পুচ্ছ হওয়ার জন্য পি-মানটি 2 দিয়ে গুণতে হবে ly আপনার পি-মানটি যদি একের চেয়ে বড় হয়ে যায় তবে আপনাকে কুরটোসিসেস্টের পরিবর্তে 1-কুর্তোসিস.টেষ্ট () ব্যবহার করতে হবে।

আপনার যদি অন্য কোনও প্রশ্ন থাকে তবে আপনি আমাকে j.bredman@gmail.com এ ইমেল করতে পারেন


উপরের দুটি ফাংশনগুলির মধ্যে পার্থক্যগুলি কী, মুহুর্তের প্যাকেজ থেকে kurtosis()এবং skewness()কার্যগুলি সম্পর্কে ? নমুনা ব্যবহার করে ফলাফল আলাদা Results rnorm()
নিকোস আলেকজান্দ্রিস

5

পরিসংখ্যান প্যাকেজের শাপিরো-উইলক পরীক্ষা ছাড়াও ন্যারেস্ট প্যাকেজ (সিআরএএন-তে উপলব্ধ) অন্যান্য স্বাভাবিকতা পরীক্ষা সরবরাহ করে।


4

nortestআর এর প্যাকেজটি ব্যবহার করে এই পরীক্ষাগুলি পরিচালনা করা যেতে পারে:

  • অ্যান্ডারসন-ডার্লিং স্বাভাবিকতা পরীক্ষা করুন

    ad.test(data1)
  • স্বাভাবিকতার জন্য ক্র্যামার-ভন মাইজ পরীক্ষা করুন

    cvm.test(data1)
  • স্বাভাবিকতার জন্য পিয়ারসন চি-বর্গ পরীক্ষা করুন

    pearson.test(data1)
  • স্বাভাবিকতার জন্য শাপিরো-ফ্রান্সিয়া পরীক্ষা করুন

    sf.test(data1)

normtestপ্যাকেজটি ব্যবহার করে আরও অনেক পরীক্ষা করা যেতে পারে । Https://cran.r-project.org/web/packages/normtest/normtest.pdf এ বর্ণনাটি দেখুন


@Nick; আমি থেকে এই পরীক্ষা উল্লেখ করেছি 'nortest' প্যাকেজ এখানে পাওয়া: ( cran.r-project.org/web/packages/nortest/nortest.pdf )। অন্যান্য দরকারী প্যাকেজটি উপরে বর্ণিত হিসাবে 'আদর্শ'
ডাঃ নিশা অরোরা

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