当前位置: 首页 > 后端技术 > Python

Generalizedlinearmodel(GLM)及其应用

时间:2023-03-26 14:49:19 Python

广义线性模型[generalizelinearmodel(GLM)]是线性模型的扩展,建立响应变量的数学期望与线性模型的预测变量之间的关系通过链接功能组合。它的特点是不强行改变数据的自然测度,可以具有非线性和非恒定方差结构。它是线性模型在研究响应值的非正态分布和非线性模型简洁直接的线性变换方面的发展。在广义线性模型的理论框架中,假设目标变量Y服从指数分布族,正态分布和伯努利分布都属于指数分布族,因此线性回归和逻辑回归可以看作是广义线性模型的特例。这是概率分布及其规范链接函数的列表。正态分布:恒等函数泊松分布:对数函数二项分布:对数函数另外,我们还可以自定义连接函数。如果不喜欢自己写,可以使用statsmodels函数中实现的各种连接,Stan、PyMC3、TensorFlowProbability等概率编程框架也有提供。链接函数也译作链接函数。这里用link函数比较贴切,所以还是译为链接函数。线性回归线性回归用于通过解释变量X的线性组合来预测连续变量y的值。在单变量情况下,如果模型假设噪声项呈正态分布,则线性回归可以表示如下。模型规范遵循泊松回归。泊松分布用于模拟计数数据。它只有一个参数代表分布的均值和标准差。这意味着均值越大,标准差越大。如果我们对数据应用泊松回归。结果应该是这样的。预测曲线是指数曲线,因为对数链接函数的反函数是指数函数。由此也可以清楚地看出,由线性预测器计算的泊松回归参数保证为正。下面是泊松回归的示例代码============泊松回归#生成模拟数据np.random.seed(5)n_sample=100a=0.6b=-0.4x=uniform(1,5,size=n_sample)mu=np.exp(a*x+b)y=poisson(mu)importstatsmodels.apiassmexog,endog=sm.add_constant(x),y#泊松回归mod=sm.GLM(endog,exog,family=sm.families.Poisson(link=sm.families.links.log()))res=mod.fit()display(res.summary())y_pred=res.predict(exog)idx=x.argsort()x_ord,y_pred_ord=x[idx],y_pred[idx]plt.plot(x_ord,y_pred_ord,color='m')plt.scatter(x,y,s=20,alpha=0.8)plt.xlabel("X")plt.ylabel("Y")粉色曲线是泊松回归的预测。Logistic回归如果使用logit函数作为链接函数,使用二项/伯努利分布作为概率分布,则该模型称为逻辑回归。第二个等式的右边称为逻辑函数。因此,该模型称为逻辑回归。logistic函数对任何输入返回一个介于0和1之间的值,它是适用于二项分布的链接函数。逻辑回归就是我们经常看到的。总结如果要进行“广义线性模型(GLM)”分析,只需要提取我们需要的链接函数即可。它的作用是将Y和X之间的非线性关系转化为线性关系,我们可以自己编写需要的连接函数。在实际使用中,我们只需要假设连接函数和方差函数是正确的,我们甚至不需要关心分布。如果使用一些典型的连接函数,则可以假定方差函数。所以其实广义线性模型的要点是:链接函数和/或方差函数必须假设是正确的,所以才可以。本文代码:https://avoid.overfit.cn/post/eb42f5cb4a534dfa9844600acb1fc546作者:Ranasingh