উইয়েবুল ডিস্ট্রিবিউশন প্যারামিটারগুলি বায়ুর গতির ডেটার জন্য এবং


19

হাইকে একইভাবে পরিবর্তিত সর্বাধিক সম্ভাবনা পদ্ধতির জন্য আকার এবং স্কেল প্যারামিটারটি দেখানো যেতে পারে


2
হাই @ জায়েনা এবং সাইটে আপনাকে স্বাগতম। আমি নিশ্চিত না যে আপনার প্রশ্নটি যদি আপনার ডেটা একটি ওয়েবেল বিতরণের সাথে সামঞ্জস্য করে বা আপনার ডেটা বর্ণনা করে এমন একটি ওয়েবেল বিতরণের পরামিতিগুলি কী হবে। আপনি অনুমান আপনার ডেটা একটি WEIBULL বন্টন অনুসরণ এবং পরামিতি খুঁজে পেতে চান, তাহলে আপনি ব্যবহার করতে পারেন fitdistr(mydata, densfun="weibull")মধ্যে RMLE মাধ্যমে পরামিতি খুঁজে। গ্রাফ তৈরি করতে হলে, ব্যবহার qqPlotথেকে ফাংশন carপ্যাকেজ: qqPlot(mydata, distribution="weibull", shape=, scale=)আকৃতি এবং স্কেলের পরামিতি আপনার সাথে পেয়েছি সঙ্গে fitdistr
COOLSerdash

