এটি আপনাকে অনুধাবন করতে সহায়তা করতে পারে যে উলম্ব অক্ষটি সম্ভাবনার ঘনত্ব হিসাবে পরিমাপ করা হয় । সুতরাং যদি অনুভূমিক অক্ষটি কিমিটারে পরিমাপ করা হয় তবে উল্লম্ব অক্ষটি "প্রতি কিলোমিটার" সম্ভাবনার ঘনত্ব হিসাবে পরিমাপ করা হয়। ধরা যাক আমরা এই জাতীয় গ্রিডে একটি আয়তক্ষেত্রাকার উপাদান আঁকাম, যা 5 "কিমি" প্রশস্ত এবং প্রতি কিমি "0.1" উচ্চতর (যা আপনি "কিমি - 1 " হিসাবে লিখতে পছন্দ করতে পারেন )। এই আয়তক্ষেত্রের ক্ষেত্রফল 5 কিমি x 0.1 কিমি - 1 = 0.5। ইউনিটগুলি বাতিল হয়ে যায় এবং আমরা কেবলমাত্র একটি অর্ধেকের সম্ভাব্যতা রেখে চলেছি।- 1- 1
আপনি যদি অনুভূমিক ইউনিটগুলি "মিটার" এ পরিবর্তন করেন তবে আপনাকে উল্লম্ব ইউনিটগুলি "প্রতি মিটার" তে পরিবর্তন করতে হবে। আয়তক্ষেত্রটি এখন 5000 মিটার প্রশস্ত হবে এবং প্রতি মিটারে 0.0001 এর ঘনত্ব (উচ্চতা) থাকবে have আপনি এখনও একটি অর্ধেক সম্ভাবনা বাকি আছে। এই দুটি গ্রাফ একে অপরের তুলনায় পৃষ্ঠায় কীভাবে অদ্ভুত দেখাবে (আপনি কি একে অপরের তুলনায় আরও প্রশস্ত এবং খাটো হতে হবে না?) আপনি বিভ্রান্ত হয়ে পড়তে পারেন, তবে আপনি যখন শারীরিকভাবে প্লটগুলি আঁকেন তখন আপনি যা ব্যবহার করতে পারেন আপনার পছন্দ স্কেল কীভাবে সামান্য অদ্ভুততা জড়িত দরকার তা নীচে দেখুন।
সম্ভাব্য ঘনত্বের বক্ররেখার দিকে এগিয়ে যাওয়ার আগে আপনি হিস্টোগ্রামগুলি বিবেচনা করা সহায়ক হতে পারে । বিভিন্ন উপায়ে তারা সাদৃশ্যপূর্ণ। একটি হিস্টগ্রামের উল্লম্ব অক্ষ হ'ল ফ্রিকোয়েন্সি ঘনত্ব [প্রতি ইউনিট]এক্স এবং অঞ্চলগুলি আবার ফ্রিকোয়েন্সি উপস্থাপন করে কারণ অনুভূমিক এবং উল্লম্ব ইউনিটগুলি গুণনের পরে বাতিল হয়ে যায়। পিডিএফ বক্ররেখা হিস্টোগ্রামের এক ধরণের ক্রমাগত সংস্করণ, যার সমান মোট ফ্রিকোয়েন্সি।
আরও ঘনিষ্ঠ উপমাটি একটি আপেক্ষিক ফ্রিকোয়েন্সি হিস্টোগ্রাম - আমরা বলি যে এই জাতীয় হিস্টোগ্রামটি "নরমালাইজড" করা হয়েছে, সুতরাং সেই অঞ্চলের উপাদানগুলি এখন কাঁচা ফ্রিকোয়েন্সিগুলির পরিবর্তে আপনার মূল ডেটা সেটের অনুপাতকে উপস্থাপন করে এবং সমস্ত বারের মোট ক্ষেত্র এক হয়। উচ্চতাগুলি এখন আপেক্ষিক ফ্রিকোয়েন্সি ঘনত্ব [প্রতি ইউনিট প্রতি ]এক্স । যদি আপেক্ষিক ফ্রিকোয়েন্সি হিস্টোগ্রামে একটি বার থাকে যা এক্স বরাবর চলেএক্স20 কিলোমিটার থেকে 25 কিলোমিটারের মান (সুতরাং বারের প্রস্থ 5 কিলোমিটার) এবং প্রতি কিলোমিটারে 0,9 দৈর্ঘ্যের আপেক্ষিক ঘনত্ব রয়েছে, তবে সেই বারটিতে তথ্যের একটি 0.5 অনুপাত থাকে। এটি ঠিক এই ধারণার সাথে মিলে যায় যে আপনার ডেটা সেট থেকে এলোমেলোভাবে বেছে নেওয়া আইটেমটির সেই বারের মধ্যে শুয়ে থাকার 50% সম্ভাবনা রয়েছে। ইউনিটগুলির পরিবর্তনের প্রভাব সম্পর্কে পূর্ববর্তী যুক্তিটি এখনও প্রযোজ্য: 20 কিলোমিটার থেকে 25 কিলোমিটার বারের মধ্যে থাকা ডেটার অনুপাতের সাথে এই দুটি প্লটের 20,000 মিটার থেকে 25,000 মিটার বারের সাথে তুলনা করুন। আপনিও গাণিতিকভাবে নিশ্চিত করতে পারেন যে সমস্ত বারের ক্ষেত্র দুটি ক্ষেত্রেই এক হয়ে যায়।
আমার এই দাবিটি দ্বারা পিডিএফটি "হিস্টোগ্রামের ক্রমাগত সংস্করণ" হ'ল আমি কী বোঝাতে চাইছি? বিরতি [ x , x + δ x ] এর বিরতিতে মান বরাবর একটি সম্ভাব্যতা ঘনত্বের বক্ররেখার নীচে একটি ছোট স্ট্রিপ নেওয়া যাক , তাই স্ট্রিপটি δ x প্রস্থ এবং বক্ররের উচ্চতা প্রায় ধ্রুবক f ( x ) । আমরা সেই উচ্চতার একটি বার আঁকতে পারি, যার ক্ষেত্রফল এফ ( এক্স )এক্স[ এক্স , এক্স + δএক্স ]δএক্সচ( এক্স ) সেই স্ট্রিপটিতে মিথ্যা কথা বলার আনুমানিক সম্ভাবনার প্রতিনিধিত্ব করে।চ( এক্স )δএক্স
এবং x = b এর মধ্যে বক্ররেখার অধীনে অঞ্চলটি আমরা কীভাবে খুঁজে পেতে পারি ? আমরা সেই ব্যবধানটিকে সামান্য স্ট্রিপগুলিতে বিভক্ত করতে এবং বারগুলির ক্ষেত্রফলগুলির যোগফল নিতে পারি, ∑ f ( x )x = কx = খ , যা অন্তর [ ক , খ ] -এ শুয়ে থাকার আনুমানিক সম্ভাবনার সাথে মিলে যায়। আমরা দেখতে পাই যে বক্ররেখা এবং বারগুলি যথাযথভাবে সারিবদ্ধ হয় না, তাই আমাদের অনুমানের মধ্যে একটি ত্রুটি রয়েছে। করা হলে δ এক্স ছোট এবং প্রতিটি বার ছোট, আমরা আরো এবং সংকীর্ণ বার, যার সঙ্গে ব্যবধান পূরণ Σ চ ( এক্স )∑ চ( এক্স )δএক্স[ ক , খ ]δএক্সঅঞ্চলটির আরও ভাল অনুমান সরবরাহ করে।∑ চ( এক্স )δএক্স
ক্ষেত্রটি নিখুঁতভাবে গণনা করার জন্য, প্রতিটি স্ট্রিপ জুড়ে ধ্রুবক ছিল না ধরে , আমরা অখণ্ড ∫ b a f ( x ) d x মূল্যায়ন করি , এবং এটি অন্তরের মধ্যে শুয়ে থাকার প্রকৃত সম্ভাবনার সাথে মিলে যায় [ a , b ] । পুরো বক্ররেখাকে একীকরণ করার ফলে মোট ক্ষেত্রটি (অর্থাত্ সম্পূর্ণ সম্ভাবনা) এক হয়, একই কারণে যে আপেক্ষিক ফ্রিকোয়েন্সি হিস্টোগ্রামের সমস্ত বারের ক্ষেত্রফলগুলি যোগ করে একের মোট ক্ষেত্রের (অর্থাত্ মোট অনুপাত) দেয়। একীকরণ নিজেই এক যোগফল গ্রহণের ক্রমাগত সংস্করণ।চ( এক্স )∫খএকটিচ( x ) dএক্স[ ক , খ ]
প্লটের জন্য আর কোড
require(ggplot2)
require(scales)
require(gridExtra)
# Code for the PDF plots with bars underneath could be easily readapted
# Relative frequency histograms
x.df <- data.frame(km=c(rep(12.5, 1), rep(17.5, 2), rep(22.5, 5), rep(27.5, 2)))
x.df$metres <- x.df$km * 1000
km.plot <- ggplot(x.df, aes(x=km, y=..density..)) +
stat_bin(origin=10, binwidth=5, fill="steelblue", colour="black") +
xlab("Distance in km") + ylab("Relative frequency density per km") +
scale_y_continuous(minor_breaks = seq(0, 0.1, by=0.005))
metres.plot <- ggplot(x.df, aes(x=metres, y=..density..)) +
stat_bin(origin=10000, binwidth=5000, fill="steelblue", colour="black") +
xlab("Distance in metres") + ylab("Relative frequency density per metre") +
scale_x_continuous(labels = comma) +
scale_y_continuous(minor_breaks = seq(0, 0.0001, by=0.000005), labels=comma)
grid.arrange(km.plot, metres.plot, ncol=2)
x11()
# Probability density functions
x.df <- data.frame(x=seq(0, 1, by=0.001))
cutoffs <- seq(0.2, 0.5, by=0.1) # for bars
barHeights <- c(0, dbeta(cutoffs[1:(length(cutoffs)-1)], 2, 2), 0) # uses left of bar
x.df$pdf <- dbeta(x.df$x, 2, 2)
x.df$bar <- findInterval(x.df$x, cutoffs) + 1 # start at 1, first plotted bar is 2
x.df$barHeight <- barHeights[x.df$bar]
x.df$lastBar <- ifelse(x.df$bar == max(x.df$bar)-1, 1, 0) # last plotted bar only
x.df$lastBarHeight <- ifelse(x.df$lastBar == 1, x.df$barHeight, 0)
x.df$integral <- ifelse(x.df$bar %in% 2:(max(x.df$bar)-1), 1, 0) # all plotted bars
x.df$integralHeight <- ifelse(x.df$integral == 1, x.df$pdf, 0)
cutoffsNarrow <- seq(0.2, 0.5, by=0.025) # for the narrow bars
barHeightsNarrow <- c(0, dbeta(cutoffsNarrow[1:(length(cutoffsNarrow)-1)], 2, 2), 0) # uses left of bar
x.df$barNarrow <- findInterval(x.df$x, cutoffsNarrow) + 1 # start at 1, first plotted bar is 2
x.df$barHeightNarrow <- barHeightsNarrow[x.df$barNarrow]
pdf.plot <- ggplot(x.df, aes(x=x, y=pdf)) +
geom_area(fill="lightsteelblue", colour="black", size=.8) +
ylab("probability density") +
theme(panel.grid = element_blank(),
axis.text.x = element_text(colour="black", size=16))
pdf.lastBar.plot <- pdf.plot +
scale_x_continuous(breaks=tail(cutoffs, 2), labels=expression(x, x+delta*x)) +
geom_area(aes(x=x, y=lastBarHeight, group=lastBar), fill="steelblue", colour="black", size=.8) +
annotate("text", x=0.73, y=0.22, size=6, label=paste("P(paste(x<=X)<=x+delta*x)%~~%f(x)*delta*x"), parse=TRUE)
pdf.bars.plot <- pdf.plot +
scale_x_continuous(breaks=cutoffs[c(1, length(cutoffs))], labels=c("a", "b")) +
geom_area(aes(x=x, y=barHeight, group=bar), fill="steelblue", colour="black", size=.8) +
annotate("text", x=0.73, y=0.22, size=6, label=paste("P(paste(a<=X)<=b)%~~%sum(f(x)*delta*x)"), parse=TRUE)
pdf.barsNarrow.plot <- pdf.plot +
scale_x_continuous(breaks=cutoffsNarrow[c(1, length(cutoffsNarrow))], labels=c("a", "b")) +
geom_area(aes(x=x, y=barHeightNarrow, group=barNarrow), fill="steelblue", colour="black", size=.8) +
annotate("text", x=0.73, y=0.22, size=6, label=paste("P(paste(a<=X)<=b)%~~%sum(f(x)*delta*x)"), parse=TRUE)
pdf.integral.plot <- pdf.plot +
scale_x_continuous(breaks=cutoffs[c(1, length(cutoffs))], labels=c("a", "b")) +
geom_area(aes(x=x, y=integralHeight, group=integral), fill="steelblue", colour="black", size=.8) +
annotate("text", x=0.73, y=0.22, size=6, label=paste("P(paste(a<=X)<=b)==integral(f(x)*dx,a,b)"), parse=TRUE)
grid.arrange(pdf.lastBar.plot, pdf.bars.plot, pdf.barsNarrow.plot, pdf.integral.plot, ncol=2)