非线性回归
这个例子展示了拟合非线性逻辑回归模型的两种方法。第一种方法使用极大似然(ML),第二种方法通过函数使用广义最小二乘(GLS)fitnlm
从统计和机器学习工具箱™。
问题描述
逻辑回归是一种特殊类型的回归,其目标是将某事物的概率建模为其他变量的函数。考虑一组预测向量 在哪里 观察的次数和 列向量是否包含 预测的 观察。的响应变量 是 在哪里 表示一个带参数的二项随机变量 ,试验次数,和 ,为试验成功的概率 .归一化响应变量为 -成功的比例 试验观察 .假定反应 是独立的 .为每一个 :
.
考虑建模 作为预测变量的函数 .
在线性逻辑回归中,可以使用函数fitglm
模型
作为
如下:
与 表示一组系数乘以预测因子 .然而,假设你需要一个非线性函数在右边:
统计和机器学习工具箱™中有用于拟合非线性回归模型的函数,但没有用于拟合非线性逻辑回归模型的函数。这个例子展示了如何使用工具箱函数来适应这些模型。
直接极大似然(ML)
ML方法使观测数据的对数似然最大化。用二项式概率(或密度)函数很容易计算出可能性binopdf
函数。
广义最小二乘(GLS)
你可以用这个函数估计一个非线性逻辑回归模型fitnlm
.这乍一看可能令人惊讶,因为fitnlm
不适应二项分布或任何链接函数。然而,fitnlm
如果指定了响应的均值和方差,可以使用广义最小二乘(GLS)进行模型估计。如果GLS是收敛的,那么它求解的是同一组非线性方程进行估计
也可以使用GLS对广义线性模型进行拟似然估计。也就是说,我们应该从GLS和ML中得到相同或等价的解。要实现GLS的估计,需要提供拟合的非线性函数和二项分布的方差函数。
均值或模型函数
模型函数描述了这一过程
变化与
.为fitnlm
,模型函数为:
权函数
fitnlm
方法将观察权重作为函数句柄接受“重量”
名称-值对的论点。使用此选项时,fitnlm
假设以下模型:
在反应 假设是独立的,和 是否接受自定义函数句柄 并返回一个观察权值。换句话说,权重与响应方差成反比。对于逻辑回归模型中使用的二项分布,创建如下的权重函数:
fitnlm
对响应的方差进行建模
作为
在哪里
是GLS估计中存在的一个额外参数,但在逻辑回归模型中不存在。但是,这通常不会影响的估计
,它提供了一个“色散参数”来检查假设
值具有二项分布。
使用的优点fitnlm
优于直接ML的是,您可以执行假设检验并计算模型系数的置信区间。
生成示例数据
为了说明ML和GLS拟合之间的区别,生成一些示例数据。假设 是一维的,假设是真函数吗 在非线性逻辑回归模型中为参数化的Michaelis-Menten模型 向量 :
Myf = @(β,x) β (1)*x /(β (2) + x);
创建一个指定之间关系的模型函数 而且 .
Mymodelfun = @(beta,x) 1。/ (1 + exp (-myf(β,x)));
创建一个一维预测向量和真实系数向量 .
rng (300“旋风”);x = linspace (1200);β= (10;2);
计算一个向量 每个预测器的值。
μ= mymodelfun(β,x);
生成的反应 成功概率的二项分布 试验的次数 .
n = 50;z = binornd (n,μ);
规范化的反应。
y = z / n;
毫升的方法
ML方法将负对数似然定义为
向量,然后用一个优化函数最小化它,比如fminsearch
.指定beta0
作为的起始值
.
Mynegloglik = @(beta) -sum(log(binopdf(z,n,mymodelfun(beta,x))));beta0 = [3; 3);选择= optimset (“fminsearch”);选择。MaxFunEvals =正;选择。麦克斯特= 10000;betaHatML = fminsearch (mynegloglik beta0选择)
betaHatML =2×19.9259 - 1.9720
的估计系数betaHatML
是否接近的真实值(10; 2)
.
gl的方法
GLS方法创建了一个权函数fitnlm
先前描述。
Wfun = @(xx) n./(xx.*(1-xx));
调用fitnlm
具有自定义的平均值和权重函数。指定beta0
作为的起始值
.
nlm = fitnlm (x, y, mymodelfun beta0,“重量”wfun)
nlm =非线性回归模型:y ~ F(beta,x)估计系数:估计SE tStat pValue ________ _______ ______ __________ b1 9.926 0.83135 11.94 4.193e-25 b2 1.972 0.16438 11.996 2.8182e-25观察数:200,误差自由度:198均方根误差:1.16 r -平方:0.995,调整后的r -平方0.995 F-statistic与零模型:1.88e+04, p-value = 2.04e-226
估算
从安装NonLinearModel
对象nlm
.
betaHatGLS = nlm.Coefficients.Estimate
betaHatGLS =2×19.9260 - 1.9720
在ML方法中,估计的系数betaHatGLS
是否接近的真实值(10; 2)
.小p值为
而且
表示两个系数均显著不同于
.
比较ML和GLS方法
比较的估计 .
max (abs (betaHatML - betaHatGLS))
ans = 1.1460 e-05
使用ML和GLS比较拟合值
yHatML = mymodelfun(betaHatML,x);yHatGLS = mymodelfun (betaHatGLS x);max (abs (yHatML - yHatGLS))
ans = 1.2746 e-07
ML和GLS方法产生了类似的解决方案。
使用ML和GLS绘制拟合值
图绘制(x, y,‘g’,“线宽”, 1)在情节(x, yHatML,“b”,“线宽”1)图(x, yHatGLS“m——”,“线宽”1)传说(“数据”,毫升的,“gl”,“位置”,“最佳”)包含(“x”) ylabel ('y和拟合值')标题(“数据与ML和GLS吻合。”)
ML和GLS产生相似的拟合值。
用ML和GLS绘制估计的非线性函数
绘制真实模型 .的初始估计添加图 使用 和基于估计的ML和GLS的图 .
图绘制(x, myf(β,x)“r”,“线宽”, 1)在情节(x, myf (beta0 x),“k”,“线宽”1)图(x, myf (betaHatML x),“c——”,“线宽”1)图(x, myf (betaHatGLS x),b -。,“线宽”1)传说(“真正f ',“初始f”,'估计f与ML',...“用GLS估计f”,“位置”,“最佳”)包含(“x”) ylabel ('真f和估计f')标题(“真实f与使用ML和GLS估计f的比较。”)
估计的非线性函数 使用ML和GLS方法都接近真实的非线性函数 .您可以使用类似的技术来拟合其他非线性广义线性模型,如非线性泊松回归。