2009-01-18 11 views
4

J'ai essayé en vain:Comment faire une analyse de régression dans Sage?

find_fit(data, quadratic_residues) 

J'essaie de trouver le meilleur ajustement des données sur les débits d'eau: http://dl.getdropbox.com/u/175564/rate.png

--- modifier après le commentaire ---

Le nouveau code:

var('x') 
model(x) = x**2 
find_fit((xlist, reqlist), model) 

Le message d'erreur:

Traceback (click to the left for traceback) 
... 
TypeError: data has to be a list of lists, a matrix, or a numpy array 

--- modifier

Le message d'erreur est maintenant:

Traceback (click to the left for traceback) 
... 
ValueError: each row of data needs 2 entries, only 5 entries given 

Le même ici une image: http://dl.getdropbox.com/u/175564/sage.png

Répondre

7
mydata = [[1,3],[2,7],[3,13],[4,24]] 
var('a,b,c') 
mymodel(x) = a*x^2 + b*x + c 
myfit = find_fit(mydata,mymodel,solution_dict=True) 
points(mydata,color='purple') + plot(
    mymodel(
    a=myfit[a], 
    b=myfit[b], 
    c=myfit[c] 
    ), 
    (x,0,4,), 
    color='red' 
) 
3

Je pense que votre problème est que quadratic_residues ne probablement pas signifie ce que vous pensez que cela signifie. Si vous essayez d'adapter le meilleur modèle quadratique, je pense que vous voulez faire quelque chose comme.

var('a, b, c, x') 
model(x) = a*x*x + b*x + c 
find_fit(data, model) 
+0

Merci pour la correction! J'ai simplifié votre code. Cependant, je ne l'ai pas obtenu pour travailler: var ('x') modèle (x) = x ** 2 find_fit ((xlist, reqlist), modèle) –

+0

essayez de mettre les coefficients libres "a, b, c "Retour à –

+0

Le même problème encore: http://dl.getdropbox.com/u/175564/sage.png –

2

Essayer Steven son exemple j'ai aussi couru dans l'erreur:

ValueError: each row of data needs 5 entries, only 2 entries given 

Voici un exemple plus explicite que je l'ai testé à travailler dans la sauge 4.7.

sage: l=[4*i^2+7*i+134+random() for i in xrange(100)] 
sage: var('a,b,c,x') 
(a, b, c, x) 
sage: model=a*x^2+b*x+c 
sage: find_fit(zip(xrange(100),l),model,variables=[x]) 
[a == 4.0000723084513217, b == 6.9904742307159697, c == 134.74698715254667] 

Apperently vous devez les variables = [x] pour dire sage qui a, b, c et x correspond à la variable dans votre modèle.

Questions connexes