প্রতিটি পয়েন্টের


12

আমি তৈরি দুই ভেরিয়েবল পরিমাপ এক্স এবং ওয়াই । তারা উভয়ই তাদের সাথে যুক্ত ncertain x এবং σ y সম্পর্কিত অনিশ্চয়তাগুলি জানেছে । আমি এক্স এবং y এর মধ্যে সম্পর্ক খুঁজে পেতে চাই । আমি এটা কিভাবে করবো?nxyσxσyxy

সম্পাদনা : প্রতিটি একটি ভিন্ন হয়েছে σ এক্স , আমি এর সাথে জড়িত, এবং একই Y আমিxiσx,iyi


পুনরুত্পাদনযোগ্য আর উদাহরণ:

## pick some real x and y values 
true_x <- 1:100
true_y <- 2*true_x+1

## pick the uncertainty on them
sigma_x <- runif(length(true_x), 1, 10) # 10
sigma_y <- runif(length(true_y), 1, 15) # 15

## perturb both x and y with noise 
noisy_x <- rnorm(length(true_x), true_x, sigma_x)
noisy_y <- rnorm(length(true_y), true_y, sigma_y)

## make a plot 
plot(NA, xlab="x", ylab="y",
    xlim=range(noisy_x-sigma_x, noisy_x+sigma_x), 
    ylim=range(noisy_y-sigma_y, noisy_y+sigma_y))
arrows(noisy_x, noisy_y-sigma_y, 
       noisy_x, noisy_y+sigma_y, 
       length=0, angle=90, code=3, col="darkgray")
arrows(noisy_x-sigma_x, noisy_y,
       noisy_x+sigma_x, noisy_y,
       length=0, angle=90, code=3, col="darkgray")
points(noisy_y ~ noisy_x)

## fit a line 
mdl <- lm(noisy_y ~ noisy_x)
abline(mdl)

## show confidence interval around line 
newXs <- seq(-100, 200, 1)
prd <- predict(mdl, newdata=data.frame(noisy_x=newXs), 
    interval=c('confidence'), level=0.99, type='response')
lines(newXs, prd[,2], col='black', lty=3)
lines(newXs, prd[,3], col='black', lty=3)

ভেরিয়েবলের ত্রুটি বিবেচনা না করে লিনিয়ার রিগ্রেশন

এই উদাহরণটির সাথে সমস্যাটি হ'ল আমি মনে করি এটি ধরে নেয় যে মধ্যে কোনও অনিশ্চয়তা নেই । আমি এটা কিভাবে ঠিক করবো?x


lmYP(Y|X)YXX

1
আপনার বরং বিশেষ ক্ষেত্রে (এক্স এবং ওয়াইয়ের জন্য শব্দের মাত্রার পরিচিত অনুপাতের সাথে অবিচ্ছিন্ন ) ডেমিং রিগ্রেশন কৌশলটি করবে, যেমন Demingআর প্যাকেজ মেথকম্পে ফাংশন ।
কনজুগেটপায়ার

1
@ কনজুগেটেপরিওর ধন্যবাদ, এটি আশাব্যঞ্জক মনে হচ্ছে। আমি ভাবছি: প্রতিটি পৃথক x এবং y এর ক্ষেত্রে আমার আলাদা (তবে এখনও পরিচিত) বৈচিত্র থাকলে ডেমিং রিগ্রেশন এখনও কাজ করে? উদাহরণস্বরূপ, যদি x এর দৈর্ঘ্য হয় এবং আমি প্রতিটি এক্স প্রাপ্ত করতে বিভিন্ন স্পষ্টতা সহ শাসকদের ব্যবহার করেছি
rhombidodecahedron

আমি মনে করি যে যখন প্রতিটি পরিমাপের বিভিন্ন রূপ রয়েছে তখন এটি সমাধান করার উপায়টি হল ইয়র্ক এর পদ্ধতি ব্যবহার করছে using এই পদ্ধতির কোনও আর প্রয়োগকরণ আছে কিনা তা কি কেউ জানতে পারে?
rhombidodecahedron

1
@ রম্ববিডোডেকাহেড্রন আমার উত্তরটিতে "পরিমাপ করা ত্রুটিযুক্ত" দেখুন এটি এখানে দেখুন: stats.stackexchange.com/questions/174533/… (যা প্যাকেজ ডিমিংয়ের ডকুমেন্টেশন থেকে নেওয়া হয়েছিল)।
রোল্যান্ড

উত্তর:


9

Lθγ

(x,y):cos(θ)x+sin(θ)y=γ.

যে কোনও পয়েন্ট মধ্যে স্বাক্ষরিত দূরত্ব(x,y)

d(x,y;L)=cos(θ)x+sin(θ)yγ.

xiσi2yiτi2xiyi

Var(d(xi,yi;L))=cos2(θ)σi2+sin2(θ)τi2.

θγ

σiτi0


τiσixn=8

ব্যক্তিত্ব

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

