如何使用R软件求解回归多项式

Python021

如何使用R软件求解回归多项式,第1张

R软件还真没用过。

不过做回归分析,我一般用Eviews(因为它不只有古典的回归分析,还可以做时间序列分析)

做统计特征分析,我喜欢有spss(他在样本的分析方面功能很强,但它也能做古典回归分析)

另外还有sas,这个我没用过。

我现在说下用Eviews做多项式回归分析方法吧:先输入数据,简单起见就导入excel的数据吧,

file->open->foreign data as workfile.

然后做分析quick->estimate equation

跳出来的窗口就是古典回归分析的窗口了,

然后输入要回归的方程,比如做2次多项式回归:

Y = c(1) + c(2)*X + c(3)*X^2

其中X,Y为你的数据序列对应的名字,如果没有命名,好像应该是series01,series02

在应用多项式回归时,阶数一般不要超过三阶。

在许多实际问题分析中,回归分析的应用十分广泛,它是处理变量之间相关关系最常用的一种统计方法。回归分析可分为线性回归和非线性回归。

但是在处理许多实际问题时,同学们要明白变量间的关系并非直线关系,例如细菌生长曲线、药物动力学、毒物剂量与动物死亡率的关系等等。

此时,同学们若采用线性回归分析将丢失大量信息,甚至得出错误结论。因此就需同学们采用非线性回归模型来处理此类问题。

非线性回归的背后

在日常生活中同学们要知道非线性回归有多种形式,包括双曲线、二次曲线、三次曲线、幂函数曲线、指数函数曲线、S形曲线、对数曲线、指数曲线等。

除此之外同学们要注意的是非线性回归分析的关键是确定函数的具体形式。通常需要根据科学研究或生产实际中的具体问题或试验数据的特征做出合适的选择。

局部多项式回归拟合是对两维散点图进行平滑的常用方法,它结合了传统线性回归的简洁性和非线性回归的灵活性。当要估计某个响应变量值时,先从其预测变量附近取一个数据子集,然后对该子集进行线性回归或二次回归,回归时采用加权最小二乘法,即越靠近估计点的值其权重越大,最后利用得到的局部回归模型来估计响应变量的值。用这种方法进行逐点运算得到整条拟合曲线。 

在R语言中进行局部多项式回归拟合是利用loess函数,我们以cars数据集做为例子来看下使用方法。该数据中speed表示行驶速度,dist表示刹车距离。用loess来建立模型时重要的两个参数是span和degree,span表示数据子集的获取范围,取值越大则数据子集越多,曲线越为平滑。degree表示局部回归中的阶数,1表示线性回归,2表示二次回归,也可以取0,此时曲线退化为简单移动平均线。这里我们设span取0.4和0.8,从下图可见取值0.8的蓝色线条较为平滑。 

------------------------

plot(cars,pch=19)

model1=loess(dist~speed,data=cars,span=0.4)

lines(cars$speed,model1$fit,col='red',lty=2,lwd=2)

model2=loess(dist~speed,data=cars,span=0.8)

lines(cars$speed,model2$fit,col='blue',lty=2,lwd=2)

------------------------

当模型建立后,也可以类似线性回归那样进行预测和残差分析 

------------------------

x=5:25

predict(model2,data.frame(speed=x))

plot(model2$resid~model2$fit)

------------------------

R语言中另一个类似的函数是lowess,它在绘图上比较方便,但在功能上不如loess强大和灵活。 

------------------------ 

plot(cars,pch=19) 

lines(lowess(cars),lty=2,lwd=2) 

------------------------ 

LOESS的优势是并不需要确定具体的函数形式,而是让数据自己来说话,其缺点在于需要大量的数据和运算能力。LOESS作为一种平滑技术,其目的是为了探寻响应变量和预测变量之间的关系,所以LOESS更被看作一种数据探索方法,而不是作为最终的结论。