Regressão Linear em C
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
// Finalmente resolvendo os problemas de acentuação setlocale(LC_ALL, "Portuguese"); int N; float X[TAM], Y[TAM], EX = 0, EX2 = 0, EY2 = 0, EY = 0, EXY = 0, A = 0, B = 0, R2 = 0; cout << "\n Digite o numero de duplas de X e Y: "; cin >> N; cout << "\n Digite os valores de X: \n"; for (int i = 0; i < N; i++){ cin >> X[i]; } cout << "\n Digite os valores de Y: \n"; for (int i = 0; i < N; i++){ cin >> Y[i]; } // Calculando o Somatorio de X for (int i = 0; i < N; i++){ EX = EX + X[i]; } // Calculando o Somatorio de Y for (int i = 0; i < N; i++){ EY = EY + Y[i]; } // Calculando o Somatorio de X*Y for (int i = 0; i < N; i++){ EXY = EXY + (X[i] * Y[i]); } // Calculando o Somatorio de X² for (int i = 0; i < N; i++){ EX2 = EX2 + pow(X[i],2); } // Calculando o Somatorio de X² for (int i = 0; i < N; i++){ EY2 = EY2 + pow(Y[i], 2); } // Calculando A apartir da formula A = (N*EXY - EX*EY) / (N*EX2 - pow(EX, 2)); // Calculando B apartir da formula B = (EY - (EX*A)) / N; // Calculando R² apartir da formula R2 = (pow(EXY - (EX*EY) / N, 2)) / ((EX2 - (pow(EX, 2) / N))*(EY2 - pow(EY, 2) / N));
cout << "\n- O valor de A é : " << A; cout << "\n- O valor de B é : " << B; cout << "\n- O Polinomio fica: Y=" << A << "x+" << B; cout << "\n- O Coeficiente de Determinação R² é: " << R2; if (R2 < 0.25) cout << "\n- O Ajuste é muito fraco ou Inexistente"; if ((R2 >= 0.25) && (R2 < 0.50)) cout << "\n- O Ajuste é Fraco"; if ((R2 >= 0.50) && (R2 < 0.75)) cout << "\n- O Ajuste é Moderado a Forte"; if ((R2 >= 0.75) && (R2 <= 1)) cout << "\n- 0 Ajuste é Forte a Perfeito";
getchar(); getchar(); return 0;
}