#
# Generate data.
#
theta <- c(1, -2, 3) # The line is theta %*% c(x,y,-1) == 0
theta[-3] <- theta[-3]/sqrt(crossprod(theta[-3]))
n <- 8
set.seed(17)
sigma <- rexp(n, 1/2)
tau <- rexp(n, 1)
u <- 1:n
xy.0 <- t(outer(c(-theta[2], theta[1]), 0:(n-1)) + c(theta[3]/theta[1], 0))
xy <- xy.0 + cbind(rnorm(n, sd=sigma), rnorm(n, sd=tau))
#
# Fit a line.
#
x <- xy[, 1]
y <- xy[, 2]
f <- function(phi) { # Negative log likelihood, up to an additive constant
  a <- phi[1]
  gamma <- phi[2]
  sum((x*cos(a) + y*sin(a) - gamma)^2 / ((sigma*cos(a))^2 + (tau*sin(a))^2))/2
}
fit <- lm(y ~ x) # Yields starting estimates
slope <- coef(fit)[2]
theta.0 <- atan2(1, -slope)
gamma.0 <- coef(fit)[1] / sqrt(1 + slope^2)
sol <- nlm(f,c(theta.0, gamma.0))
#
# Plot the data and the fit.
#
theta.hat <- sol$estimate[1] %% (2*pi)
gamma.hat <- sol$estimate[2]
plot(rbind(xy.0, xy), type="n", xlab="x", ylab="y")
invisible(sapply(1:n, function(i) 
  arrows(xy.0[i,1], xy.0[i,2], xy[i,1], xy[i,2], 
         length=0.15, angle=20, col="Gray")))
points(xy.0)
points(xy, pch=16)
abline(c(theta[3] / theta[2], -theta[1]/theta[2]), col="Blue", lwd=2, lty=3)
abline(c(gamma.hat / sin(theta.hat), -1/tan(theta.hat)), col="Red", lwd=2)

+1 টি। আমি যতদূর বুঝতে পেরেছি, এটি এই প্রবীণ প্রশ্নটিরও জবাব দেয়: stats.stackexchange.com/questions/178727 ? আমাদের তখন এটির সদৃশ হিসাবে বন্ধ করা উচিত।
অ্যামিবা বলছেন মনিকাকে

এছাড়াও, এই থ্রেডের উত্তরের আমার মন্তব্য অনুসারে, দেখে মনে হচ্ছে demingফাংশনটি ভেরিয়েবল ত্রুটিগুলিও পরিচালনা করতে পারে। এটি সম্ভবত আপনার সাথে খুব সমান একটি ফিট ফলন করা উচিত।
অ্যামিবা বলছেন মনিকাকে

আমি ভাবছি যদি আপনি আলোচ্য প্রবণতাটি আরও অর্থবোধ করেন তবে আপনি যদি চিত্রের উপরে এবং নীচে 2 অনুচ্ছেদের জায়গাগুলি স্যুইচ করেন?
গুং - মনিকা পুনরায়

3
আমাকে আজ সকালে (একজন ভোটার দ্বারা) মনে করিয়ে দেওয়া হয়েছিল যে এই প্রশ্নটি বেশ কয়েক বছর আগে গণিত এসই সাইটে একাধিক উপায়ে ওয়ার্কিং কোড সহ জিজ্ঞাসা করা হয়েছিল এবং উত্তর দেওয়া হয়েছিল ।
হোবার

এই সমাধানটির কি কোনও নাম আছে? এবং সম্ভবত আরও পড়ার জন্য কোনও সংস্থান (ম্যাথমেটিকা ​​এসই সাইটের অর্থ ছাড়াও)?
জাস্টগেটিন স্টারটেড

0

এক্স এবং ওয়াইয়ের অনিশ্চয়তার ক্ষেত্রে সর্বাধিক সম্ভাবনার অনুকূলতা ইয়র্ক (2004) দ্বারা সম্বোধন করা হয়েছে addressed এখানে তার ফাংশন জন্য আর কোড।

রিক ওয়েহর, ২০১১ রচিত "ইয়র্কফিট", রাচেল চ্যাং অনুবাদ করেছেন আরতে অনুবাদ করেছেন

একিউ অনুসরণ করে ত্রুটি এবং ফিটের প্রাক্কলনগুলির ভালতা সহ ভেরিয়েবল, পারস্পরিক সম্পর্কযুক্ত ত্রুটি সহ ডেটাতে সেরা স্ট্রেইট লাইন ফিটের জন্য সর্বজনীন রুটিন (১৩) ইয়র্ক 2004 এর আমেরিকান জার্নাল অফ ফিজিক্স, যা ইয়র্ক 1969, আর্থ এবং প্ল্যানেটারি সায়েন্সেস লেটারসের পরিবর্তে নির্মিত হয়েছিল

