1. 首页 > 教育

对于求一个类似于y=ax1+bx2的方程,控制变量进行一元线性回归和多元线性回归求系数,哪个更好?

对于求一个类似于y=ax1+bx2的方程,控制变量进行一元线性回归和多元线性回归求系数,哪个更好?

关于多元线性回归方程和一元线性回归方程

是依据误差的平方和最小这个条件来求回归系数的。

比如一元的,y=ax+b

E=∑(y-yi)^2=∑(axi+b-yi)^2

将a,b看成变量,则E的最小值需有其偏导数为0,即

E'a=2∑(axi+b-yi)xi=0

E'b=2∑(axi+b-yi)=0

由上面两个方程即可解出a,b.

多元的时候是一样的处理,比如两元:y=ax+bu+c

E=∑(y-yi)^2=∑(axi+bui+c-yi)^2

将a,b,c看成变量,则E的最小值需有其偏导数为0,即

E'a=2∑(axi+bui+c-yi)xi=0

E'b=2∑(axi+bui+c-yi)ui=0

E'c=2∑(axi+bui+c-yi)=0

由上面三个方程即可解出a,b,c.

急求一元线性回归的C语言程序!!!

#include <math.h>

#include <stdio.h>

#include <stdlib.h>

void analysis(double * x, double * y, int n) {

    double d1, d2, d3,a,b;

    double sumx,sumy,sumxx,sumyy,sumxy,mx,my,mxx,myy,mxy;

    int i;

    // 变量的初始化

    d1 = d2 = d3 =sumx=sumy=sumxx=sumyy=sumxy=0.0;

    // 计算x、y的平均值

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

        sumx += x[i];

        sumy += y[i];

    }

    mx = sumx / n;

    my = sumy / n;

    printf("mx=%f my=%f\n",mx,my);

    // 计算x、y平和x*y的平均值

    for (i = 0; i < n; 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);

    // 计算相关系数的数据组成部分

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

        d1 += (x[i] - mx) * (y[i] - my);

        d2 += (x[i] - mx) * (x[i] - mx);

        d3 += (y[i] - my) * (y[i] - my);

    }

    double r = d1 / sqrt(d2 * d3);

    //

    printf("相关系数r=%f\n",r);

    //

    double *yy=(double*)malloc(sizeof(double)*n);

    double sumerrorsquare=0,error;

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

        yy[i]=a*x[i]+b;

        sumerrorsquare+=(yy[i]-y[i])*(yy[i]-y[i]);

    }

    error=sqrt(sumerrorsquare/(n-1));

    printf("标准偏差s(y)=%f\n",error);

}

int  main(){

    double x[4]={1.0,3.0,3.0,9.0};

    double y[4]={11.0,12.0,13.0,14.0};

    analysis(x,y,4);

    return 0;

}

求线性回归方程

方法同二元线性回归方程。

令Z=∑(Y-Yi)^2=∑(a-bX1i+cX2i-Yi)^2,

求以下三元一次方程组的解即得a,b,c:

Z'a=2∑(a-bX1i+cX2i-Yi)=0

Z'b=-2∑X1i(a-bX1i+cX2i-Yi)=0

Z'c=2∑X2i(a-bX1i+cX2i-Yi)=0

求一元线性回归方程

y=0.8319x+27.603 其中a=0.8319 ,b=27.603 这个可以在Excel中用图表的方式直接表现出来