কীভাবে কার্যকরী ডেটা অনুকরণ করবেন?


12

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

আমি ভাবছিলাম যে কারও কাছে আরও বাস্তবসম্মত চেহারাযুক্ত সিমুলেটেড ফাংশনাল ডেটা উত্পন্ন করার জন্য ফাংশন / আইডিয়াসের একটি পয়েন্টার রয়েছে কিনা। বিশেষত, এগুলি মসৃণ হওয়া উচিত। আমি এই ক্ষেত্রে সম্পূর্ণ নতুন তাই কোন পরামর্শ স্বাগত জানানো হয়।

library("MASS")
library("caTools")
VCM<-function(cont,theta=0.99){
    Sigma<-matrix(rep(0,length(cont)^2),nrow=length(cont))
    for(i in 1:nrow(Sigma)){
        for (j in 1:ncol(Sigma)) Sigma[i,j]<-theta^(abs(cont[i]-cont[j]))
    }
    return(Sigma)
}


t1<-1:120
CVC<-runmean(cumsum(rnorm(length(t1))),k=10)
VMC<-VCM(cont=t1,theta=0.99)
sig<-runif(ncol(VMC))
VMC<-diag(sig)%*%VMC%*%diag(sig)
DTA<-mvrnorm(100,rep(0,ncol(VMC)),VMC)  

DTA<-sweep(DTA,2,CVC)
DTA<-apply(DTA,2,runmean,k=5)
matplot(t(DTA),type="l",col=1,lty=1)

1
আপনি কি কেবল এমন ডেটা সিমুলেট করতে পারবেন না যার অর্থ একটি পরিচিত মসৃণ ফাংশন এবং এলোমেলো শব্দ যোগ করতে পারে? উদাহরণস্বরূপ,x=seq(0,2*pi,length=1000); plot(sin(x)+rnorm(1000)/10,type="l");
ম্যাক্রো

@ ম্যাক্রো: না, আপনি যদি প্লট জুম করেন তবে দেখতে পাবেন যে এর দ্বারা উত্পন্ন ফাংশনগুলি মসৃণ নয়। এই স্লাইডগুলির কিছু বক্ররেখার সাথে তাদের তুলনা করুন: bscb.cornell.edu/~hooker/FDA2007/Lecture1.pdf । আপনার এক্স এর একটি স্মুথ স্প্লাইন কৌতুকটি করতে পারে তবে আমি ডেটা উত্পন্ন করার জন্য সরাসরি উপায় খুঁজছি।
ব্যবহারকারী 603

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

@ ম্যাক্রো: আপনার নকলের প্রক্রিয়াগুলি এই ডকুমেন্টের ১ page পৃষ্ঠার সাথে তুলনা করুন: inferences.phy.cam.ac.uk/mackay/gpB.pdf
ব্যবহারকারী 603

1
উচ্চতর অর্ডার বহুভুজ ব্যবহার করুন। এলোমেলো সহগ (সঠিক বিতরণ সহ) সহ একটি 20 তম ডিগ্রি বহুবর্ষটি দিকনির্দেশগুলি (সাবলীলভাবে) বেশ পরিবর্তন করতে পারে। আপনি যদি আপনার প্রশ্নের উত্তর খুঁজে পেয়েছেন তবে সম্ভবত আপনি উত্তর হিসাবে পোস্ট করতে পারেন?
ম্যাক্রো

উত্তর:


8

কীভাবে কোনও গাউসিয়ান প্রক্রিয়া (জিপি) এর অনুধাবন অনুকরণ করা যায় তা একবার দেখুন। উপলব্ধির মসৃণতা জিপির কোভেরিয়েন্স ফাংশনের বিশ্লেষণাত্মক বৈশিষ্ট্যের উপর নির্ভর করে। এই অনলাইন বইয়ে অনেক তথ্য রয়েছে: http://uncertainty.stat.cmu.edu/

জিপি'র এই ভিডিওটি একটি দুর্দান্ত পরিচয় দেয়: http://videolectures.net/gpip06_mackay_gpb/

পিএস আপনার মন্তব্য সম্পর্কে, এই কোডটি আপনাকে একটি সূচনা দিতে পারে।

library(MASS)
C <- function(x, y) 0.01 * exp(-10000 * (x - y)^2) # covariance function
M <- function(x) sin(x) # mean function
t <- seq(0, 1, by = 0.01) # will sample the GP at these points
k <- length(t)
m <- M(t)
S <- matrix(nrow = k, ncol = k)
for (i in 1:k) for (j in 1:k) S[i, j] = C(t[i], t[j])
z <- mvrnorm(1, m, S)
plot(t, z)

আপনার কী এমন কোনও লিঙ্ক আছে যা গাউসীয় প্রক্রিয়াটির উপলব্ধি সুনির্দিষ্টভাবে অনুকরণ করতে পারে সেই প্রশ্নকেই সম্বোধন করে? বইটিতে এটি সূচিত হয় না (সূচকের দিকে তাকানো)।
ব্যবহারকারী 603

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

4

ঠিক আছে, এখানে উত্তর আমি নিয়ে এসেছেন (এটা মূলত থেকে নেওয়া হল এখানে এবং এখানে )। ধারণাটি হ'ল কিছু এলোমেলো a একটি স্প্লিন ভিত্তিতে প্রজেক্ট করা । তারপরে, আমরা একটি (মসৃণ) জিপি থেকে একটি ড্র পাওয়ার আশ্বাস পেয়েছি।{xi,yi}

require("MASS")
calcSigma<-function(X1,X2,l=1){
    Sigma<-matrix(rep(0,length(X1)*length(X2)),nrow=length(X1))
    for(i in 1:nrow(Sigma)){
        for (j in 1:ncol(Sigma)) Sigma[i,j]<-exp(-1/2*(abs(X1[i]-X2[j])/l)^2)
    }
    return(Sigma)
}
# The standard deviation of the noise
n.samples<-50
n.draws<-50
x.star<-seq(-5,5,len=n.draws)
nval<-3
f<-data.frame(x=seq(-5,5,l=nval),y=rnorm(nval,0,10))
sigma.n<-0.2
# Recalculate the mean and covariance functions
k.xx<-calcSigma(f$x,f$x)
k.xxs<-calcSigma(f$x,x.star)
k.xsx<-calcSigma(x.star,f$x)
k.xsxs<-calcSigma(x.star,x.star)
f.bar.star<-k.xsx%*%solve(k.xx+sigma.n^2*diag(1,ncol(k.xx)))%*%f$y
cov.f.star<-k.xsxs-k.xsx%*%solve(k.xx+sigma.n^2*diag(1,ncol(k.xx)))%*%k.xxs
values<-matrix(rep(0,length(x.star)*n.samples),ncol=n.samples)
for (i in 1:n.samples)  values[,i]<-mvrnorm(1,f.bar.star,cov.f.star)
values<-cbind(x=x.star,as.data.frame(values))
matplot(x=values[,1],y=values[,-1],lty=1,type="l",col="black")
lines(x.star,f.bar.star,col="red",lwd=2)

একটি বিচার।  মসৃণ ফাংশন


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