C语言做线性分析,C语言版的线性回归分析函数

本文分享了一段1993年的C语言代码,用于进行一元和多元线性回归分析。代码包括求解线性回归方程、计算回归和剩余平方和以及相关指标,并提供了实例计算和显著性检验。此外,还介绍了线性方程求解函数,适用于多元线性回归分析。
摘要由CSDN通过智能技术生成

前几天,清理出一些十年以前

DOS

下的程序及代码,看来目前也没什么用了,想打个包刻在光碟上,却发现有些代码现在可能还能起作用,其中就有计算一元回归和多元回归的代码,一看代码文件时间,居然是

1993

年的,于是稍作整理,存放在这,分析虽不十分完整,但一般应用是没问题的,最起码,可提供给那些刚学

C

的学生们参考。

先看看一元线性回归函数代码:

//

求线性回归方程:Y=a+bx

//

dada[rows*2]数组:X,Y;rows:数据行数;a,b:返回回归系数

//

SquarePoor[4]:返回方差分析指标:回归平方和,剩余平方和,回归平方差,剩余平方差

//

返回值:0求解成功,-1错误

int

LinearRegression(

double

*

data,

int

rows,

double

*

a,

double

*

b,

double

*

SquarePoor)

{

int

m;

double

*

p,Lxx

=

0.0

,Lxy

=

0.0

,xa

=

0.0

,ya

=

0.0

;

if

(data

==

0

||

a

==

0

||

b

==

0

||

rows

<

1

)

return

-

1

;

for

(p

=

data,m

=

0

;m

<

rows;m

++

)

{

xa

+=

*

p

++

;

ya

+=

*

p

++

;

}

xa

/=

rows;

//

X平均值

ya

/=

rows;

//

Y平均值

for

(p

=

data,m

=

0

;m

<

rows;m

++

,p

+=

2

)

{

Lxx

+=

((

*

p

-

xa)

*

(

*

p

-

xa));

//

Lxx=Sum((X-Xa)平方)

Lxy

+=

((

*

p

-

xa)

*

(

*

(p

+

1

)

-

ya));

//

Lxy=Sum((X-Xa)(Y-Ya))

}

*

b

=

Lxy

/

Lxx;

//

b=Lxy/Lxx

*

a

=

ya

-

*

b

*

xa;

//

a=Ya-b*Xa

if

(SquarePoor

==

0

)

return

0

;

//

方差分析

SquarePoor[

0

]

=

SquarePoor[

1

]

=

0.0

;

for

(p

=

data,m

=

0

;m

<

rows;m

++

,p

++

)

{

Lxy

=

*

a

+

*

b

*

*

p

++

;

SquarePoor[

0

]

+=

((Lxy

-

ya)

*

(Lxy

-

ya));

//

U(回归平方和)

SquarePoor[

1

]

+=

((

*

p

-

Lxy)

*

(

*

p

-

Lxy));

//

Q(剩余平方和)

}

SquarePoor[

2

]

=

SquarePoor[

0

];

//

回归方差

SquarePoor[

3

]

=

SquarePoor[

1

]

/

(rows

-

2

);

//

剩余方差

return

0

;

}

为了理解代码,把几个与代码有关的公式写在下面(回归理论和公式推导就免了,网上搜索到处是,下面的公式图片也是网上搜的,有些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值