Forçar a aparecer grau máximo em um modelo linear

Bom dia a todos, Possuo dados gerados aleatoriamente e gostaria de modelá-los linearmente com diversos graus. A intenção é medir qual grau apresenta a melhor modelagem. Não trabalharei com previsão, mas sim buscarei as raízes reais desses polinômios. O problema ocorre quando é feita a modelagem para um polinômio de alto grau. Se tentar modelar com grau 20, por exemplo, não necessariamente a resposta terá grau 20, mas poderá apresentar qualquer grau inferior, como 19, por exemplo. É possível fixar que o maior grau exigido conste na resposta, ao modelar dados linearmente? Segue abaixo um exemplo de código. --- a<-NULL LT<-round(urtriang(10000,2.5,10,12.5)) DLT<-matrix(nrow=10000) for (i in 1:10000){ DLT[i]=sum(urtriang(LT[i],2.5,10,12.5)) } H<-hist(DLT[DLT>0],breaks=100,plot=FALSE) Dens<-H$density Int<-H$mids for (degreeTest in 2:20){ model<-lm(Dens~poly(Int,degreeTest,raw=TRUE)) Coeff1<-data.frame(model$coefficients[]) for (m in 1:nrow(Coeff1)) a <- c(a,Coeff1[m,1]) #end for m a <- c(a,rep(NA,21-m)) } b<-array(a,c(21,19),c("Coef","Grau")) ---- Os coeficientes de cada polinômio estão em *b*, sendo b[n,] os coeficientes de grau n-1. Exemplo: b[21,] = coeficientes de grau 20. Em *b* será possível observar que nem todos os graus (colunas) apresentarão coeficiente para seu maior expoente desejado. Obrigado, Henrique Ewbank Centro de Estudos em Logística COPPEAD

Henrique, Não entendi muito bem seus objetivos, mas apenas como palpite, se você pretende apenas achar pontos de interesse (raizes), uma abordagem utilizando Splines não seria mais interessante? do que estes polinômios de elevados graus. ?splinefun Att Em 21 de dezembro de 2011 09:47, Henrique Ewbank <henrique.ewbank@coppead.ufrj.br> escreveu:
Bom dia a todos,
Possuo dados gerados aleatoriamente e gostaria de modelá-los linearmente com diversos graus. A intenção é medir qual grau apresenta a melhor modelagem. Não trabalharei com previsão, mas sim buscarei as raízes reais desses polinômios.
O problema ocorre quando é feita a modelagem para um polinômio de alto grau. Se tentar modelar com grau 20, por exemplo, não necessariamente a resposta terá grau 20, mas poderá apresentar qualquer grau inferior, como 19, por exemplo. É possível fixar que o maior grau exigido conste na resposta, ao modelar dados linearmente?
Segue abaixo um exemplo de código.
--- a<-NULL LT<-round(urtriang(10000,2.5,10,12.5)) DLT<-matrix(nrow=10000)
for (i in 1:10000){ DLT[i]=sum(urtriang(LT[i],2.5,10,12.5)) } H<-hist(DLT[DLT>0],breaks=100,plot=FALSE) Dens<-H$density Int<-H$mids
for (degreeTest in 2:20){ model<-lm(Dens~poly(Int,degreeTest,raw=TRUE)) Coeff1<-data.frame(model$coefficients[]) for (m in 1:nrow(Coeff1)) a <- c(a,Coeff1[m,1]) #end for m a <- c(a,rep(NA,21-m)) } b<-array(a,c(21,19),c("Coef","Grau")) ----
Os coeficientes de cada polinômio estão em b, sendo b[n,] os coeficientes de grau n-1. Exemplo: b[21,] = coeficientes de grau 20. Em b será possível observar que nem todos os graus (colunas) apresentarão coeficiente para seu maior expoente desejado.
Obrigado,
Henrique Ewbank Centro de Estudos em Logística COPPEAD
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Henrique, Li umas 10 vezes sua pergunta e não entendi o seu objetivo. Seria bom ter um exemplo que possa ser reproduzido, para que fique claro a todos. Pelo que pude supor, você está gerando diversos números aleatórios (uma quantidade bastante grande) e quer ajustar um polinomio grau 18 neste. A parte quer eu não entendi é o X da questão Você quer apenas um modelo, contendo TODOS OS GRAUS, de 0 a 18, ou você quer 190 modelos (Todas as combinações de polinomios de grau 0 até 18), contendo polinomios de graus 0 a 18, para verificar qual se comporta melhor. Note que a resposta para cada uma das opções é diferente. Não sei seu objetivo com isto, mas eu definitivamente utilizaria uma abordagem tentando ajustar exponenciais, ou até splines. Mas como sua pergunta não foi direcionada a saber a melhor estratégia ... []s Leonard de Assis assis <dot> leonard <at> gmail <dot> com Em 21/12/2011 09:47, Henrique Ewbank escreveu:
Bom dia a todos,
Possuo dados gerados aleatoriamente e gostaria de modelá-los linearmente com diversos graus. A intenção é medir qual grau apresenta a melhor modelagem. Não trabalharei com previsão, mas sim buscarei as raízes reais desses polinômios.
O problema ocorre quando é feita a modelagem para um polinômio de alto grau. Se tentar modelar com grau 20, por exemplo, não necessariamente a resposta terá grau 20, mas poderá apresentar qualquer grau inferior, como 19, por exemplo. É possível fixar que o maior grau exigido conste na resposta, ao modelar dados linearmente?
Segue abaixo um exemplo de código.
--- a<-NULL LT<-round(urtriang(10000,2.5,10,12.5)) DLT<-matrix(nrow=10000)
for (i in 1:10000){ DLT[i]=sum(urtriang(LT[i],2.5,10,12.5)) } H<-hist(DLT[DLT>0],breaks=100,plot=FALSE) Dens<-H$density Int<-H$mids
for (degreeTest in 2:20){ model<-lm(Dens~poly(Int,degreeTest,raw=TRUE)) Coeff1<-data.frame(model$coefficients[]) for (m in 1:nrow(Coeff1)) a <- c(a,Coeff1[m,1]) #end for m a <- c(a,rep(NA,21-m)) } b<-array(a,c(21,19),c("Coef","Grau")) ----
Os coeficientes de cada polinômio estão em *b*, sendo b[n,] os coeficientes de grau n-1. Exemplo: b[21,] = coeficientes de grau 20. Em *b* será possível observar que nem todos os graus (colunas) apresentarão coeficiente para seu maior expoente desejado.
Obrigado,
Henrique Ewbank Centro de Estudos em Logística COPPEAD
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (3)
-
Eder David Borges da Silva
-
Henrique Ewbank
-
Leonard de Assis