Matlab并没有提供现成的函数来进行logistic回归分析。但提供了非线性相关函数,所以想办法编一个函数来进行logistic回归分析。
编写函数:
function yhat = logit(beta,x)
b1 = beta(1);
b2 = beta(2);
yhat=exp(b1+b2x)/(1+exp(b1+b2x)); %为了完成如下函数形式。
调用实例:
clear;
clc;
clg;
ck=[20;60;100;140;180;220;260;300;340;380;420;460;500];
response=[2/90;13/39;30/38;30/35;1;19/20;18/19;13/14;1;1;1;1;1];
beta=[05 05];
betahat = nlinfit(ck,response,@logit,beta);
plot(ck,response,'o');
hold on;
plot(ck,logit(betahat,ck),'r');
不过得注意的是,这里是用least-squares parameter estimates(即最小二乘)来估计参数的,而SPASS可能是用极大似然法来估计参数的,所以两个软件计算结果可能会不同。
也可能是自己程序编写有误,只能在以后实践中来发现错误了。
这比较专业的提示, 这个逻辑回归用极大似然估计来计算最优参数, 计算过程就是不断迭代, 如果你没有学过极大似然估计你就无法理解这种提示, 总之就是迭代到一定程度, 结果无法再优化了, 但是也没有达到模型拟合的标准, 你, 这往往是数据不好导致的, 我看你的分类数目太多了, 是不是各类下数据量太小了
Logistic人口预测模型是在Malthus模型基础上改进的,该模型考虑有限资源下容纳的最大人口数量Nm。该模型函数表达式为
N(t)=Nm/[1+(Nm/N0-1)exp(-r(t-t0))]
式中:N0=6505,t0=1998
现根据题主提供的数据,利用matlab软件对该方程的系数,用回归分析的方法求出其Nm和r值,实现方法如下:
1、输入数据,即
t=1998:2018;
x=[。。。。。。];
2、定义函数,fun=@(a,t)a(1)/(1+(a(1)/6502-1)exp(a(2)(t-1998)));
3、使用lsqcurvefit函数,求得系数Nm{fun函数中的a(1)},r{fun函数中的a(2)},即
a=lsqcurvefit(fun,a0,t,x) 其中:a0为初值
4、使用拟合后fun函数,得到拟合后的N(t)值
5、使用plot函数绘出拟合前与拟合后的对比图形
6、完善代码后运行可得如下结果。
地球在漫长的岁月中经历了多次非均匀,非线性的地质作用,地下的岩性,物性均显现出很强的非均匀,非线性特性
自然界环境的变化具有独特的规律,其时间的长久和空间的广阔是远非人工系统所能比拟的一个矿床生成大约需104~106年,在时间长河(46×109年)中只不过是瞬间产物成矿系统和生物系统一样是不可逆演化的自然系统,成矿过程和生命过程都是在不断与环境斗争和增强对环境变化的适应性中进行的成矿系统的自控制和自适应能力表现在充分利用和耗散环境提供的物质、能量和信息,使得成矿物质产生自发相干运动或自组织作用由于成矿环境变化无常,成矿物质必须具有强大的适应力,否则将被淘汰,“物择天演、优胜劣败、适者生存”的进化论原则在此完全适用只有哪些自适应能力很强的矿物才能生存,这就是天然矿物种数仅以千计的基本原因
在地质环境中,地质物质始终是运动着的,元素既发生某种程度的富集,同时又不可避免地分散我们考虑地壳中的某个区域,假设该区域元素的迁移速率和向外分散速率均为常数;被富集的元素反过来参与自身的富集和分散记时刻t时的该区域某元素的含量或某矿物储量为X(t),初始时刻(t=0)元素的含量为X0由以上假设可得:
分形混沌与矿产预测
式中a>0是(迁移)富集速率,b>0是(向外)分散速率,A(常数)是某矿物总储量,Δt为时间增量
由(641)和(642)式可得:
分形混沌与矿产预测
根据物质守恒条件,即A+X=B(常数),将A=B-X代入(643)式可得
分形混沌与矿产预测
(644)式可改写成迭代方程形式:
分形混沌与矿产预测
其中μ=aB-b+1作变量代换,令x=aX/μ,则(645)式化为:
分形混沌与矿产预测
(646)式事实上是逻辑斯蒂(Logistic)映射μ称为成矿潜能
注:元素富集可导致该元素含量高的区域范围逐步变小元素分散可导致该元素含量低的区域范围逐步变大
对于式(646)迭代方程的动力学特征,许多文献已有详细的研究
方程(646)的迭代结果与参数μ都有敏感的依赖关系在0<xn<1区域内,当μ变化时,xn的逐渐变化情况可综合如下:
(1)当0<μ≤1时,xn只简单地减少,当n→∞时,xn→0
(2)当1<μ≤2时,xn只简单地增加,最后为xn→1-1/μ
(3)当2<μ≤3时,xn随着衰减所振动而逐渐接近1-1/μ
(4)当时,xn逐渐接近周期为2的振动
(5)当时,在区域内xn的平衡值变化是非常复杂的(图6-2)首先随着μ的增加,逐渐出现周期4,周期8,…,…,和周期2n出现周期2∞时,μ大约为3569945672…
因为元素含量不能为负数,所以要使方程(646)有意义,xn的取值范围0<xn<1在此范围内,xn+1的极大值出现在xn=1/2处,相应地xn+1=μ/4由此可知,要使xn+1不大于1,则要求μ<4所以参数μ的取值范围为1<μ<4
图6-2 分岔图:逻辑斯蒂(Logistic)映射xn+1=μxn(1-xn)的周期
迭代方程(646)有两个稳定不动点,x=0或x=1-1/μ在稳定不动点x=1-1/μ处,当1<μ≤3时是稳定的,当μ>3时是不稳定的当3<μ<35699…时,迭代过程出现倍周期分叉现象,即形成周期为T=2n(n=1,2,3,…)的振荡当μ≥35699…时,倍周期分叉现象突然中断,迭代过程出现混沌性态,即体系进入混沌区域,出现无限长周期振荡因此,适当调整控制参数μ是十分重要的
以上模型可以解释元素与矿化的分布特征例如地壳中元素含量分布以及大小矿床之间分布存在着自相似结构,同迭代方程(646)的解在倍周期分叉点附近出现了自相似结构类似当35699…<μ<4时,迭代过程出现混沌性态,即xn显现无穷多个不同的值这类似于地壳中元素含量与矿化不均匀分布的情况系统的演化进入混沌状态后,无论初始值x0取0和1之间的任何值,都将导致元素含量发生不均匀富集当μ≤1时,迭代方程(646)稳定不动点为0,非成矿区,代表均匀无序的封闭系统当1<μ<4时,成矿区,属非均一有序的开放系统,具有非线性特征其中当1<μ≤2时,由于潜能低,稳定不动点也低,代表含矿岩的形成条件,如沉积或沉积变质的铁质岩、铝质岩、锰质岩、磷质岩等;当2<μ≤3时,由于稳定不动点增高,是重要的成矿阶段,代表层控型矿床的形成;当3<μ<4时,由于非线性增强,具有周期性稳定轨道,矿床空间含矿率变化大,代表热液交代和层风化成矿特点,是极其重要的成矿条件在混沌的边界可能是产生大型、超大型矿床的条件
地质环境中非线性过程的相互作用是造成地壳元素与矿化不均匀分布的根本原因,并导致了元素含量与大小矿床分布的分形结构
在地球形成以来的演化过程中,尽管该过程极其复杂,但各种成矿作用(元素富集过程)似乎在地壳的一些“固定点(区域)”在“吸引”着成矿过程的轨迹
以上现象并非偶然,其深刻的背景原因在于矿床形成是在混沌中进行的,矿床储量和空间分布服从分形分布混沌吸引子是分形集,这点正是成矿活动这个活动系统演化的吸引子在空间下的表现形式
现在用实际数据和数理统计方法来估计模型(646)中的参数μ值
根据以上分析,给出μ赋值原则:当单元内无矿床时,参数μ的取值范围μ≤2;当单元内有小型矿床时(1~2个),参数μ的取值范围2<μ≤3;当单元内有小型矿床(3个以上)或中型矿床时,参数μ的取值范围3<μ≤356;当单元内有大型、超大型矿床时,参数μ的取值范围356<μ≤4
我们在新疆某研究区内共划分金矿床密集区和金异常密集区30处,其中金矿床密集区有16处,占单元总数的53%,金异常密集区有14处,占单元总数的47%其中在两个单元内存在大型金矿床在研究区30个单元中,其中16个为有金矿床单元,14个为预测单元在地质、物探、化探、重砂等资料研究的基础上提取了综合信息地质变量(见表6-4),通过这些地质变量(自变量)建立数量化理论Ⅰ的数学模型数量化理论Ⅰ与回归分析都是用于定量因变量的预测问题,数量化理论Ⅰ着重考虑自变量为实性变量的回归分析首先标出各自变量之间以及自变量和因变量(即参数μ)之间的相关系数矩阵,然后用逐步回归分析方法选出少数与因变量关系密切的自变量,求出回归系数,得到以下回归方程
分形混沌与矿产预测
其中x48代表金元素异常强度
x53代表伴生元素高温异常组合特征异常强度(Mo)
x59代表伴生元素高温异常组合特征异常面积(Mo)
x66代表伴生元素中温异常组合特征异常强度(Zn)
x82代表伴生元素低温异常组合特征异常面积(Ag)
x83代表伴生元素低温异常组合特征异常面积(As)
x84代表伴生元素低温异常组合特征异常面积(Hg)
x4代表隐伏基底
x7代表泥盆火山岩性
x15代表基性超基性岩体
x23代表航磁早期构造
x32代表航磁北西
x33代表航磁东西
x37代表重磁吻合南北
研究区内16个有金矿床单元的参数μ的具体取值见表6-5
表6-4 地质变量表
续表
表6-5 金矿床单元的参数μ值
利用以上数学模型,得到该区14个预测单元的参数μ的估计值,见表6-6
表6-6 预测单元的参数μ的估计值
根据表6-6中的预测单元参数μ的估计值,可以得出以下预测结果:1、11、12、16和28号单元的参数μ估计值大于3,表明这些单元内有金矿床存在,其中16和12号可能存在大型金矿床该预测结果与用其他方法(例如特征分析)的预测结果大体一致我们用实际数据来估计模型(646)中的参数μ值,从而为预测金矿床提供另一新的途径
自己看过一些资料后,确定r中不能像Sas一样在logistic回归程序中增加一个选项来实现分层logistic回归。可能的做法是将数据集按照分层变量拆分成几个亚数据集,然后再采用普通logistic回归来分析。这样来看的话,R相对Sas还是有一些局限的,细微的功能上不如Sas
资料目录:
1 LogisticRegression()参数解析
2 sklearn-GridSearchCV,CV调节超参使用方法
=====================================================================
C : float, optional (default=10)
Inverse of regularization strength; must be a positive float Like in support vector machines, smaller values specify stronger regularization
C为正则化系数λ的倒数,必须为正数,默认为1。和SVM中的C一样,值越小,代表正则化越强。
class_weight : {dict, ‘auto’}, optional 考虑类不平衡,类似于代价敏感
Over-/undersamples the samples of each class according to the given weights If not given, all classes are supposed to have weight one The ‘auto’ mode selects weights inversely proportional to class frequencies in the training set
penalty : 正则化参数:’l1’,’l2’默认是’l2’。
在调参时如果我们主要的目的只是为了解决过拟合,一般penalty选择L2正则化就够了。但是如果选择L2正则化发现还是过拟合,即预测效果差的时候,就可以考虑L1正则化。 另外,如果模型的特征非常多,我们希望一些不重要的特征系数归零,从而让模型系数稀疏化的话,也可以使用L1正则化。
penalty参数的选择会影响我们损失函数优化算法的选择。即参数solver的选择。
solver: 逻辑回归损失函数的优化方法,有四种算法供选择
‘newton-cg’:坐标轴下降法来迭代优化损失函数
‘lbfgs’:, ‘liblinear’:牛顿法变种
‘sag’:随机梯度下降
其中‘newton-cg’, ‘lbfgs’, ‘sag’只适用于L2惩罚项的优化,liblinear两种都适用。因为L1正则化的损失函数不是连续可导的,而{‘newton-cg’, ‘lbfgs’,‘sag’}这三种优化算法时都需要损失函数的一阶或者二阶连续导数。而‘liblinear’并没有这个依赖。
当样本数目比较大时,使用sag效果较好,因为它只使用一部分样本进行训练。
a) liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。
b) lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
c) newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
d) sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。
小结:
multi_class
{‘ovr’, ‘multinomial’}, default: ‘ovr’
OvR的思想很简单,无论你是多少元逻辑回归,我们都可以看做二元逻辑回归。multinomial相对复杂。
官网有个对比两种分类方式的例子: 链接地址 。
class_weight :类型权重参数。
用于标示分类模型中各种类型的权重。默认不输入,即所有的分类的权重一样。选择‘balanced’自动根据y值计算类型权重。自己设置权重,格式:{class_label: weight}。例如0,1分类的er'yuan二元模型,设置class_weight={0:09, 1:01},这样类型0的权重为90%,而类型1的权重为10%。
n_jobs=1 : 并行数
int:个数;-1:跟CPU核数一致;1:默认值。
其他参数:
dual=False: 对偶或者原始方法。Dual只适用于正则化相为l2的‘liblinear’的情况,通常样本数大于特征数的情况下,默认为False。
fit_intercept=True: 是否存在截距,默认存在。
intercept_scaling=1: 仅在正则化项为‘liblinear’,且fit_intercept设置为True时有用。
max_iter=100: 算法收敛的最大迭代次数。
tol=00001: 迭代终止判据的误差范围。
verbose=0: 日志冗长度int:冗长度;0:不输出训练过程;1:偶尔输出; >1:对每个子模型都输出
warm_start=False: 是否热启动,如果是,则下一次训练是以追加树的形式进行(重新使用上一次的调用作为初始化)。布尔型,默认False。
LogisticRegression类的常用方法
fit(X, y, sample_weight=None)
拟合模型,用来训练LR分类器,其中X是训练样本,y是对应的标记向量
返回对象,self。
fit_transform(X, y=None, fit_params)
fit与transform的结合,先fit后transform。返回X_new:numpy矩阵。
predict(X)
用来预测样本,也就是分类,X是测试集。返回array。
predict_proba(X)
输出分类概率。返回每种类别的概率,按照分类类别顺序给出。如果是多分类问题,multi_class="multinomial",则会给出样本对于每种类别的概率。
返回array-like。
score(X, y, sample_weight=None)
返回给定测试集合的平均准确率(mean accuracy),浮点型数值。
对于多个分类返回,则返回每个类别的准确率组成的哈希矩阵。
上述内容汇总自不同网站,但多数内容来自于这个链接:>
以上就是关于Logistic回归分析指标重要程度的主要过程是什么全部的内容,包括:Logistic回归分析指标重要程度的主要过程是什么、数学建模问题、怎样用matlab实现logistic方程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)