¡Estoy buscando urgentemente un programa en lenguaje C para regresión lineal! ! !
#include?
#include?
#include?
¿nulo?análisis(doble?*?x,?doble?*?y,?int?n)?{
doble?d1,?d2,?d3,a,b;
double?sumx,sumy,sumxx,sumyy,sumxy,mx,my,mxx,myy,mxy;
int?i;
//?Inicialización de variables
d1?=?d2?=?d3?=sumx=sumy=sumxx=sumyy=sumxy=0.0;
//?Calcular el promedio de x e y
¿para?(i?=?0;?i?
sumx?+=?x[i];
sumy ?+=?y[i];
}
mx?=?sumx?/?n;
mi?=?sumy?/?n ;
printf("mx=%f?my=%f\n",mx,my);
//? Calcular el promedio de x, y y x*y
¿para?(i?=?0;?i?
sumxx?+=?x[i]*x[i];
sumyy?+=?y[i]*y[i];
sumxy?+=?x[i]*y[i];
}
mxx?=?sumxx?/?n;
myy?=?sumyy?/?n;
mxy?=?sumxy?/ ?n;
printf("mxx=%f?myy=%f?mxy=%f\n",mxx,myy,mxy);
//
a=(n*sumxy-sumx*sumy)/(n*sumxx-sumx*sumx);
b=(sumxx*sumy-sumx*sumxy)/(n*sumxx- sumx*sumx);
printf("a=%f?b=%f\n",a,b);
//?El componente de datos para calcular la correlación coeficiente
for?(i?=?0;?i?
d1?+=?(x[i]?-?mx ) ?*?(y[i]?-?mi);
d2?+=?(x[i]?-?mx)?*?(x[i]?-?mx)
d3?+=?(y[i]?-?mi)?*?(y[i]?-?mi);
}
double?r?=?d1?/?sqrt(d2?*?d3);
//
printf("Coeficiente de correlación r=%f\n", r );
//
doble?*yy=(doble*)malloc(tamañode(doble)*n);
doble?sumerrorsquare=0 , error;
for(i=0;i yy[i]=a*x[i]+b; sumaerrorcuadrado+=(yy[i]-y[i])*(yy[i]-y[i]); } error=sqrt(sumaerrorcuadrado/( n -1)); printf("Desviación estándar s(y)=%f\n",error); } int?main ( ){ doble?x[4]={1.0,3.0,3.0,9.0}; doble?y[4]={11.0,12.0,13.0,14.0}; análisis(x,y,4); retorno?0; }