基于spss的非线性回归(non-linear regression)

  • 一、简介
  • 1、非线性回归
  • 2、非线性回归模型
  • 二、基于spss的操作
  • 1、分析步骤
  • (1)做散点图
  • (2)估计初始值
  • (3)参数设置
  • (4)损失函数设置
  • (5)参数约束设置
  • (6)保存设置
  • (7)算法设置
  • 2、结果解释
  • 参考文章


一、简介

1、非线性回归

 非线性关系可以分为本质是线性关系的非线性关系完全非线性关系,有点拗口。在曲线回归总已经介绍,可以通过变量装换,转化为线性关系,并进行线性回归分析的就是本质是线性关系的非线性关系。如果无法通过变量装换,转化为线性关系,无法进行线性回归分析的叫完全非线性关系。这里我们介绍的非线性关系就是完全非线性关系的回归分析。

  1. 可线性化问题:处理可线性化处理的非线性回归的基本方法是,通过变量变换,将非线性回归化为线性回归,然后用线性回归方法处理。假定根据理论或经验,已获得输出变量与输入变量之间的非线性表达式,但表达式的系数是未知的,要根据输入输出的n次观察结果来确定系数的值。按最小二乘法原理来求出系数值,所得到的模型为非线性回归模型(nonlinear regression model)。
  2. 不可线性化问题:对实际科学研究中常遇到不可线性处理的非线性回归问题,提出了一种新的解决方法。该方法是基于回归问题的最小二乘法,在求误差平方和最小的极值问题上,应用了最优化方法中对无约束极值问题的一种数学解法——单纯形法。应用结果证明,这种非线性回归的方法算法比较简单,收敛效果和收敛速度都比较理想。

2、非线性回归模型

python非线性回归sklearn spass非线性回归_损失函数

二、基于spss的操作

 案例分析:某省农科院新培育了一种高产量农作物,并在海南的试验田中进行实验种植,现有试验田施肥量及其对应的农作物产量数据,根据该数据文件推定施肥量与产量之间的关系。

1、分析步骤

(1)做散点图

 观察施肥量与农作物产量的关系;选择菜单【图形】-【旧对话框】-【散点/点状】,将施肥量选为自变量,产量选为因变量。

(2)估计初始值

python非线性回归sklearn spass非线性回归_算法_02要确定回归方程,首先要估算b1、b2、b3的初始值。
由散点图看出,产量最大值接近13,不妨设b1=13;x=0时,y=6,故b2=6-13=-7;b3为散点图中两个分隔较宽的点之间的连线的斜率的倒数,在此取b3=-1.5。
(ps:这里我觉得可以用matlab或者py神经网络这些来输出个拟合函数作为初始值,就是不知道会不会出现输入值初始值=输出参数值的问题,可能是过拟合?)

(3)参数设置

 参数设置;选择【分析】-【回归】-【非线性】菜单,打开非线性回归对话框。按照下图输入数据。

python非线性回归sklearn spass非线性回归_线性回归_03

(4)损失函数设置

 单击“损失”,设置损失函数。所谓损失函数是指一个包括当前工作文件中的变量以及所设定的参数并通过计算法使之最小化的函数。系统默认状态下,非线性回归过程根据算法将残差平方和最小化为损失函数。如果选择“用户定义的损失函数”,可以再“用户定义的损失函数”列表框中键入或者粘贴一个表达式。字符串常数必须包含在引号或撇号中,数字常数必须按以美式格式键入,并用句点作为小数分隔符。本案例选择系统默认设置。单击“继续”。

python非线性回归sklearn spass非线性回归_python非线性回归sklearn_04

(5)参数约束设置

 参数约束设置;单击“约束,定义参数约束。“约束”是在对解的迭代搜索过程中对参数所允许值的限制。该对话框有两个设置选项:“未约束”和“定义参数约束”。

python非线性回归sklearn spass非线性回归_python非线性回归sklearn_05

(6)保存设置

 保存设置;单击“保存”,该对话框提供4种用于保存的数据类型,允许作为新变量的观测值保存于当前文件中。

python非线性回归sklearn spass非线性回归_线性回归_06

(7)算法设置

 单击“选项”,该对话框用于设置参数估计的算法和算法的迭代次数、迭代步长和收敛条件等。

python非线性回归sklearn spass非线性回归_线性代数_07

2、结果解释

python非线性回归sklearn spass非线性回归_算法_08


python非线性回归sklearn spass非线性回归_算法_09

python非线性回归sklearn spass非线性回归_线性回归_10

  1. 如上图所示,该案例经过多大20步的迭代估计之后,找到模型的最优解,即 b1、b2、b3的参数估计值13.348、-10.783和-0.418,此外还得到了三个参数值的标准误差和95%置信区间,以及三个参数估计值的相关系数,可以看出各个参数值之间的相关性很高,尤其是b1和b3的相关系数达到0.968,属非常显著的相关关系。
  2. 根据上表回归模型的方差分析结果,表中回归行的平方和代表该回归模型所能解释的模型的方差变化,而残差行的平方和代表该非线性回归模型所不能解释的方差变化。二者的和即为未修正的总计,它是总的残差平方和,而python非线性回归sklearn spass非线性回归_算法_11说明该模型能解释因变量90.7%的变异量,即该非线性模型的拟合优度很高。根据以上分析可以确定,该分析所获得的回归模型显著。
    根据线性回归模型:python非线性回归sklearn spass非线性回归_线性代数_12
    可得回归方程:python非线性回归sklearn spass非线性回归_线性代数_13

从散点图可以知道,目前采集到的数据还不足够,因为图中没有出现明显的平缓趋势。为了找到最合适的施肥量,可以通过得到的回归方程,做出自变量(施肥量)范围更广的曲线,找出曲线的平缓位置,这个位置对应的横轴值就是合理的施肥量。