Wie das multivariate fraktionierte Polynom der folgenden Form passen:Fitting Fraktionen von multivariate Polynom
eine Funktion Gegeben: y = f(x,z)
, eine Funktion von zwei Variablen x
und z
. Genauer gesagt ist es der Form:
y = (x^2 + x^3)/(z^2 + z^3)
Zähler ein Polynom eines dritten Grades eines Prädiktor x, und der Nenner ist auch ein Polynom eines dritten Grades einiger Prädiktor z.
Ich mag Polynome passen für jeden des Prädiktor x
und z
, also muß ich die Koeffizienten A, B, C finden, D:
y = (A*x^2 + B*x^3)/(C*z^2 + D*z^3)
Grundsätzlich ist y
ein Verhältnis von zwei Polynomen Grad 3. Wie passt man eine solche Funktion?
Beispiel eines Datenrahmens unten. Ich kann keinen vollständigen Datenrahmen posten, da er mehr als 1000 Zeilen enthält.
y = c(-4.10594369806545, -4.23691458506868, -4.24690667936422, -3.53677470254628, -4.30406509320417, -4.19442802077908, -4.66857169733859, -2.82271310942235, -4.19720194766181, 3.52164353473802, -4.3917019001973, -5.41654474791269, 2.87471821731616, -3.85922481986118, -4.25370811223789, -3.57887855889961, -5.33913936106829, -4.11775265312012, -2.89958841300109, -4.18661983833127)
x = c(8.06526520889773, 9.39897529082673,9.07348918922699,7.5522372875608, 9.17294998275762,5.77455154554441, 9.2005930205213, 8.07309119969315, 7.42177579364465,8.18896686364888, 8.07868822922987, 8.50956416425175,9.71269017726113, 7.98378106897745, 7.69893619981345, 8.49576524400262, 8.02224091680654,8.25400859056484, 7.58171964012531, 8.35655484545343)
z = c(2.56494935746154, 4.99043258677874, 4.43081679884331,3.66356164612965,4.53259949315326,1.79175946922805,4.23410650459726, 5.38449506278909,3.13549421592915,4.34380542185368, 3.43398720448515,2.77258872223978,6.94985645500077,3.97029191355212, 3.40119738166216,4.39444915467244,2.19722457733622,3.91202300542815,4.06044301054642, 3.87120101090789)
dat = data.frame(cbind(y=y,x=x,z=z))
UPDATE:
Anruf zu nls
:
nls(y~(a*(x**2) + b*(x**3))/(c*(z**2) + d*(z**3)), dat, start=list(a=1,b=1,c=1,d=1))
Mit meinem erweiterten Datenmenge von mehr als 10^3 Zeilen, sehe ich den Fehler, den ich gerade geschrieben haben. Mit der Probe, die ich hier zur Verfügung gestellt habe, bekomme ich auch ein Gradientenproblem. – aza07
Danke für Ihren Versuch. Ich bekomme immer noch den Parameter Initialisierungsfehler für y und z. – aza07
Haben Sie die Iterationen der Parameter durchlaufen?Wie hast du C = 10 bekommen? – aza07