Just nu i M3-nätverket
Gå till innehåll

Icke-linjär regressionsanalys


Wayne

Rekommendera Poster

Hej. Behöver få fram en ekvation på kylarkapaciteten på en oljekylare. Har värden för oljeflöde och kylkapacitet. Sambandet mellan oljeflöde och kylkapacitet är icke-linjärt och på formen Ax3+Bx2+Cx+D. Det jag vill få fram är alltså värdet på konstanterna A, B, C och D. Har provat med Excels funktion trendline men det vill inte fungera då den räknar med att värdena på X-axeln har storleken 1,2,3 osv då det egentligen är 50,100,150 osv. Då värdena på konstanterna A, B, C och D är tänkt att användas i ett dimensioneringsprogram för kylare som jag tagit fram i Excel så är det även att föredra om konstanterna plockas fram på ett mera automatiserat sätt då jag troligtvis kommer lägga till fler mätvärden framöver för att få en noggrannare uppskattning.

Enligt denna sida: http://tushar-mehta.com/publish_train/data_analysis/16.htm borde det fungera bra att använda sig av kommandot LINEST. Om ni bläddrar ner till figur 20 så kan ni se att jag borde använda mig av en formel med utseendet LINEST(G2:G16,A2:A16^{1,2,3},TRUE,TRUE). Då jag sitter vid en dator anpassad för Sverige måste ”,” ersättas med ”;”. Men det vill inte fungera för A2:A16^{1;2;3}. Någon som vet vad ”,” skall ersättas med i den ursprungliga formeln för att det skall fungera i Sverige. Eller någon som har en bättre metod på hur jag skall få fram mina konstanter.

Använder mig av Excel 2007 med engelska som språk.

Tack på förhand

/Joel

 

 

Länk till kommentar
Dela på andra webbplatser

Intressant fråga och det var mycket nytt för mig på den citerade sidan.

 

Efter att ha experimenterat med vektorisering av formler fick jag det (till slut) att funka genom att transponera den andra vektorn:

 

=LINEST(A8:A18;B8:B18^TRANSPOSE({1;2;3});TRUE;TRUE)

 

Tydligen tolkas {1;2;3} som en kolumnvektor och formeln behöver en radvektor.

 

mvh

/Johan

 

P.S Förresten är det inga problem att plotta dina data i graf. Använd bara X-Y scatter. D.S

[inlägget ändrat 2009-08-20 13:38:16 av Pejo]

Länk till kommentar
Dela på andra webbplatser

Tack så mycket för svaret. Löste mitt problem:thumbsup:

 

Vart dock fel när jag skulle poäng ge ditt inlägg. Skulle ge dig en 5:a men verkar som det vart en 1:a.

 

Länk till kommentar
Dela på andra webbplatser

  • 7 years later...

Tack för forskningen - jag undrade också varför instruktionsboken inte fungerade.

 

Använda funktionen INDEX() för att slippa Array formelhantering

 

Ett tips om man inte orkar med resultatet från LINEST som returnerar en array av värden som dyker upp i celler nedanför LINEST-cellen är att plocka enstaka värden med funktionen INDEX(rad;column). Dessutom slipper man det magiska (Ctrl+SHIFT+ENTER) för att aktivera en Array-funktion.

 

 

LineEst.PNG

 

Exempel : Koefficienterna a, b, c, d till ett 3;gradspolynom y=a*x^3+b*x^2+c*x+d kan plockas från 

LINEST som enstaka värden såhär 

 

=INDEX(LINEST(Table6[Y];Table6[X]^TRANSPOSE({1;2;3}));1;1)

=INDEX(LINEST(Table6[Y];Table6[X]^TRANSPOSE({1;2;3}));1;2)

=INDEX(LINEST(Table6[Y];Table6[X]^TRANSPOSE({1;2;3}));1;3)

=INDEX(LINEST(Table6[Y];Table6[X]^TRANSPOSE({1;2;3}));1;4)

 

Dvs sista två parametrarna anger val av rad och kolumn i resultatet från LINEST

 

Att det står Table6[Y] och Table6[X] i stället för en områdesreferens B1:B7;A1:A7 är bara för att jag i detta fall hämtar från data formaterat som en tabell med kolumnnamnen Y och X.

 

Varning för låg upplösning om formeln kopieras från Excel diagram textruta

 

Notera också att när man gör polynom med höga gradtal kanske X^3 och uppåt så är det vanskligt att plocka formeln direkt ur den textruta som man kan skapa i ett polynom i ett diagram i excel. Koefficienterna har nämligen inte så många decimaler och det kopierade polynomet ger då helt fel värden. Dvs säkrast att hämta koeff med LINEST.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...