2009-12-07 4 views
1

nls() 함수에 입력으로 수식을 제공해야하는 상황이 있습니다. 시간과 분산 사이의 데이터가 있습니다. 예를 들어 : 버몬트는 분산 시간 에서 지금R + 사용자 정의 함수

Time Variance 
1  0.15 
2  0.23 
3  0.67 
4  0.85 

제가 화학식 의 Vt = ((1-K^KT)/KT))를 사용하고 (Q^2)/2K, t. 위의 방정식에 두 개의 변수 (k, q)이 있습니다. 나는 k (hat)q (hat)을 결정해야합니다. 위 수식을 사용자 정의 수식으로 정의하고이를 nls() 함수의 인수로 사용할 수 있습니까?

답변

2

시도해 보셨습니까?

> d = data.frame(t=1:4,V=c(0.15,0.23,0.67,0.85)) 
> Vt = function(t,k,q) {((1-exp(k*t))/(k*t))*q^2/(2*k)} 
> nls(V~Vt(t,k,q),data=d,start=list(k=0.1,q=0.1),trace=TRUE) 
1.483693 : 0.1 0.1 
1.099885 : -7.358501 -3.593847 
Error in numericDeriv(form[[3L]], names(ind), env) : 
    Missing value or an infinity produced when evaluating the model 

사실은 물론, 작동하지 않습니다,하지만 당신은 정말 2에 맞게하려고 을 거라면 내가 (.. 아래 앉아 등 합리적인 시작 값을 파악하지 않은 때문이다 4 개 데이터 포인트에 매개 변수 비선형 모델, 당신은 는 번거 로움을 많이해야 할 것입니다. 나는이 그냥 데이터의 표본 희망 ...)

을 당신은 또한 그냥 쓸 수 물론이 경우에 수식 이내 nls()