Ggplot2 সতর্কতাটি ব্যাখ্যা করুন: "অনুপস্থিত মানগুলি সহ কে সারি সরানো হয়েছে"


90

যখন আমি প্লট তৈরির চেষ্টা করছি তখন আমি এই সতর্কতাটি পাই ggplot

অনলাইনে কিছুক্ষণ গবেষণা করার পরে অনেকে পরামর্শ দিয়েছিলেন যে আমার ডাটাবেসে শূন্য মান বা সাধারণভাবে হারিয়ে যাওয়া ডেটা রয়েছে, যা ছিল না।

এই প্রশ্নে স্বীকৃত উত্তর নিম্নলিখিতটি বলে:

সতর্কতার অর্থ হ'ল কিছু উপাদান সরানো হয়েছে কারণ সেগুলি নির্দিষ্ট ব্যাপ্তির বাইরে চলে যায়

আমি ভাবছিলাম যে এই ব্যাপ্তিটি ঠিক কী নির্দেশ করে এবং কীভাবে কেউ সমস্ত সতর্কতা এড়াতে ম্যানুয়ালি এই পরিসরটি বাড়িয়ে তুলতে পারে?


4
এই yপ্রশ্নটির অক্ষের একটি সীমা রয়েছে । এই ফাংশনটির কারণে মানগুলি 0 এবং 0.12 এর মধ্যে সীমাবদ্ধ রয়েছে:ylim(0,0.12)
লাইজান্ডারআর

4
একটি পুনরুত্পাদনযোগ্য উদাহরণ প্রশ্নের উত্তর দিতে সহায়তা করবে। @ লাইজান্ডেআর মনে হচ্ছে সঠিক পথে চলে যাচ্ছে।
vpipkt

উত্তর:


85

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

library(ggplot2)

# All points are visible in the plot
ggplot(mtcars, aes(mpg, hp)) + 
  geom_point()

নীচের কোডে, এইচপি = 335 সহ একটি পয়েন্ট প্লটের y- রেঞ্জের বাইরে। এছাড়াও, যেহেতু আমরা scale_y_continuousy- অক্ষের ব্যাপ্তিটি সেট করতাম , এই পয়েন্টটি জিপিপ্লাট দ্বারা লিনিয়ার রিগ্রেশন লাইন হিসাবে গণনা করা অন্য কোনও পরিসংখ্যান বা সংক্ষিপ্তসারগুলির মধ্যে অন্তর্ভুক্ত নয়।

ggplot(mtcars, aes(mpg, hp)) + 
  geom_point() +
  scale_y_continuous(limits=c(0,300)) +  # Change this to limits=c(0,335) and the warning disappars
  geom_smooth(method="lm")

Warning messages:
1: Removed 1 rows containing missing values (stat_smooth). 
2: Removed 1 rows containing missing values (geom_point).

নীচের কোডে, এইচপি = 335 সহ পয়েন্টটি প্লটটির y-পরিসরের বাইরে এখনও রয়েছে তবে এই পয়েন্টটি ggplot গণনা করে এমন কোনও পরিসংখ্যান বা সংক্ষিপ্ত পদক্ষেপে যেমন লিনিয়ার রিগ্রেশন লাইন হিসাবে অন্তর্ভুক্ত রয়েছে। এটি কারণ আমরা ব্যবহার করিcoord_cartesian y- অক্ষের ব্যাপ্তি সেট এবং এই ফাংশনটি যখন পাতাগুলি সীমার বাইরে থাকে তখন পয়েন্টগুলি বাদ দেয় না যখন এটি ডেটাতে অন্য গণনা করে।

আপনি যদি এটি এবং পূর্বের প্লটটি তুলনা করেন, আপনি দেখতে পাচ্ছেন যে দ্বিতীয় প্লটের লিনিয়ার রিগ্রেশন লাইনে কিছুটা স্টিপার opeাল রয়েছে, কারণ এইচপি = 335 সহ পয়েন্টটি রিগ্রেশন লাইন গণনার সময় অন্তর্ভুক্ত করা হয়েছে, যদিও এটি প্লটে দৃশ্যমান নয় ।

ggplot(mtcars, aes(mpg, hp)) + 
  geom_point() +
  coord_cartesian(ylim=c(0,300)) +
  geom_smooth(method="lm")

12

ইপি 10 দ্বারা দেওয়া উত্তরটি সম্পূর্ণ করার জন্য কেবল।

আমিও ব্যবহার scale_y_continuousনা করেই একই সমস্যার মুখোমুখি হয়েছি coord_cartesian

দ্বন্দ্বটি এক্স অক্ষ থেকে এসেছে, যেখানে আমি সংজ্ঞায়িত করেছি limits = c(1, 30)। মনে হচ্ছে আপনার বারগুলি "ডজ" করতে চাইলে এই জাতীয় সীমা যথেষ্ট স্থান সরবরাহ করে না, সুতরাং আর ত্রুটিটি ছুঁড়ে ফেলে th

নিখোঁজ মান (জিওম_বার) সমেত 8 টি সারি সরানো হয়েছে

সমস্যার limits = c(0, 31)সমাধান করতে এক্স অক্ষের সীমাটি সামঞ্জস্য করা।

উপসংহারে, এমনকি আপনি যদি আপনার y অক্ষের সীমা না রাখছেন তবে আপনার পর্যাপ্ত জায়গা রয়েছে তা নিশ্চিত করতে আপনার এক্স অক্ষের আচরণটি পরীক্ষা করে দেখুন


এটি প্রায়শই মিস হয়। একই ব্যক্তি দ্বারা। আবার কিছুক্ষণ পর ... দীর্ঘশ্বাস !
জিনোম

1

এমনকি যদি আপনার ডেটা আপনার নির্দিষ্ট সীমাতে পড়ে থাকে (উদাঃ) c(0, 335) ) তবে একটি geom_jitter()বিবৃতি যোগ করা একই ত্রুটির বার্তা তৈরি করে সেই সীমাগুলির বাইরে কিছু পয়েন্ট ঠেলে দিতে পারে।

library(ggplot2)

range(mtcars$hp)
#> [1]  52 335

# No jitter -- no error message
ggplot(mtcars, aes(mpg, hp)) + 
    geom_point() +
    scale_y_continuous(limits=c(0,335))


# Jitter is too large -- this generates the error message
ggplot(mtcars, aes(mpg, hp)) + 
    geom_point() +
    geom_jitter(position = position_jitter(w = 0.2, h = 0.2)) +
    scale_y_continuous(limits=c(0,335))
#> Warning: Removed 1 rows containing missing values (geom_point).

2020-08-24 তারিখে ডিপেক্স প্যাকেজ দ্বারা নির্মিত (v0.3.0)


0

আমি এটিতেও ছুটে এসেছি, তবে যে ক্ষেত্রে আমি পরিসর সরবরাহ করার সময় অতিরিক্ত ত্রুটি বার্তা এড়াতে চেয়েছিলাম। একটি বিকল্প হ'ল রেঞ্জটি নির্ধারণ করার আগে ডেটা সাবসেট করা, যাতে সতর্কতাগুলি ট্রিগার না করে আপনার পছন্দ মত পরিসরটি রাখা যায়।

library(ggplot2)

range(mtcars$hp)
#> [1]  52 335

# Setting limits with scale_y_continous (or ylim) and subsetting accordingly
## avoid warning messages about removing data
ggplot(data= subset(mtcars, hp<=300 & hp >= 100), aes(mpg, hp)) + 
  geom_point() +
  scale_y_continuous(limits=c(100,300))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.