फिटिंग बहुभिन्नरूपी, प्राकृतिक घन पट्टी


17

नोट: एक महीने के बाद कोई सही उत्तर नहीं होने पर, मैंने एसओ को रिपॉजिट किया

पृष्ठभूमि

मेरे पास एक मॉडल है, , जहां वाई = एफ ( एक्स )Y=(एक्स)

एक है n × मीटर से नमूनों की मैट्रिक्स मीटर मापदंडों और Y है n × 1 मॉडल निर्गम की वेक्टर।एक्सn×Yn×1

तो मैं अनुमान लगाने के लिए चाहते हैं, कंप्यूटेशनल रूप से संवेदनशील है के माध्यम से एक मल्टीवेरिएट घन पट्टी का उपयोग कर ( एक्स , वाई ) , अंक तो मैं मूल्यांकन कर सकते हैं कि वाई अंक की एक बड़ी संख्या में।(एक्स,Y)Y

सवाल

क्या कोई आर फ़ंक्शन है जो एक्स और वाई के बीच एक मनमाना संबंध की गणना करेगा?

विशेष रूप से, मैं splinefunफ़ंक्शन के एक बहुभिन्नरूपी संस्करण की तलाश कर रहा हूं , जो कि यूनीवार्ता मामले के लिए एक स्पलाइन फ़ंक्शन उत्पन्न करता है।

उदाहरण के लिए यह कैसे splinefununivariate मामले के लिए काम करता है

x <- 1:10
y <- runif(10)
foo <- splinefun(x,y)
foo(1:10) #returns y, as example
all(y == foo(1:10))
## TRUE

मैंने क्या कोशिश की है

मैंने mda पैकेज की समीक्षा की है, और ऐसा लगता है कि निम्नलिखित काम करना चाहिए:

library(mda)
x   <- data.frame(a = 1:10, b = 1:10/2, c = 1:10*2)
y   <- runif(10)
foo <- mars(x,y)
predict(foo, x) #all the same value
all(y == predict(foo,x))
## FALSE

लेकिन मुझे इसमें क्यूब-स्पिक लागू करने का कोई तरीका नहीं मिला mars

बाउंटी की पेशकश के बाद से अद्यतन , मैंने शीर्षक बदल दिया - यदि कोई आर फ़ंक्शन नहीं है, तो मैं वरीयता के क्रम में स्वीकार करूंगा: एक आर फ़ंक्शन जो एक गॉसियन प्रक्रिया फ़ंक्शन, या एक अन्य बहुभिन्नरूपी फ़ंक्शन को आउटपुट करता है जो डिज़ाइन बिंदुओं से गुजरता है, अधिमानतः आर में, मतलब।


Gam () फ़ंक्शन का प्रयास करें, यह क्यूबिक
स्प्लिन के

जवाबों:


11

यह पेपर UseR पर प्रस्तुत किया गया है! 2009 एक ऐसी ही समस्या का समाधान करता है

http://www.r-project.org/conferences/useR-2009/slides/Roustant+Ginsbourger+Deville.pdf

यह सुझाव देता है कि DiceKriging पैकेज http://cran.r-project.org/web/packages/DiceKriging/index.html

विशेष रूप से, फ़ंक्शन किमी की जांच करें और भविष्यवाणी करें।

यहाँ तीन आयामी प्रक्षेप का एक उदाहरण है। यह सामान्य करने के लिए सीधा लग रहा है।

x <- c(0, 0.4, 0.6, 0.8, 1)
y <- c(0, 0.2, 0.3, 0.4, 0.5)
z <- c(0, 0.3, 0.4, 0.6, 0.8)

model <- function(param){
2*param[1] + 3*param[2] +4*param[3]
}


model.in <- expand.grid(x,y,z)
names(model.in) <- c('x','y','z')

model.out <- apply(model.in, 1, model)

# fit a kriging model 
m.1 <- km(design=model.in, response=model.out, covtype="matern5_2")

# estimate a response 
interp <- predict(m.1, newdata=data.frame(x=0.5, y=0.5, z=0.5), type="UK",    se.compute=FALSE)
# check against model output
interp$mean
# [1]  4.498902
model(c(0.5,0.5,0.5))
# [1] 4.5

# check we get back what we put in
interp <- predict(m.1, newdata=model.in, type="UK", se.compute=FALSE)
all.equal(model.out, interp$mean)
# TRUE

6

आपको एक तंदुरुस्त फिट के लिए अधिक डेटा की आवश्यकता है। mgcv वास्तव में एक अच्छा विकल्प है। आपके विशिष्ट अनुरोध के लिए आपको क्यूब स्पलाइन को सेट करने की आवश्यकता है क्योंकि आधार फ़ंक्शन bs = 'cr' है और साथ ही इसे fx = TRUE के साथ दंडित नहीं किया है। दोनों विकल्प एक चिकनी शब्द के लिए निर्धारित हैं जो s () के साथ सेट किया गया है। उम्मीद के मुताबिक काम करता है।

library(mgcv)
x <- data.frame(a = 1:100, b = 1:100/2, c = 1:100*2)
y <- runif(100)
foo <- gam(y~a+b+s(c,bs="cr",fx=TRUE),data=x)
plot(foo)
predict(foo,x)

आपकी मदद के लिए धन्यवाद, लेकिन अगर यह एक क्यूबलाइन था, तो क्या मुझे predict(foo,x)वापस लौटने की उम्मीद नहीं करनी चाहिए y?
डेविड लेबॉउर

क्षमा करें, ध्यान नहीं दिया कि आप एक पूर्ण सन्निकटन चाहते हैं। तब जाहिरा तौर पर mgcv ज्यादा मदद का नहीं होता: बंद करो (" बसिस केवल 1D स्मूथी संभालती है") ( svn.r-project.org/R-packages/trunk/mgcv/R/smooth.r से )
एलेक्स

0

आप फ़ंक्शन के रूप में कोई विवरण नहीं देते हैं (एक्स); यह हो सकता है कि एक टुकड़े-टुकड़े निरंतर कार्य एक पर्याप्त रूप से अच्छा सन्निकटन है, जिस स्थिति में आप प्रतिगमन ट्री ( rpartउदाहरण के लिए पैकेज के साथ ) फिट करना चाह सकते हैं । अन्यथा, आप पैकेज को देखना चाहते हैं earth, इसके अलावा जो पहले से ही सुझाया गया है।


1
का रूप (एक्स)इस समस्या के दायरे से परे है, लेकिन यह एक गतिशील वैश्विक वनस्पति मॉडल है जिसका वर्णन मेडविगी एट अल 2009
डेविड लेबॉयर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.