2013-03-02 4 views
0

비선형 함수에 가장 적합한 것을 만들었습니다. 그것은 올바르게 작동하는 것 같습니다 :가장 적합한 비선형 곡선에 대한 새로운 값 플롯

#define a function 
fncTtr <- function(n,d) (d/n)*((sqrt(1+2*(n/d))-1)) 

#fit 
dFit <- nls(dData$ttr~fncTtr(dData$n,d),data=dData,start=list(d=25),trace=T) 
summary(dFit) 

plot(dData$ttr~dData$n,main="Fitted d value",pch=19,) 
xl <- seq(min(dData$n),max(dData$n), (max(dData$n) - min(dData$n))/1000) 

lines(xl,predict(dFit,newdata=xl,col=blue) 

내 관측을위한 음모가 올바르게 나오고 있습니다. 내 음모에 가장 잘 맞는 곡선을 표시하는 데 문제가 있습니다. 저는 1000 개의 값을 갖는 xl 독립 변수를 만들고, 가장 적합한 것을 사용하여 새로운 값을 정의하려고합니다. xy.coords에서

오류 (X, Y) : 나는 "라인"프로 시저를 호출 할 때, 나는 오류 메시지가 'X'와 예측 나는 단지 실행하려고하면 'y'는 길이가 차이 기능 : 그 XL는 "a"는 16 가지 구성 요소가 있습니다 1000 개 구성 요소를 가지고 있지만 볼 수

a <-predict(dFit,newdata=xl) 
str(a) 

. a에서 같은 수의 값을 가져야하지 않습니까? 사용

데이터 :

n ttr  d 
1 35 0.6951 27.739 
2 36 0.6925 28.072 
3 37 0.6905 28.507 
4 38 0.6887 28.946 
5 39 0.6790 28.003 
6 40 0.6703 27.247 
7 41 0.6566 25.735 
8 42 0.6605 26.981 
9 43 0.6567 27.016 
10 44 0.6466 26.026 
11 45 0.6531 27.667 
12 46 0.6461 27.128 
13 47 0.6336 25.751 
14 48 0.6225 24.636 
15 49 0.6214 24.992 
16 50 0.6248 26.011 
+0

당신의 데이터 또는 데이터의 샘플을 포함 할 수 있을까요? – plannapus

+0

나는 데이터를 첨부했다 – user963386

+0

나는 R에 새로운 것을 추가해야한다. 나는 데이터에서 "d- 값"에 대한 많은 평가를했다. 프로그램의 목적은 "d 값"을 최적화하는 것이다. . – user963386

답변

0

좋아, 나는 그러나 나는 그것을 설명 할 수있을 것입니다 확실하지 않다, 나는 해결책을 찾은 것 같아요.
predict.nls을 호출 할 때 newdata 인수에 입력하는 내용은 예측하는 변수 (여기서는 n)에 따라 이름을 지정해야하며 이름은 nls의 원래 호출과 일치해야합니다. 우리는 당신의 코드를 시도하고 문제가 어디에서 오는지 볼 수 있도록

#Here I replaced dData$n with n 
dFit <- nls(ttr~fncTtr(n,d),data=dData,start=list(d=25),trace=T) 

plot(dData$ttr~dData$n,main="Fitted d value",pch=19,) 
xl <- seq(min(dData$n),max(dData$n), (max(dData$n) - min(dData$n))/1000) 

a <- predict(dFit,newdata=list(n=xl)) 
length(a)==length(xl) 
[1] TRUE 

lines(xl,a,col="blue") 

enter image description here

+0

감사! 정말 문제를 해결했습니다. – user963386