목차
회귀분석, least-squares
본문내용
gression [ to fit the exponential model < y=ae^b > ]
#include
#include
#include
#define e 2.71828
void regress(int);
double x[20],y[20],ly[20];
double temp1[20],temp2[20];
void main()
{
int i,n;
cout << "Number of Data : ";
cin >> n;
cout << "Input x : ";
for(i=0;i
cin >> x[i];
cout << endl << "Input y : ";
for(i=0;i
cin >> y[i];
for(i=0;i
{
ly[i]=log(y[i]);
}
regress(n);
return;
}
void regress(int n)
{
int i;
double sumx,sumy,sumx2,sumxy;
double lxm,lym,loga3,a3,b3;
sumx=0;sumxy=0;
sumy=0;sumx2=0;
cout << endl <<"x"<<"\t"<<"y"<<"\t"<<"x"<<"\t"<<" logy" << "\n" ;
cout << "-------------------------------------------------";
for(i=0;i
{
sumx=sumx+x[i];
sumy=sumy+ly[i];
sumxy=sumxy+x[i]*ly[i];
sumx2=sumx2+x[i]*x[i];
}
lxm=sumx/n;
lym=sumy/n;
b3=(n*sumxy-sumx*sumy)/(n*sumx2-sumx*sumx);
loga3=lym-(b3*lxm);
a3=pow(e,loga3);
for(i=0;i
cout << endl << x[i] << '\t' << y[i] << '\t' << setprecision(6) << x[i] << '\t' << ly[i];
cout << endl << endl << "n = " << n << endl << "Σ(xi)(lnyi) = " << sumxy << '\t' << "Σx^2 = " << sumx2;
cout << endl << endl << "Σxi = " << sumx << '\t' << "average x = " << lxm;
cout << endl << "Σlnyi = " << sumy << '\t' << "average lny = " << lym;
cout << endl << endl << "b3 = " << b3 << endl << "a3 = " << a3 << endl;
}
for(i=0;i
{
sumx=sumx+x[i];
sumy=sumy+y[i];
sumxy=sumxy+x[i]*y[i];
sumx2=sumx2+x[i]*x[i];
}
xm=sumx/n;
ym=sumy/n;
a1=(n*sumxy-sumx*sumy)/(n*sumx2-sumx*sumx);
a0=ym-(a1*xm);
for(i=0;i
{
temp1[i]=(y[i]-ym)*(y[i]-ym);
temp2[i]=(y[i]-a1*x[i]-a0)*(y[i]-a1*x[i]-a0);
}
for(i=0;i
{
st=st+temp1[i];
sr=sr+temp2[i];
}
sy=sqrt(st/(n-1));
syx=sqrt(sr/(n-2));
r2=(st-sr)/st;
r=sqrt(r2);
cout << endl << "n = " << n << '\t' << "Σxiyi = " << sumxy << '\t' << "Σx^2 = " << sumx2;
cout << endl << "Σxi = " << sumx << '\t' << "average x = " << xm;
cout << endl << "Σyi = " << sumy << '\t' << "average y = " << ym;
cout << endl << endl << "a1 = " << a1 << endl << "a0 = " << a0;
cout << endl << endl << "y = " << a1 << "x + " << a0 ;
cout << endl << endl << " Sy = " << sy << endl << " Sy/x = " << syx;
cout << endl << " r^2 = " << r2 << endl << " r = " << r << endl;
}
#include
#include
#include
#define e 2.71828
void regress(int);
double x[20],y[20],ly[20];
double temp1[20],temp2[20];
void main()
{
int i,n;
cout << "Number of Data : ";
cin >> n;
cout << "Input x : ";
for(i=0;i
cout << endl << "Input y : ";
for(i=0;i
for(i=0;i
ly[i]=log(y[i]);
}
regress(n);
return;
}
void regress(int n)
{
int i;
double sumx,sumy,sumx2,sumxy;
double lxm,lym,loga3,a3,b3;
sumx=0;sumxy=0;
sumy=0;sumx2=0;
cout << endl <<"x"<<"\t"<<"y"<<"\t"<<"x"<<"\t"<<" logy" << "\n" ;
cout << "-------------------------------------------------";
for(i=0;i
sumx=sumx+x[i];
sumy=sumy+ly[i];
sumxy=sumxy+x[i]*ly[i];
sumx2=sumx2+x[i]*x[i];
}
lxm=sumx/n;
lym=sumy/n;
b3=(n*sumxy-sumx*sumy)/(n*sumx2-sumx*sumx);
loga3=lym-(b3*lxm);
a3=pow(e,loga3);
for(i=0;i
cout << endl << endl << "n = " << n << endl << "Σ(xi)(lnyi) = " << sumxy << '\t' << "Σx^2 = " << sumx2;
cout << endl << endl << "Σxi = " << sumx << '\t' << "average x = " << lxm;
cout << endl << "Σlnyi = " << sumy << '\t' << "average lny = " << lym;
cout << endl << endl << "b3 = " << b3 << endl << "a3 = " << a3 << endl;
}
for(i=0;i
sumx=sumx+x[i];
sumy=sumy+y[i];
sumxy=sumxy+x[i]*y[i];
sumx2=sumx2+x[i]*x[i];
}
xm=sumx/n;
ym=sumy/n;
a1=(n*sumxy-sumx*sumy)/(n*sumx2-sumx*sumx);
a0=ym-(a1*xm);
for(i=0;i
temp1[i]=(y[i]-ym)*(y[i]-ym);
temp2[i]=(y[i]-a1*x[i]-a0)*(y[i]-a1*x[i]-a0);
}
for(i=0;i
st=st+temp1[i];
sr=sr+temp2[i];
}
sy=sqrt(st/(n-1));
syx=sqrt(sr/(n-2));
r2=(st-sr)/st;
r=sqrt(r2);
cout << endl << "n = " << n << '\t' << "Σxiyi = " << sumxy << '\t' << "Σx^2 = " << sumx2;
cout << endl << "Σxi = " << sumx << '\t' << "average x = " << xm;
cout << endl << "Σyi = " << sumy << '\t' << "average y = " << ym;
cout << endl << endl << "a1 = " << a1 << endl << "a0 = " << a0;
cout << endl << endl << "y = " << a1 << "x + " << a0 ;
cout << endl << endl << " Sy = " << sy << endl << " Sy/x = " << syx;
cout << endl << " r^2 = " << r2 << endl << " r = " << r << endl;
}
소개글