我想用公式>r²=(x-h)2 +(y-k)2来计算半径的预测间隔。圆的半径,x,y,是高斯坐标,h,k,标记拟合圆的中心。如何计算拟合R的圆的预测间隔
# data
x <- c(1,2.2,1,2.5,1.5,0.5,1.7)
y <- c(1,1,3,2.5,4,1.7,0.8)
# using nls.lm from minpack.lm (minimising the sum of squared residuals)
library(minpack.lm)
residFun <- function(par,x,y) {
res <- sqrt((x-par$h)^2+(y-par$k)^2)-par$r
return(res)
}
parStart <- list("h" = 1.5, "k" = 2.5, "r" = 1.7)
out <- nls.lm(par = parStart, x = x, y = y, lower =NULL, upper = NULL, residFun)
的问题是,predict()
不nls.lm工作,所以我试图用计算的nlsLM圈配合。 (我可以用手工计算,但有麻烦创建我Designmatrix).`
原来这就是我想未来:
dat = list("x" = x,"y" = y)
out1 <- nlsLM(y ~ sqrt(-(x-h)^2+r^2)+k, start = parStart)
导致:
Error in stats:::nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
问题1A: nlsLM()
如何使用圆圈拟合? (优点在于,通用predict()
可 问题1B:我如何得到预测区间为我的圈子适合从线性回归
实例(这是我想要的效果圈回归)
attach(faithful)
eruption.lm = lm(eruptions ~ waiting)
newdata = data.frame(waiting=seq(45,90, length = 272))
# confidence interval
conf <- predict(eruption.lm, newdata, interval="confidence")
# prediction interval
pred <- predict(eruption.lm, newdata, interval="predict")
# plot of the data [1], the regression line [1], confidence interval [2], and prediction interval [3]
plot(eruptions ~ waiting)
lines(conf[,1] ~ newdata$waiting, col = "black") # [1]
lines(conf[,2] ~ newdata$waiting, col = "red") # [2]
lines(conf[,3] ~ newdata$waiting, col = "red") # [2]
lines(pred[,2] ~ newdata$waiting, col = "blue") # [3]
lines(pred[,3] ~ newdata$waiting, col = "blue") # [3]
亲切的问候
摘要编辑的:
EDIT1:在nlsLM重排式,但参数(H,K,R)的结果现在是在出并OUT1不同...
编辑2:增加了两个维基百科链接,用于澄清puprose上使用的术语:(c.f.下文)
EDIT3:问题(S)的一些改述
Edit4:增加了线性回归的工作示例
找到h,k和r不是问题。这已经是海报代码中名为“out”的结果的一部分。 –