Lineer Regresyon denklemini C++ ile Çözme

Regresyon sınıfı oluşturarak aşağıdaki formülü gerçekleştiriniz. Burada x giriş dizisi, y çıkış dizisidir. xi terimi x dizisinin elemanlarını(x1, x2, x3, …, xn) ifade eder. Aynı şekilde yi terimi, y dizisinin elemanlarını (y1, y2, y3, … yn) ifade eder.   burada n tane xi terimin ortalamasını,  ise n tane yi terimin ortalamasını göstermektedir. Ortalama için ayrı bir fonksiyon açarak daha hızlı işlem yapabilirsiniz. Bu modeldeki  katsayılarını hesaplayıp, döndüren bir fonksiyon yazınız


#include <iostream>
using namespace std;

class Regresyon{

    double x[5], y[5];

public:

    Regresyon(){

        for(int i=0;i<5;i++)
        {
            x[i]=(i+1)*0.5;
            y[i]=(i+1)*0.7;
        }
    }


    double ortalamaBul(double x[], int n){

        double toplam=0;
        for(int i=0;i<n;i++){

            toplam+=x[i];
        }

        return((double)toplam/n);
    }

    double beta1(double x[], double y[], int n){

        double xort= ortalamaBul(x,n);
        cout<<" X ortalama:"<<xort<<"\n";

        double yort= ortalamaBul(y,n);
        cout<<" Y ortalama:"<<yort<<"\n";

        double beta1ust=0, beta1alt=0;

        for(int i=0;i<n;i++){

            beta1ust+= (x[i]-xort)*(y[i]-yort);
            beta1alt+= (x[i]-xort)*(x[i]-xort);
        }

        return((double)beta1ust/beta1alt);
    }


    double beta2(double x[], double y[], int n){
        double xort= ortalamaBul(x,n);
        double yort= ortalamaBul(y,n);

        return(yort-(beta1(x,y,n)*xort) );
    }

    void goster(){

        cout<<"Beta 1:\n"<<beta1(x,y,5)<<endl;
        cout<<"Beta 2:\n"<<beta2(x,y,5)<<endl;
    }
};

int main() {

    Regresyon r1;
    r1.goster();

    return 0;
}




Mutlu kodlamalar,
Oğuzhan TAŞ
OCak 2021

Bookmark and Share