Accenniamo, solo, a come si può ottenere un coeff. di correlazione nel caso di approssimazioni con funz. polinomiali di 2º e 3º grado.
Algortimi per il loro calcolo sono incorporati (e facilmente utilizzabili) anche nella libreria accessibile con source("http://macosa.dima.unige.it/r.R"). Comunque vediamo come sono realizzati.
Iniziamo con le approssimazioni di 2º grado.

x <- c(0,1,2,3,4,5); y <- c(2.1,7.7,13.6,27.2,40.9,61.1)
n <- length(x); n; length(y)
# 6  6   Ho controllato se ho introdotto lo stesso numero di x ed y
plot(x,y)
abline(v=axTicks(1), h=axTicks(2), col="blue",lty=3)
a <- sum(x); b <- sum(x^2); c <- sum(x^3); d <- sum(x^4)
e <- sum(y); f <- sum(x*y); g <- sum(x*x*y)
ma <- matrix(data = c(n,a,b,a,b,c,b,c,d), nrow = 3, ncol = 3)
noti <- matrix(data = c(e,f,g), nrow = 3, ncol = 1)
S <- solve(ma,noti); S
#          [,1]
# [1,] 2.478571
# [2,] 2.359286
# [3,] 1.860714
# i dati sono approssimati da x -> 2.48+2.36*x+1.86*x^2
F <- function(x) S[1]+S[2]*x+S[3]*x^2
curve(F,add=TRUE,col="blue")

# Ecco come determinare il coeff. di correlazione:
Sr <- sum((y-F(x))^2) # somma dei quadrati dei degli scarti di y da F(x)
Sm <- sum((y-mean(y))^2) # somma dei quadrati degli scarti di y da M(y)
CoeffCorr <- sqrt((Sm-Sr)/Sm); CoeffCorr
# 0.9992544    Un valore molto vicino ad 1!
#
# Vediamo che cosa accade con altri dati:
x <- c(0,1,2,3,4,5); y <- c(2,19,38,15,48,43)
n <- length(x); n; length(y)
#  6  6
plot(x,y,col="red")
abline(v=axTicks(1), h=axTicks(2), col="blue",lty=3)
a <- sum(x); b <- sum(x^2); c <- sum(x^3); d <- sum(x^4)
e <- sum(y); f <- sum(x*y); g <- sum(x*x*y)
ma <- matrix(data = c(n,a,b,a,b,c,b,c,d), nrow = 3, ncol = 3)
noti <- matrix(data = c(e,f,g), nrow = 3, ncol = 1)
S <- solve(ma,noti); S
#            [,1]
# [1,]  5.0714286
# [2,] 12.5071429
# [3,] -0.9642857
F <- function(x) S[1]+S[2]*x+S[3]*x^2
curve(F,add=TRUE,col="blue")

Sr <- sum((y-F(x))^2) # somma dei quadrati dei degli scarti di y da F(x)
Sm <- sum((y-mean(y))^2) # somma dei quadrati degli scarti di y da M(y)
CoeffCorr <- sqrt((Sm-Sr)/Sm); CoeffCorr
# 0.8048214
Si ottiene anche in questo caso un coefficiente di correlazione abbastanza alto. Non basta il coefficiente ottenuto per stabilire se l'approssimazione è buona. Occorrerebbe tener conto della numerosità dei dati e valutare opportunamente la precisione con cui si è ottenuto il coefficiente, in modo simile a quanto si è fatto (vedi) per la correlazione lineare; non possiamo, qui, approfondire questi argomenti. Poi, eventualmente, sarebbe opportuna qualche considerazione "non statistica" per assicurarci che la funzione approssimante è polinomiale di secondo grado.
Vediamo che cosa sarebbe accaduto approssimando le due sequenze di dati con polinomi di 3º grado. L'algortimo è simile.
x <- c(0,1,2,3,4,5); y <- c(2.1,7.7,13.6,27.2,40.9,61.1)
n <- length(x); n; length(y)
plot(x,y)
abline(v=axTicks(1), h=axTicks(2), col="blue",lty=3)
# Regressione polinomiale di 2º grado:
a <- sum(x); b <- sum(x^2); c <- sum(x^3); d <- sum(x^4)
e <- sum(y); f <- sum(x*y); g <- sum(x*x*y)
ma <- matrix(data = c(n,a,b,a,b,c,b,c,d), nrow = 3, ncol = 3)
noti <- matrix(data = c(e,f,g), nrow = 3, ncol = 1)
S <- solve(ma,noti); S
#          [,1]
# [1,] 2.478571
# [2,] 2.359286
# [3,] 1.860714
# i dati sono approssimati da x -> 2.48+2.36*x+1.86*x^2
F <- function(x) S[1]+S[2]*x+S[3]*x^2
curve(F,add=TRUE,col="blue")
#
# Regressione polinomiale di 3º grado:
d1 <- sum(x^5); d2 <- sum(x^6)
g1 <- sum(x^3*y)
ma <- matrix(data = c(n,a,b,c, a,b,c,d, b,c,d,d1, c,d,d1,d2), nrow = 4, ncol = 4)
noti <- matrix(data = c(e,f,g,g1), nrow = 4, ncol = 1)
S1 <- solve(ma,noti); S1
#            [,1]
# [1,] 2.25079365
# [2,] 3.39947090
# [3,] 1.29126984
# [4,] 0.07592593
# i dati sono approssimati da x -> 2.25+3.40*x+1.29*x^2+0.076*x^3
F1 <- function(x) S1[1]+S1[2]*x+S1[3]*x^2+S1[4]*x^3
curve(F1,add=TRUE,col="red")

F(x); F1(x)     # i valori quasi coincidono
# 2.478571  6.698571 14.640000 26.302857 41.687143 60.792857
# 2.250794  7.017460 14.822222 26.120635 41.368254 61.020635
Per gli altri dati, in modo simile, avremmo ottenuto:
S1 <- solve(ma,noti); S1
#            [,1]
# [1,]  2.4603175
# [2,] 24.4312169
# [3,] -7.4920635
# [4,]  0.8703704
F1 <- function(x) S1[1]+S1[2]*x+S1[3]*x^2+S1[4]*x^3
curve(F1,add=TRUE,col="red")
L'approssimazione polinomiale di 2º grado e quella di 3º sono molto differenti. Senza sapere quale tipo di funzione "usare", in questo caso non possiamo decidere come approssimare i dati.