主要内容

非线性回归

这个例子展示了拟合非线性逻辑回归模型的两种方法。第一种方法使用极大似然(ML),第二种方法通过函数使用广义最小二乘(GLS)fitnlm从统计和机器学习工具箱™。

问题描述

逻辑回归是一种特殊类型的回归,其目标是将某事物的概率建模为其他变量的函数。考虑一组预测向量 x 1 ... x N 在哪里 N 观察的次数和 x 列向量是否包含 d 预测的 观察。的响应变量 x Z 在哪里 Z 表示一个带参数的二项随机变量 n ,试验次数,和 μ ,为试验成功的概率 .归一化响应变量为 Y Z / n -成功的比例 n 试验观察 .假定反应 Y 是独立的 1 ... N .为每一个

E Y μ

V 一个 r Y μ 1 - μ n

考虑建模 μ 作为预测变量的函数 x

在线性逻辑回归中,可以使用函数fitglm模型 μ 作为 x 如下:

日志 μ 1 - μ x T β

β 表示一组系数乘以预测因子 x .然而,假设你需要一个非线性函数在右边:

日志 μ 1 - μ f x β

统计和机器学习工具箱™中有用于拟合非线性回归模型的函数,但没有用于拟合非线性逻辑回归模型的函数。这个例子展示了如何使用工具箱函数来适应这些模型。

直接极大似然(ML)

ML方法使观测数据的对数似然最大化。用二项式概率(或密度)函数很容易计算出可能性binopdf函数。

广义最小二乘(GLS)

你可以用这个函数估计一个非线性逻辑回归模型fitnlm.这乍一看可能令人惊讶,因为fitnlm不适应二项分布或任何链接函数。然而,fitnlm如果指定了响应的均值和方差,可以使用广义最小二乘(GLS)进行模型估计。如果GLS是收敛的,那么它求解的是同一组非线性方程进行估计 β 也可以使用GLS对广义线性模型进行拟似然估计。也就是说,我们应该从GLS和ML中得到相同或等价的解。要实现GLS的估计,需要提供拟合的非线性函数和二项分布的方差函数。

均值或模型函数

模型函数描述了这一过程 μ 变化与 β .为fitnlm,模型函数为:

μ 1 1 + 经验值 - f x β

权函数

fitnlm方法将观察权重作为函数句柄接受“重量”名称-值对的论点。使用此选项时,fitnlm假设以下模型:

E Y μ

V 一个 r Y σ 2 w μ

在反应 Y 假设是独立的,和 w 是否接受自定义函数句柄 μ 并返回一个观察权值。换句话说,权重与响应方差成反比。对于逻辑回归模型中使用的二项分布,创建如下的权重函数:

w μ 1 V 一个 r y n μ 1 - μ

fitnlm对响应的方差进行建模 Y 作为 σ 2 / w μ 在哪里 σ 2 是GLS估计中存在的一个额外参数,但在逻辑回归模型中不存在。但是,这通常不会影响的估计 β ,它提供了一个“色散参数”来检查假设 Z 值具有二项分布。

使用的优点fitnlm优于直接ML的是,您可以执行假设检验并计算模型系数的置信区间。

生成示例数据

为了说明ML和GLS拟合之间的区别,生成一些示例数据。假设 x 是一维的,假设是真函数吗 f 在非线性逻辑回归模型中为参数化的Michaelis-Menten模型 2 × 1 向量 β

f x β β 1 x β 2 + x

Myf = @(β,x) β (1)*x /(β (2) + x);

创建一个指定之间关系的模型函数 μ 而且 β

Mymodelfun = @(beta,x) 1。/ (1 + exp (-myf(β,x)));

创建一个一维预测向量和真实系数向量 β

rng (300“旋风”);x = linspace (1200);β= (10;2);

计算一个向量 μ 每个预测器的值。

μ= mymodelfun(β,x);

生成的反应 z 成功概率的二项分布 μ 试验的次数 n

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值为 β 1 而且 β 2 表示两个系数均显著不同于 0

比较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吻合。”

图中包含一个axes对象。标题为Data y的axis对象以及ML和GLS适合。包含3个line类型的对象。这些对象表示Data、ML、GLS。

ML和GLS产生相似的拟合值。

用ML和GLS绘制估计的非线性函数

绘制真实模型 f x β .的初始估计添加图 f x β 使用 β β 0 和基于估计的ML和GLS的图 f x β

图绘制(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的比较。”

图中包含一个axes对象。用ML和GLS比较真实的f和估计的f。包含4个line类型的对象。这些对象表示True f, Initial f, Estimated f with ML, Estimated f with GLS。

估计的非线性函数 f 使用ML和GLS方法都接近真实的非线性函数 f .您可以使用类似的技术来拟合其他非线性广义线性模型,如非线性泊松回归。

Baidu
map