nls()
사용자 지정 모델을 데이터에 맞추기 위해 사용해 왔지만 모델이 어떻게 피팅되는지가 마음에 들지 않으며 x 및 y 축 모두에서 잔차를 최소화하는 접근 방식을 사용하고 싶습니다.
나는 많은 검색을 수행 했으며 deming 패키지 ( http://cran.r-project.org/web/packages/deming/index.html ) 및 다음 스택 오버플로 게시물과 같은 선형 모델 피팅 솔루션을 찾았습니다 . R을 사용한 총 최소 제곱 방법 , R 에서 총 최소 제곱을 계산하는 방법은 무엇입니까? (직교 회귀) . 나는 또한 matlab 솔루션 ( https://stats.stackexchange.com/questions/110772/total-least-squares-curve-fit-problem )을 찾았 지만 사용자 정의가 아닌 2 차 다항식에 적합합니다. 모델.
내가 원하는 것은 nls()
x 및 y 잔차 최소화를 수행하는 것과 유사한 것 입니다. 이렇게하면 맞춤 모델을 입력 할 수 있습니다. R의 솔루션을 알고있는 사람이 있습니까?
감사합니다!
편집하다
여기에 예가 있지만 비선형 총 최소 제곱 회귀에 대한 일반적인 솔루션에 대한 제안을 찾고 있습니다.이 데이터 세트에 특정한 것은 아닙니다 (이것은 초기에 특이 기울기 행렬을 방지하기 위해 곡선 수정을 기반으로 한 예제 데이터 일뿐입니다). 모수 추정치 ) :
df <- structure(list(x = c(3, 4, 5, 6, 7, 8, 9, 10, 11), y = c(1.0385,
1.0195, 1.0176, 1.01, 1.009, 1.0079, 1.0068, 1.0099, 1.0038)), .Names = c("x",
"y"), row.names = c(NA, -9L), class = "data.frame")
(nlsfit <- nls(y ~ a^b^x, data = df, start = c(a=0.9, b=0.6)))
library(ggplot2)
ggplot(df, aes(x=x, y=y)) +
geom_point() +
geom_smooth(method="nls", formula = y ~ a^b^x, se=F, start = list(a=0.9, b=0.6))
CrossValidated의 G. Grothendieck과 Brian Borchers는 내가 찾고 있던 onls 패키지를 제안했습니다. 감사합니다. 도움을 주셔서 감사합니다. 자세한 정보는 여기를 참조하십시오 : http://www.r-bloggers.com/introducing-orthogonal-nonlinear-least-squares-regression-in-r/
다음은 위의 동일한 데이터를 사용하는 예입니다. 이것은 정규와 동일한 적합 매개 변수를 제공 nls()
하지만 실제 데이터에는 차이가 있습니다. 그러나 이것은 적어도 작업을 수행하는 방법을 보여줍니다.
df <- structure(list(x = c(3, 4, 5, 6, 7, 8, 9, 10, 11), y = c(1.0385,
1.0195, 1.0176, 1.01, 1.009, 1.0079, 1.0068, 1.0099, 1.0038)), .Names = c("x",
"y"), row.names = c(NA, -9L), class = "data.frame")
library(onls)
(onlsfit <- onls(y ~ a^b^x, data = df, start = c(a=0.9, b=0.6)))
# define function containing onls fitted parameters for plotting
fit.model <- function(x) {1.0934^0.7242^x}
library(ggplot2)
ggplot(df, aes(x=x, y=y)) +
geom_point() +
stat_function(fun=fit.model, color="black")
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다