হাই একটি দ্রুত উত্তরের জন্য ধন্যবাদ, আমার ডেটা মানে 5 বছরের মাসিক বায়ুর গতি, এটি ওয়েইবুলের সাথে সামঞ্জস্যপূর্ণ। সমস্যা আমি কিভাবে ট খুঁজে পেতে এবং জানি না গ অর্থাত WEIBULL পরামিতি .. এবং আমি WEIBULL সঙ্গে পরীক্ষামূলক ডেটা তুলনা কিভাবে জানি না ... এছাড়াও MLE হচ্ছে ... :(
zay

এমএলই = সর্বাধিক সম্ভাবনার অনুমান। আপনি কোন সফ্টওয়্যারটি ব্যবহার করেন তা আমি জানি না, তবে Rযা অবাধে উপলভ্য, আপনি প্যাকেজটি ইনস্টল ও লোড করতে পারেন এবং কে এবং সি এর অনুমান গণনা করতে আপনার ডেটা দিয়ে MASSব্যবহার fitdistrকরতে পারেন । এবং তারপর, আপনি ব্যবহার আনুমানিক পরামিতি সঙ্গে WEIBULL সঙ্গে আপনার তথ্যের তুলনা করতে পারবেন qqPlotথেকে carপ্যাকেজ।
COOLSerdash

অনেক ধন্যবাদ COOlserdash, আমি আর সফ্টওয়্যারটি ডাউনলোড করছি।
জায়ে

1
ঠিক আছে, এখানে পদক্ষেপ টিউটোরিয়াল দ্বারা একটি পদক্ষেপ: 1. ডাউনলোড করে ইনস্টল করুন আর 2. প্যাকেজ ইনস্টল করুন MASSএবং carটাইপ করুন: install.packages(c("MASS", "car"))। টাইপ করে প্যাকেজগুলি লোড করুন: library(MASS)এবং library(car)। ৩. আপনার ডেটাটিR , সম্ভবত একটি টেক্সট-ফাইলের মাধ্যমে আমদানি করুন। 4. আপনার ডেটা বলা হয় তাহলে my.dataব্যবহারের fitdistrনিম্নলিখিত পদ্ধতিতে: fitdistr(my.data, distribution="weibull")। 5. আমি প্রথম মন্তব্যে বর্ণিত হিসাবে একটি গ্রাফ তৈরি করুন qqPlot
COOLSerdash

উত্তর:


28

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

  1. ডাউনলোড এবং ইনস্টল করুনR , এটি বিনামূল্যে
  2. Alচ্ছিক : আর স্টুডিও ডাউনলোড করুন এবং ইনস্টল করুন যা সিন্ট্যাক্স হাইলাইটিং এবং আরও অনেক কিছু দরকারী ফাংশন সরবরাহ করার জন্য আর এর জন্য দুর্দান্ত আইডিই।
  3. প্যাকেজ ইনস্টল করুন MASSএবং carটাইপ করুন: install.packages(c("MASS", "car"))। এগুলি টাইপ করে লোড করুন: library(MASS)এবং library(car)
  4. এতে আপনার ডেটা আমদানি করুনR । উদাহরণস্বরূপ, আপনার যদি এক্সেলে আপনার ডেটা থাকে তবে এগুলিকে ডিলিমেটেড টেক্সট ফাইল (.txt) হিসাবে সংরক্ষণ করুন এবং সেগুলি Rদিয়ে আমদানি করুন read.table
  5. ফাংশন ব্যবহার করুন fitdistrআপনার WEIBULL বিতরণের সর্বোচ্চ সম্ভাবনা অনুমান গণনা করতে: fitdistr(my.data, densfun="weibull", lower = 0)। সম্পূর্ণরূপে কাজ করা উদাহরণ দেখতে, উত্তরের নীচে লিঙ্কটি দেখুন।
  6. পয়েন্ট 5 হিসাবে অনুমান করা স্কেল এবং আকৃতি পরামিতিগুলির সাথে ওয়েবেল বিতরণের সাথে আপনার ডেটা তুলনা করতে একটি কিউ-প্লট করুন: qqPlot(my.data, distribution="weibull", shape=, scale=)

ভিটো রিচি এর টিউটোরিয়াল সঙ্গে বন্টন ঝুলানো উপর Rবিষয়ে একটি ভাল প্রথম ধাপ। এবং বিষয়টিতে এই সাইটে অসংখ্য পোস্ট রয়েছে ( এই পোস্টটিও দেখুন )।

কিভাবে ব্যবহার করতে একটি উদাহরণ সম্পূর্ণরূপে কাজ দেখার জন্য fitdistr, কটাক্ষপাত আছে এই পোস্টে

এর মধ্যে একটি উদাহরণ তাকান R:

# Load packages

library(MASS)
library(car)

# First, we generate 1000 random numbers from a Weibull distribution with
# scale = 1 and shape = 1.5

rw <- rweibull(1000, scale=1, shape=1.5)

# We can calculate a kernel density estimation to inspect the distribution
# Because the Weibull distribution has support [0,+Infinity), we are truncate
# the density at 0

par(bg="white", las=1, cex=1.1)
plot(density(rw, bw=0.5, cut=0), las=1, lwd=2,
xlim=c(0,5),col="steelblue")

ওয়েইবুল কে

# Now, we can use fitdistr to calculate the parameters by MLE
# The option "lower = 0" is added because the parameters of the Weibull distribution need to be >= 0

fitdistr(rw, densfun="weibull", lower = 0)

     shape        scale   
  1.56788999   1.01431852 
 (0.03891863) (0.02153039)

সর্বাধিক সম্ভাবনার অনুমানগুলি যথেচ্ছভাবে এলোমেলো সংখ্যার প্রজন্মের মধ্যে আমরা সেট করেছি to আসুন আমরা অনুমান করেছি যে পরামিতিগুলির সাথে অনুমানমূলক ওয়েইবুল বিতরণের সাথে কিউকিউ-প্লট ব্যবহার করে আমাদের ডেটা তুলনা করি fitdistr:

qqPlot(rw, distribution="weibull", scale=1.014, shape=1.568, las=1, pch=19)

QQPlot

পয়েন্টগুলি লাইনের সাথে সুন্দরভাবে সাজানো থাকে এবং বেশিরভাগ 95% -বিশ্বস্ত খামের মধ্যে থাকে। আমরা উপসংহারে পৌঁছে যাব যে আমাদের ডেটা একটি ওয়েইবুল বিতরণের সাথে সামঞ্জস্যপূর্ণ। এটি অবশ্যই প্রত্যাশিত ছিল, যেমন আমরা ওয়েবুল বিতরণ থেকে আমাদের মূল্যবোধকে নমুনা দিয়েছি।


এমএলই ছাড়াই ওয়েবুল বিতরণের (আকৃতি) এবং সি (স্কেল) অনুমান করা

এই কাগজটি বাতাসের গতির জন্য ওয়েবুল বিতরণের পরামিতিগুলি অনুমান করার জন্য পাঁচটি পদ্ধতি তালিকাভুক্ত করে। আমি তাদের তিনটি এখানে ব্যাখ্যা করব।

মাধ্যম এবং মান বিচ্যুতি থেকে

=(σ^বনাম^)-1,086
=বনাম^Γ(1+ +1/)
বনাম^σ^Γ

স্বল্প-স্কোয়ারগুলি পর্যবেক্ষণের বিতরণে উপযুক্ত

এন0-ভী1,ভী1-ভী2,...,ভীএন-1-ভীএন1,2,...,এনপি1=1,পি2=1+ +2,...,পিএন=পিএন-1+ +এনY=একটি+ +এক্স

এক্সআমি=Ln(ভীআমি)
Yআমি=Ln[-Ln(1-পিআমি)]
একটি
=মেপুঃ(-একটি)
=

মিডিয়ান এবং কোয়ার্টাইল বাতাসের গতি

ভীমিভী0.25ভী0.75 [পি(ভীভী0.25)=0.25,পি(ভীভী0.75)=0.75]

=Ln[Ln(0.25)/Ln(0.75)]/Ln(ভী0.75/ভী0.25)1,573/Ln(ভী0.75/ভী0.25)
=ভীমি/Ln(2)1/

চারটি পদ্ধতির তুলনা

Rচারটি পদ্ধতির তুলনা করার জন্য এখানে উদাহরণ রয়েছে :

library(MASS)  # for "fitdistr"

set.seed(123)
#-----------------------------------------------------------------------------
# Generate 10000 random numbers from a Weibull distribution
# with shape = 1.5 and scale = 1
#-----------------------------------------------------------------------------

rw <- rweibull(10000, shape=1.5, scale=1)

#-----------------------------------------------------------------------------
# 1. Estimate k and c by MLE
#-----------------------------------------------------------------------------

fitdistr(rw, densfun="weibull", lower = 0)
shape         scale   
1.515380298   1.005562356 

#-----------------------------------------------------------------------------
# 2. Estimate k and c using the leas square fit
#-----------------------------------------------------------------------------

n <- 100 # number of bins
breaks <- seq(0, max(rw), length.out=n)

freqs <- as.vector(prop.table(table(cut(rw, breaks = breaks))))
cum.freqs <- c(0, cumsum(freqs)) 

xi <- log(breaks)
yi <- log(-log(1-cum.freqs))

# Fit the linear regression
least.squares <- lm(yi[is.finite(yi) & is.finite(xi)]~xi[is.finite(yi) & is.finite(xi)])
lin.mod.coef <- coefficients(least.squares)

k <- lin.mod.coef[2]
k
1.515115
c <- exp(-lin.mod.coef[1]/lin.mod.coef[2])
c
1.006004

#-----------------------------------------------------------------------------
# 3. Estimate k and c using the median and quartiles
#-----------------------------------------------------------------------------

med <- median(rw)
quarts <- quantile(rw, c(0.25, 0.75))

k <- log(log(0.25)/log(0.75))/log(quarts[2]/quarts[1])
k
1.537766
c <- med/log(2)^(1/k)
c
1.004434

#-----------------------------------------------------------------------------
# 4. Estimate k and c using mean and standard deviation.
#-----------------------------------------------------------------------------

k <- (sd(rw)/mean(rw))^(-1.086)
c <- mean(rw)/(gamma(1+1/k))
k
1.535481
c
1.006938

সমস্ত পদ্ধতিতে খুব অনুরূপ ফলাফল পাওয়া যায়। সর্বাধিক সম্ভাবনার পদ্ধতির সুবিধাটি হ'ল ওয়েবুল প্যারামিটারগুলির স্ট্যান্ডার্ড ত্রুটিগুলি সরাসরি দেওয়া হয়।


পিডিএফ বা সিডিএফ-তে পয়েন্টওয়াইজ আস্থা অন্তর যুক্ত করতে বুটস্ট্র্যাপ ব্যবহার করা

আমরা আনুমানিক ওয়েইবুল ডিস্ট্রিবিউশনের পিডিএফ এবং সিডিএফের চারপাশে পয়েন্টওয়াইজ কনফিডেন্স ইন্টারভালগুলি তৈরি করতে একটি নন-প্যারাম্যাট্রিক বুটস্ট্র্যাপ ব্যবহার করতে পারি। এখানে একটি Rস্ক্রিপ্ট রয়েছে:

#-----------------------------------------------------------------------------
# 5. Bootstrapping the pointwise confidence intervals
#-----------------------------------------------------------------------------

set.seed(123)

rw.small <- rweibull(100,shape=1.5, scale=1)

xs <- seq(0, 5, len=500)


boot.pdf <- sapply(1:1000, function(i) {
  xi <- sample(rw.small, size=length(rw.small), replace=TRUE)
  MLE.est <- suppressWarnings(fitdistr(xi, densfun="weibull", lower = 0))  
  dweibull(xs, shape=as.numeric(MLE.est[[1]][13]), scale=as.numeric(MLE.est[[1]][14]))
}
)

boot.cdf <- sapply(1:1000, function(i) {
  xi <- sample(rw.small, size=length(rw.small), replace=TRUE)
  MLE.est <- suppressWarnings(fitdistr(xi, densfun="weibull", lower = 0))  
  pweibull(xs, shape=as.numeric(MLE.est[[1]][15]), scale=as.numeric(MLE.est[[1]][16]))
}
)   

#-----------------------------------------------------------------------------
# Plot PDF
#-----------------------------------------------------------------------------

par(bg="white", las=1, cex=1.2)
plot(xs, boot.pdf[, 1], type="l", col=rgb(.6, .6, .6, .1), ylim=range(boot.pdf),
     xlab="x", ylab="Probability density")
for(i in 2:ncol(boot.pdf)) lines(xs, boot.pdf[, i], col=rgb(.6, .6, .6, .1))

# Add pointwise confidence bands

quants <- apply(boot.pdf, 1, quantile, c(0.025, 0.5, 0.975))
min.point <- apply(boot.pdf, 1, min, na.rm=TRUE)
max.point <- apply(boot.pdf, 1, max, na.rm=TRUE)
lines(xs, quants[1, ], col="red", lwd=1.5, lty=2)
lines(xs, quants[3, ], col="red", lwd=1.5, lty=2)
lines(xs, quants[2, ], col="darkred", lwd=2)
#lines(xs, min.point, col="purple")
#lines(xs, max.point, col="purple")

ওয়েইবুল পিডিএফ সিআই

#-----------------------------------------------------------------------------
# Plot CDF
#-----------------------------------------------------------------------------

par(bg="white", las=1, cex=1.2)
plot(xs, boot.cdf[, 1], type="l", col=rgb(.6, .6, .6, .1), ylim=range(boot.cdf),
     xlab="x", ylab="F(x)")
for(i in 2:ncol(boot.cdf)) lines(xs, boot.cdf[, i], col=rgb(.6, .6, .6, .1))

# Add pointwise confidence bands

quants <- apply(boot.cdf, 1, quantile, c(0.025, 0.5, 0.975))
min.point <- apply(boot.cdf, 1, min, na.rm=TRUE)
max.point <- apply(boot.cdf, 1, max, na.rm=TRUE)
lines(xs, quants[1, ], col="red", lwd=1.5, lty=2)
lines(xs, quants[3, ], col="red", lwd=1.5, lty=2)
lines(xs, quants[2, ], col="darkred", lwd=2)
lines(xs, min.point, col="purple")
lines(xs, max.point, col="purple")

ওয়েইবুল সিডিএফ সিআই


+1, সুন্দর ওভারভিউ। এনবি, গাড়ি প্যাকেজ থেকে কিউকিপ্লট ডাব্লু / শর্টকাট ব্যবহার করা হতে পারে distribution=weibull, যা এমএলইয়ের মাধ্যমে পরামিতিগুলি ফিট করবে এবং কিউকিউ প্লটটি 1 ধাপে তৈরি করবে।
গুং - মনিকা পুনরায়

ধন্যবাদ আমি অবগত নই যে QQPlot থেকে carএমএলই প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে গণনা করা হয়। যদি আমি একটি WEIBULL বন্টন (সঙ্গে একটি দৈব চলক উৎপন্ন rweibull) এবং কমান্ড ব্যবহার qqPlot(rw, distribution="weibull")আমি এই বলে যে পরামিতি প্রদান করতে হবে একটি ত্রুটির বার্তা পেতে shapeএবং scaleকরতে qqPlot। আমি কিছু অনুপস্থিত করছি?
COOLSerdash

আমার ভুল. স্পষ্টতই, এটি কেবলমাত্র কয়েকটি বিতরণ থেকে প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে অনুমান করে এবং ওয়েবুল সেগুলির মধ্যে একটি নয়।
গুং - মনিকা পুনরায়

হাই, আমি খুঁজে পেয়েছি যে আমি আর মাইডাটা আমদানির পরে, যখন আমি কমান্ডটি করি, ফিটডিজিটার (মায়াডাটা, ডেনসফান = "ওয়েইবুল") এটি ত্রুটি মেসগেইতে বলে যে "মাইডাটা" পাওয়া যায়নি .. আসলে আমার ডেটা এইচএস আর-তে আমদানি করা হয়েছিল কোন উত্তর স্বাগত হবে।
জায়ে

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