2016-10-20 4 views
-2

Ich habe zwei Datensätze, die ich mag würde, um die am besten passenden Funktionstypen finden:Funktionsanalyse, passend

x <- c(10, 40, 70, 100, 130, 160, 190, 220) 
y1 <- c(41.8, 45.2, 50.8, 62.5, 73.2, 86.9, 95.4, 107.9) 
y2 <- c(1.9, 34.3, 269.2, 1119.4, 2627.1, 5801.2, 11794.8, 24139.9) 

par(mfrow = c(1,2)) 
plot(x, y1); plot(x, y2) 

enter image description here

Ich würde etwas über die Trends von y1 und y2 sagen, wie y1 scheint einem linearen Trend zu folgen, und y2 sieht exponentiell aus. Zuerst habe ich versucht mit symbolischen Regressionen, vor allem mit 'rgp' Paket, aber das ist Dokumentation sehr schlecht, und es hat auch einige Probleme (nicht im Archiv-Modus arbeiten, und andere). Leider gibt es kein anderes symbolisches Regressionspaket.

Was schlagen Sie vor, was soll ich tun? Wie kann ich solche Schlussfolgerungen sagen/beweisen: "y1 folgt einem linearen Trend in der Funktion von x"?

+0

Welche Programmierproblem haben Sie? Betrachten Sie andere Sites wie stats.stackexchange.com – Llopis

+0

@Zheyuan Li Ja, aber Sie können Modelle nach Fittness und Komplexität vergleichen, zum Beispiel in einem Grundstück mit Pareto Front. – pnz

+0

@Llopis rgp verwendet genetische Programmierung, aber vielleicht gibt es andere nützliche Methoden. – pnz

Antwort

0

Verwendung lineares Modell:

summary.lm(lm(y1~x)) 
... 
    Multiple R-squared: 0.9802, Adjusted R-squared: 0.9768 F-statistic: 
    296.4 on 1 and 6 DF, p-value: 2.46e-06 

y1_r = 0,33044 * x + 32,46230

So 97% A-R-squered und kleiner p-Wert traurig, dass Sie linearen Trend haben. Für y2 können Sie die nichtlineare Regression auf die gleiche Weise verwenden.

r <- lm(y1 ~ x) 
nr <- nls(y1 ~ exp(a + b * x), start = list(a = 0, b = 0)) 
plot(x,y1) 
lines(x,predict(nr)) 
lines(x, predict(r), col = 'red') 

können Sie entscheiden, welches Modell besser ist, mit einfachen SD von Rückständen zu vergleichen

Residual standard error: 3.732 
Residual standard error: 2.515