0

私は非線形方程式を当てはめるのが好きです(gとhはパラメーターです):

q = g *(h ** age)/(1 + g *(h ** age));
年齢=50の場合はq=.05を制限します。つまり、g *(h * 50)/(1 + g(h ** 50)= .05。
これは、年齢= 50の場合、予測値qがデータのqと等しいことを意味します。

助けてくれてありがとう。

4

2 に答える 2

2

nls() および/またはパッケージを見てください BB。しかし、本当の楽しみのために:-)、Eureqa、http://creativemachines.cornell.edu/eureqaで少し時間を過ごしてください。これまで考えられていたよりも多くのソリューションが得られます!

于 2012-09-17T13:30:49.230 に答える
2
#define function
qfun <- function(age,h){
  #the constraint can be added using algebra
  g <- 0.05/0.95/h^50 
  g * (h^age)/(1 + g * (h^age))
}     

#create data
age <- 1:75

h <- 0.75

q <- qfun(age,h) 
plot(q~age)
#add noise
q <- q+rnorm(length(q),sd=0.02)
plot(q~age)

#fit
fit <- nls(q~qfun(age,h),start=list(h=1))
summary(fit)
Formula: q ~ qfun(age, h)

#Parameters:
#  Estimate Std. Error t value Pr(>|t|)    
#h 0.749644   0.001678   446.7   <2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
#
#Residual standard error: 0.01865 on 74 degrees of freedom
#
#Number of iterations to convergence: 5 
#Achieved convergence tolerance: 1.735e-06 
ttt<- function(x) qfun(x,coef(fit)[1])
curve(ttt,from=1,to=75,add=TRUE)
于 2012-09-17T13:58:27.153 に答える