ফিটিং মাল্টিভারিয়েট, প্রাকৃতিক কিউবিক স্প্লাইন


17

দ্রষ্টব্য: এক মাস পরে কোনও সঠিক উত্তর না দিয়ে, আমি এসও-তে পোস্ট করেছি

পটভূমি

আমার কাছে একটি মডেল রয়েছে, , যেখানেওয়াই=(এক্স)

এক্স হ'ল প্যারামিটারগুলির নমুনাগুলির একটি ম্যাট্রিক্স এবং মডেল আউটপুটগুলির ভেক্টর।এন×মিমিওয়াইএন×1

তাই আমি অনুমান করতে চাই, গণনা নিবিড় মাধ্যমে একটি বহুচলকীয় কিউবিক স্প্লাইন ব্যবহার , পয়েন্ট তাই আমি মূল্যায়ন করতে পারে পয়েন্ট একটি বৃহত্তর নম্বরে।(এক্স,ওয়াই)ওয়াই

প্রশ্ন

এমন কোনও আর ফাংশন রয়েছে যা এক্স এবং ওয়াইয়ের মধ্যে একটি স্বেচ্ছাসেবী সম্পর্ক গণনা করবে?

বিশেষত, আমি splinefunফাংশনটির বহুবিধ সংস্করণটি সন্ধান করছি , যা অবিবাহিত ক্ষেত্রে একটি স্প্লাইন ফাংশন তৈরি করে।

উদাহরণস্বরূপ splinefun, অবিবাহিত ক্ষেত্রে এটি কাজ করে

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

আমি যা চেষ্টা করেছি

আমি এমডিএ প্যাকেজ পর্যালোচনা করেছি এবং দেখে মনে হচ্ছে যে নিম্নলিখিতগুলি কাজ করা উচিত:

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

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


গ্যাম () ফাংশনটি ব্যবহার করে দেখুন এটি কোনও ঘন স্প্লাইনের কোনও মাত্রাকে মঞ্জুরি দেয়
ব্যবহারকারী 5563

উত্তর:


11

এই কাগজ ইউজারে উপস্থাপন! 2009 একই ধরণের সমস্যার সমাধান করছে বলে মনে হচ্ছে

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

এটি ডাইসক্রিগিং প্যাকেজটির পরামর্শ দেয় http://cran.r-project.org/web/packages/ DiceKriging/index.html

বিশেষত, ফাংশনগুলি কিমি পরীক্ষা করুন এবং পূর্বাভাস দিন।

এখানে তিন মাত্রিক অন্তরোলনের উদাহরণ রয়েছে is এটি সাধারণীকরণ করা সহজ বলে মনে হচ্ছে।

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' হিসাবে সেট করতে হবে এবং এফএক্স = সত্যের সাথে এটি দণ্ডিতও করা উচিত নয়। উভয় বিকল্পগুলি একটি মসৃণ শর্তের জন্য সেট করা হয়েছে যা গুলি () দিয়ে সেট করা থাকে। পূর্বাভাস প্রত্যাশার মতো কাজ করে।

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?
ডেভিড লেবাউর 21

দুঃখিত, আপনি নিখুঁত অনুমান করতে চান তা খেয়াল করেন নি। তাহলে দৃশ্যত এমজিসিভি খুব বেশি উপকারী নয়: থামুন ("বেসিস কেবল 1D স্মুথগুলি পরিচালনা করে") ( এসএনএন.আর- প্রজেক্ট.আর.পি- / প্যাকেজ / ট্রাঙ্ক / এমজিসিভি / আর / এসমোথ.আর থেকে )
আলেক্স

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