ইয়র্কফিট <- ফাংশন (এক্স, ওয়াই, এক্সস্টডি, ইএসটিডি, রি = 0, বি0 = 0, প্রিন্টকয়েফস = 0, মেকলাইন = 0, এপিএস = 1 ই -7)

এক্স, ওয়াই, এক্সস্টডি, ওয়াইএসডি: এক্স পয়েন্ট, ওয়াই পয়েন্ট এবং তাদের মানক বিচ্যুতিযুক্ত তরঙ্গ

সতর্কতা: এক্সএসটিডি এবং ওয়াইএসটি শূন্য হতে পারে না কারণ এটি এক্সডাব্লু বা ওয়াইডাব্লুএকে এনএএন করবে। পরিবর্তে খুব ছোট মান ব্যবহার করুন।

রি: এক্স এবং ওয়াই ত্রুটির জন্য পারস্পরিক সম্পর্ক সহগ - দৈর্ঘ্য 1 বা এক্স এবং ওয়াইয়ের দৈর্ঘ্য

বি0: opeালের জন্য মোটামুটি প্রাথমিক অনুমান (ত্রুটি ছাড়াই মানসম্পন্ন ন্যূনতম-স্কোয়ারগুলি থেকে পাওয়া যায়)

printCoefs: কমান্ড উইন্ডোতে ফলাফল প্রদর্শন করতে 1 এর সমান সেট করুন

MakeLine: ফিট লাইনের জন্য Y তরঙ্গ উত্পন্ন করতে সমান 1 সেট করুন

ইন্টারসেপ্ট এবং plusালু প্লাস তাদের অনিশ্চয়তা সহ একটি ম্যাট্রিক্স প্রদান করে

যদি বি 0 এর জন্য কোনও প্রাথমিক অনুমান সরবরাহ না করা হয় তবে কেবলমাত্র ওএলএস ব্যবহার করুন (b0 == 0) {b0 = lm (Y ~ X) $ সহগুণ [2]}

tol = abs(b0)*eps #the fit will stop iterating when the slope converges to within this value

a, b: চূড়ান্ত বিরতি এবং opeাল a.err, b.err: বিরতি এবং opeালের আনুমানিক অনিশ্চয়তা

# WAVE DEFINITIONS #

Xw = 1/(Xstd^2) #X weights
Yw = 1/(Ystd^2) #Y weights


# ITERATIVE CALCULATION OF SLOPE AND INTERCEPT #

b = b0
b.diff = tol + 1
while(b.diff>tol)
{
    b.old = b
    alpha.i = sqrt(Xw*Yw)
    Wi = (Xw*Yw)/((b^2)*Yw + Xw - 2*b*Ri*alpha.i)
    WiX = Wi*X
    WiY = Wi*Y
    sumWiX = sum(WiX, na.rm = TRUE)
    sumWiY = sum(WiY, na.rm = TRUE)
    sumWi = sum(Wi, na.rm = TRUE)
    Xbar = sumWiX/sumWi
    Ybar = sumWiY/sumWi
    Ui = X - Xbar
    Vi = Y - Ybar

    Bi = Wi*((Ui/Yw) + (b*Vi/Xw) - (b*Ui+Vi)*Ri/alpha.i)
    wTOPint = Bi*Wi*Vi
    wBOTint = Bi*Wi*Ui
    sumTOP = sum(wTOPint, na.rm=TRUE)
    sumBOT = sum(wBOTint, na.rm=TRUE)
    b = sumTOP/sumBOT

    b.diff = abs(b-b.old)
  }     

   a = Ybar - b*Xbar
   wYorkFitCoefs = c(a,b)

# ERROR CALCULATION #

Xadj = Xbar + Bi
WiXadj = Wi*Xadj
sumWiXadj = sum(WiXadj, na.rm=TRUE)
Xadjbar = sumWiXadj/sumWi
Uadj = Xadj - Xadjbar
wErrorTerm = Wi*Uadj*Uadj
errorSum = sum(wErrorTerm, na.rm=TRUE)
b.err = sqrt(1/errorSum)
a.err = sqrt((1/sumWi) + (Xadjbar^2)*(b.err^2))
wYorkFitErrors = c(a.err,b.err)

# GOODNESS OF FIT CALCULATION #
lgth = length(X)
wSint = Wi*(Y - b*X - a)^2
sumSint = sum(wSint, na.rm=TRUE)
wYorkGOF = c(sumSint/(lgth-2),sqrt(2/(lgth-2))) #GOF (should equal 1 if assumptions are valid), #standard error in GOF

# OPTIONAL OUTPUTS #

if(printCoefs==1)
 {
    print(paste("intercept = ", a, " +/- ", a.err, sep=""))
    print(paste("slope = ", b, " +/- ", b.err, sep=""))
  }
if(makeLine==1)
 {
    wYorkFitLine = a + b*X
  }
 ans=rbind(c(a,a.err),c(b, b.err)); dimnames(ans)=list(c("Int","Slope"),c("Value","Sigma"))
return(ans)
 }

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