Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
disciplinas:ce709-2010:atividades [2010/10/04 14:12] walmesdisciplinas:ce709-2010:atividades [2010/10/20 20:01] (atual) walmes
Linha 5: Linha 5:
 Saudações. Está previsto para a disciplina de estudos dirigidos em estatística a abordagem do tópico Modelos Não Lineares. Para início de discussão os seguintes materiais devem ser lidos: Saudações. Está previsto para a disciplina de estudos dirigidos em estatística a abordagem do tópico Modelos Não Lineares. Para início de discussão os seguintes materiais devem ser lidos:
  
-  * Capítulo Non linear models do Modern Applied Statistics with S-plus ([[http://www.leg.ufpr.br/~walmes/docs/A%20handbook%20of%20statistical%20analyses%20using%20R.pdf |MASS]]);+  * Capítulo //8 Non-Linear and Smooth Regression// do //Modern Applied Statistics with S-plus// ([[http://www.leg.ufpr.br/~walmes/docs/Modern%20Applied%20Statistical%20Methods%20with%20S%20plus.pdf |MASS]]);
   * Apêndice do John Fox sobre regressão não linear com o R ([[http://cran.r-project.org/doc/contrib/Fox-Companion/appendix-nonlinear-regression.pdf |Nonlinear Regression and Nonlinear Least Squares]]);   * Apêndice do John Fox sobre regressão não linear com o R ([[http://cran.r-project.org/doc/contrib/Fox-Companion/appendix-nonlinear-regression.pdf |Nonlinear Regression and Nonlinear Least Squares]]);
   * Exemplo de ajuste de modelo não linear com o R da página do Prof Paulo Justiniano ([[http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase31.html#x33-19000031 |Ajuste de modelos não lineares]]);   * Exemplo de ajuste de modelo não linear com o R da página do Prof Paulo Justiniano ([[http://leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase31.html#x33-19000031 |Ajuste de modelos não lineares]]);
Linha 52: Linha 52:
 #----------------------------------------------------------- #-----------------------------------------------------------
 # daqui em diante é com você... # daqui em diante é com você...
 +
 +#-----------------------------------------------------------
 +# exemplo de uso da optim()
 +
 +x <- 1:9
 +A <- 5
 +B <- 1
 +y <- A*x/(B+x)+rnorm(x,0,0.1)
 +plot(y~x)
 +curve(A*x/(B+x), add=TRUE)
 +
 +#-----------------------------------------------------------
 +# definição da função objetivo
 +
 +fun.objetivo <- function(theta, y, x){
 +  sum((y-theta[1]*x/(theta[2]+x))^2)
 +}
 +
 +#-----------------------------------------------------------
 +# escolha de valores iniciais
 +
 +start <- c(3,0.5)
 +
 +#-----------------------------------------------------------
 +# optimização da função objetivo
 +
 +opt <- optim(start, fun.objetivo, y=y, x=x)
 +opt
 +
 +curve(opt$par[1]*x/(opt$par[2]+x), add=TRUE, col=2)
 +
 +#-----------------------------------------------------------
 +# usando outra função objetivo
 +
 +fun.objetivo <- function(theta, y, x){
 +  n <- length(y)
 +  -(-n/2*log(2*pi)-n/2*log(theta[3])-
 +    sum((y-theta[1]*x/(theta[2]+x))^2/(2*theta[3])))
 +}
 +
 +#-----------------------------------------------------------
 +# os chutes
 +
 +start <- c(3,0.5,0.1)
 +
 +#-----------------------------------------------------------
 +# optimização
 +
 +opt <- optim(start, fun.objetivo, y=y, x=x)
 +opt
 +
 +curve(opt$par[1]*x/(opt$par[2]+x), add=TRUE, col=3)
 +#-----------------------------------------------------------
 +
 +#------------------------------------------------------------------------------------------
 +
 +library(gWidgetsRGtk2)
 +
 +da <- data.frame(x=1:20)
 +da$y <- 10*da$x/(3+da$x)+rnorm(da$x,0,0.2)
 +plot(y~x, data=da)
 +
 +#------------------------------------------------------------------------------------------
 +
 +limits <- list(A=c(0,20), B=c(0,6), n=c(0,2))
 +
 +plotMM <- function(...){
 +  plot(y~x, data=da)
 +  curve(svalue(A)*x^svalue(n)/(svalue(B)+x), add=TRUE)
 +}
 +
 +  w <- gwindow("Slider and spinbox example")
 +
 +  tbl = glayout(cont=w)
 +  for(i in 1:length(limits)){
 +    tbl[i,1] <- paste("Slide to adjuste parameter", names(limits)[i])
 +    tbl[i,2, expand=TRUE] <- (assign(names(limits)[i],
 +               gslider(from=limits[[i]][1],
 +                       to=limits[[i]][2],
 +                       by=diff(limits[[i]])/20,
 +                       value=mean(limits[[i]]),
 +                       container=tbl, handler=plotMM)))
 +  }
 +
 +plotMM()
 +
 +#------------------------------------------------------------------------------------------
 </code> </code>
  
  

QR Code
QR Code disciplinas:ce709-2010:atividades (generated for current page)