जैसा कि @whuber ने बताया है, सांख्यिकीय तरीके यहां बिल्कुल काम नहीं करते हैं। आपको अन्य स्रोतों से वितरण का अनुमान लगाने की आवश्यकता है। जब आप वितरण को जानते हैं तो आपके पास एक गैर-रेखीय समीकरण हल करने वाला व्यायाम होता है। द्वारा निरूपित करें के साथ पैरामीटर वेक्टर अपनी चुनी प्रायिकता वितरण का quantile समारोह θfθ । आपके पास समीकरणों की निम्न अपस्मार प्रणाली है:
q0.05q0.5q0.95=f(0.05,θ)=f(0.5,θ)=f(0.95,θ)
जहाँ q आपकी मात्राएँ हैं। आप खोजने के लिए इस प्रणाली को हल करने की जरूरत है । अब व्यावहारिक रूप से किसी भी 3-पैरामीटर वितरण के लिए आपको इस समीकरण को संतुष्ट करने वाले मापदंडों के मूल्य मिलेंगे। 2-पैरामीटर और 1-पैरामीटर वितरण के लिए यह सिस्टम ओवरडाइटेड है, इसलिए कोई सटीक समाधान नहीं हैं। इस मामले में आप मापदंडों के एक समूह की खोज कर सकते हैं जो विसंगति को कम करता है:θ
(q0.05−f(0.05,θ))2+(q0.5−f(0.5,θ))2+(q0.95−f(0.95,θ))2
यहां मैंने द्विघात फ़ंक्शन को चुना, लेकिन आप जो चाहें चुन सकते हैं। @Whuber टिप्पणियों के अनुसार आप वज़न असाइन कर सकते हैं, ताकि अधिक महत्वपूर्ण मात्राएँ अधिक सटीक रूप से फिट की जा सकें।
चार और अधिक मापदंडों के लिए प्रणाली को कम करके आंका गया है, इसलिए अनंत संख्या में समाधान मौजूद हैं।
यहाँ कुछ नमूना आर कोड है जो इस दृष्टिकोण को दर्शाता है। प्रदर्शन के प्रयोजनों के लिए मैं वीजीएएम पैकेज से सिंह-मददाला वितरण से मात्रा उत्पन्न करता हूं । इस वितरण में 3 पैरामीटर हैं और इसका उपयोग आय वितरण मॉडलिंग में किया जाता है।
q <- qsinmad(c(0.05,0.5,0.95),2,1,4)
plot(x<-seq(0,2,by=0.01), dsinmad(x, 2, 1, 4),type="l")
points(p<-c(0.05, 0.5, 0.95), dsinmad(p, 2, 1, 4))
अब वह फ़ंक्शन बनाएं जो समीकरणों के गैर-रेखीय प्रणाली का मूल्यांकन करता है:
fn <- function(x,q) q-qsinmad(c(0.05, 0.5, 0.95), x[1], x[2], x[3])
जांचें कि क्या सही मान समीकरण को संतुष्ट करते हैं:
> fn(c(2,1,4),q)
[1] 0 0 0
गैर-रेखीय समीकरण प्रणाली को हल करने के लिए मैं nleqslv
पैकेज से फ़ंक्शन का उपयोग करता हूं nlqeslv हूं ।
> sol <- nleqslv(c(2.4,1.5,4.3),fn,q=q)
> sol$x
[1] 2.000000 1.000000 4.000001
जैसा कि हम देखते हैं कि हम सटीक समाधान प्राप्त करते हैं। आइए अब हम इन मात्राओं में लॉग-सामान्य वितरण को फिट करने का प्रयास करें। इसके लिए हम उपयोग करेंगेoptim
फंक्शन का ।
> ofn <- function(x,q)sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2)
> osol <- optim(c(1,1),ofn)
> osol$par
[1] -0.905049 0.586334
अब परिणाम की साजिश करें
plot(x,dlnorm(x,osol$par[1],osol$par[2]),type="l",col=2)
lines(x,dsinmad(x,2,1,4))
points(p,dsinmad(p,2,1,4))
इससे हम तुरंत देखते हैं कि द्विघात कार्य इतना अच्छा नहीं है।
उम्मीद है की यह मदद करेगा।