<div> Walmes e demais membros da lista;</div><div><br></div><div><br></div><div>Vejam até onde consegui desenvolver com base no exemplo proposto na página das "Rídiculas".</div><div>Tentei aplicar a função do Walmes para obter a anova do modelo não linear e o R², mas não obtive sucesso.</div>
<div>Desde já agradeço a ajuda de todos!</div><div><br></div><div><br></div><div><br></div><div>A <- 6.25551</div><div>> B <- -6.85223 </div><div>> C <- -0.24253 </div><div><br></div><div><br></div><div>> model8 <- nls(log(Carbtotal)~A+B*exp(C*Idade), data=citriodora,</div>
<div>+ start=list(A=A, B=B, C=C))</div><div>> summary(model8) </div><div><br></div><div>Formula: log(Carbtotal) ~ A + B * exp(C * Idade)</div><div><br></div><div>Parameters:</div><div> Estimate Std. Error t value Pr(>|t|) </div>
<div>A 6.25552 0.26527 23.58 1.14e-12 ***</div><div>B -6.85224 0.27415 -25.00 5.14e-13 ***</div><div>C -0.24253 0.02415 -10.04 8.88e-08 ***</div><div>---</div><div>Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 </div>
<div><br></div><div>Residual standard error: 0.2841 on 14 degrees of freedom</div><div><br></div><div>Number of iterations to convergence: 1 </div><div>Achieved convergence tolerance: 2.429e-06 </div><div><br></div><div>> F <- attr(model8$m$fitted(), "gradient") ## extraindo a matriz gradiente avaliada nas estimativas dos parâmetros</div>
<div><br></div><div>> m0 <- lm(log(Carbtotal)~-1+F, data=citriodora)# passando a matriz gradiente para a lm(), importante remover intercepto</div><div>> anova(m0) # partição da soma de quadrados total</div><div><br>
</div><div><br></div><div>Analysis of Variance Table</div><div><br></div><div>Response: log(Carbtotal)</div><div> Df Sum Sq Mean Sq F value Pr(>F) </div><div>F 3 271.26 90.422 1119.9 < 2.2e-16 ***</div>
<div>Residuals 14 1.13 0.081 </div><div>---</div><div>Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 </div><div>> anova(model8, lm(log(Carbtotal)~1, citriodora)) # SQ do modelo não linear corrigido para intercepto</div>
<div>Analysis of Variance Table</div><div><br></div><div>Model 1: log(Carbtotal) ~ A + B * exp(C * Idade)</div><div>Model 2: log(Carbtotal) ~ 1</div><div> Res.Df Res.Sum Sq Df Sum Sq F value Pr(>F) </div><div>1 14 1.130 </div>
<div>2 16 82.335 -2 -81.204 502.88 9.192e-14 ***</div><div>---</div><div>Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 </div><div><br></div><div><br></div><div>> R2 <- function(nls.obj){</div>
<div>+ da <- eval(nls.obj$data)</div><div>+ <a href="http://resp.name">resp.name</a> <- all.vars(summary(nls.obj)$formula)[1]</div><div>+ form <- paste(<a href="http://resp.name">resp.name</a>, "~1", sep="")</div>
<div>+ m0 <- lm(form, da)</div><div>+ an <- anova(nls.obj, m0)</div><div>+ sqn <- deviance(nls.obj)</div><div>+ sqe <- deviance(m0)</div><div>+ r2 <- 1-(sqn/sqe)</div><div>+ aov <- data.frame(fv=c("regression","residuals"),</div>
<div>+ gl=c(-an$Df[2],an$Res.Df[1]),</div><div>+ sq=c(-an$Sum[2],an$Res.Sum[1]))</div><div>+ aov$qm <- aov$sq/aov$gl</div><div>+ aov$F <- c(aov$qm[1]/aov$qm[2], NA)</div><div>
+ aov$"Pr(>F)" <- c(1-pf(aov$F[1], df1=aov$gl[1], df2=aov$gl[2]), NA)</div><div>+ names(aov) <- c(" ","Df", "Sum Sq", "Mean Sq", "F value", "Pr(>F)")</div>
<div>+ return(list(anova=aov, R2=r2))</div><div>+ }</div><div><br></div><div><br></div><div>> R2(model8)</div><div><br></div><div><br></div><div>Erro em anovalist.nls(object, ...) : </div><div> 'anova' is only defined for sequences of "nls" objects</div>
<div>Além disso: Warning message:</div><div>In anovalist.nls(object, ...) :</div><div> models with response "Carbtotal" removed because response differs from model 1</div><div><br></div><div><br></div>-- <br>Thiago de Paula Protásio<div>
Acadêmico de Engenharia Florestal</div><div>Universidade Federal de Lavras</div><div>Departamento de Ciências Florestais</div><div>Ciência e Tecnologia da Madeira</div><div>(035) 9183 - 2246</div><div><br></div><br>