weka[29] Logistic源代码分析

weka[29] Logistic源代码分析
weka[29] Logistic源代码分析

weka[29] Logistic源代码分析

作者:Koala++/屈伟

Logistic Regression是非常重要的一个算法,可以从Tom Mitchell的主页上把new chapter 的第一章看一下,或是Ng Andrew的lecture notes的Part II看一下。

从buildClassifier开始:

if (train.classAttribute().type() != Attribute.NOMINAL) { throw new UnsupportedClassTypeException(

"Class attribute must be nominal.");

}

if (train.checkForStringAttributes()) {

throw new UnsupportedAttributeTypeException(

"Can't handle string attributes!");

}

train = new Instances(train);

train.deleteWithMissingClass();

if (train.numInstances() == 0) {

throw new IllegalArgumentException(

"No train instances without missing class value!");

}

类别属性必须是离散的,不能处理字符串属性,删除类别缺失的样本,删除后样本数不能为0。

// Replace missing values

m_ReplaceMissingValues = new ReplaceMissingValues();

m_ReplaceMissingValues.setInputFormat(train);

train = https://www.360docs.net/doc/1d15979815.html,eFilter(train, m_ReplaceMissingValues);

// Remove useless attributes

m_AttFilter = new RemoveUseless();

m_AttFilter.setInputFormat(train);

train = https://www.360docs.net/doc/1d15979815.html,eFilter(train, m_AttFilter);

// Transform attributes

m_NominalToBinary = new NominalToBinary();

m_NominalToBinary.setInputFormat(train);

train = https://www.360docs.net/doc/1d15979815.html,eFilter(train, m_NominalToBinary);

替换缺失值,删除无用的属性,转换成二值属性。

// Extract data

m_ClassIndex = train.classIndex();

m_NumClasses = train.numClasses();

int nK = m_NumClasses - 1; // Only K-1 class labels needed

int nR = m_NumPredictors = train.numAttributes() - 1;

int nC = train.numInstances();

m_Data = new double[nC][nR + 1]; // Data values

int[] Y = new int[nC]; // Class labels

double[] xMean = new double[nR + 1]; // Attribute means

double[] xSD = new double[nR + 1]; // Attribute stddev's

double[] sY = new double[nK + 1]; // Number of classes

double[] weights = new double[nC]; // Weights of instances

double totWeights = 0; // Total weights of the instances

m_Par = new double[nR + 1][nK]; // Optimized parameter values 看一下有哪些值,输入属性值,类标签,属性均值,属性标准差,类别数,样本权重,样本的总权重,优化后的参数值。

for (int i = 0; i < nC; i++) {

// initialize X[][]

Instance current = train.instance(i);

Y[i] = (int) current.classValue(); // Class value starts from 0

weights[i] = current.weight(); // Dealing with weights

totWeights += weights[i];

m_Data[i][0] = 1;

int j = 1;

for (int k = 0; k <= nR; k++) {

if (k != m_ClassIndex) {

double x = current.value(k);

m_Data[i][j] = x;

xMean[j] += weights[i] * x;

xSD[j] += weights[i] * x * x;

j++;

}

}

// Class count

sY[Y[i]]++;

}

nC是样本数,Y[i]记录下每个样本的类别值,类别值从0开始,weight记录下当前样本的权重,totWeights统计数权重,m_Data第二维是从1开始记录属性值的,第一个值是1,也就是公式中sum_0^n(theta(i)*x(i)),从0开始那么也就是x0为0。xMean[j]现在累计第j 个属性的属性值*权重,xSD累计属性值平方*权重。sY是统计Y[i]属性值。

xMean[0] = 0;

xSD[0] = 1;

for (int j = 1; j <= nR; j++) {

xMean[j] = xMean[j] / totWeights;

if (totWeights > 1)

xSD[j] = Math.sqrt(Math.abs(xSD[j] - totWeights * xMean[j]

* xMean[j]) / (totWeights - 1));

else

xSD[j] = 0;

}

计算xMean[j]的公式没有什么疑问,sum ( weight[i] * x ) / sum ( weight[i] )。xSD的公式也很简单,忘了可以看一下wiki,这说起来也有点矛盾,看完了论文怎么会不知道公式。// Normalise input data

for (int i = 0; i < nC; i++) {

for (int j = 0; j <= nR; j++) {

if (xSD[j] != 0) {

m_Data[i][j] = (m_Data[i][j] - xMean[j]) / xSD[j];

}

}

}

z-score归范化,可以看一下Jiawei Han写的数据挖掘,中文版46页,英文版71页。double x[] = new double[(nR + 1) * nK];

double[][] b = new double[2][x.length]; // Boundary constraints, N/A here // Initialize

for (int p = 0; p < nK; p++) {

int offset = p * (nR + 1);

// Null model

x[offset] = Math.log(sY[p] + 1.0) - Math.log(sY[nK] + 1.0);

b[0][offset] = Double.NaN;

b[1][offset] = Double.NaN;

for (int q = 1; q <= nR; q++) {

x[offset + q] = 0.0;

b[0][offset + q] = Double.NaN;

b[1][offset + q] = Double.NaN;

}

}

数据b是边界约束,这里没有用,而x其实相当于一个二维数组,offset第p个(nR+1)的位置,x[offset]是每一级的x[0]。

OptEng opt = new OptEng();

opt.setDebug(m_Debug);

opt.setWeights(weights);

opt.setClassLabels(Y);

if (m_MaxIts == -1) { // Search until convergence

x = opt.findArgmin(x, b);

while (x == null) {

x = opt.getVarbValues();

if (m_Debug)

System.out.println("200 iterations finished, not enough!");

x = opt.findArgmin(x, b);

}

if (m_Debug)

System.out.println(" ---------------------------"); } else {

opt.setMaxIteration(m_MaxIts);

x = opt.findArgmin(x, b);

if (x == null) // Not enough, but use the current value

x = opt.getVarbValues();

}

m_MaxIts是最多迭代多少次,如果它为-1就一真迭代到收敛,opt.findArgmin,很可笑的是我导师最擅长的最优化,我却没有学到过什么。它的代码太长了,而且说的参考资料Practical Optimization图书馆也没有,并且那代码长的实在惊人。前面的注释上提到:In order to find the matrix B for which L is minimised, a Quasi-Newton Method is used to search for the optimized values of the m*(k-1) variables. Note that before we use the optimization procedure, we "squeeze" the matrix B into a m*(k-1) vector. For details of the optimization procedure, please check weka.core.Optimization class. 这里最优化用的是Quasi-Newton方法,它与Newton法一样,都是函数的局部最大最小值的方法。

在distributionForInstance :

public double[] distributionForInstance(Instance instance) throws Exception {

m_ReplaceMissingValues.input(instance);

instance = m_ReplaceMissingValues.output();

m_AttFilter.input(instance);

instance = m_AttFilter.output();

m_NominalToBinary.input(instance);

instance = m_NominalToBinary.output();

// Extract the predictor columns into an array

double[] instDat = new double[m_NumPredictors + 1];

int j = 1;

instDat[0] = 1;

for (int k = 0; k <= m_NumPredictors; k++) {

if (k != m_ClassIndex) {

instDat[j++] = instance.value(k);

}

}

double[] distribution = evaluateProbability(instDat);

return distribution;

}

前面的处理是与buildClassifier中一样的,instDat也是第1个元素为1,用剩下的元素记录属性值。evaluateProbability的代码如下:

private double[] evaluateProbability(double[] data) {

double[] prob = new double[m_NumClasses],

v = new double[m_NumClasses];

// Log-posterior before normalizing

for (int j = 0; j < m_NumClasses - 1; j++) {

for (int k = 0; k <= m_NumPredictors; k++) {

v[j] += m_Par[k][j] * data[k];

}

}

v[m_NumClasses - 1] = 0;

// Do so to avoid scaling problems

for (int m = 0; m < m_NumClasses; m++) {

double sum = 0;

for (int n = 0; n < m_NumClasses - 1; n++)

sum += Math.exp(v[n] - v[m]);

prob[m] = 1 / (sum + Math.exp(-v[m]));

}

return prob;

}

Product(Theta*X),取对数后为sum(Theta*X),然后求每一个类别的概率可以看到下面列出来的注释,或者可以看一下Tom Mitchell的Generative and discriminative classifiers: na?ve bayes and logistic regression的13页,公式是一样的。而这里的sum += Math.exp(v[n]-v[m])这种写法是

The probability for class j except the last class is

*Pj(Xi)=exp(XiBj)/((sum[j=1..(k-1)]exp(Xi*Bj))+1)

*The last class has probability

*1-(sum[j=1..(k-1)]Pj(Xi))=1/((sum[j=1..(k-1)]exp(Xi*Bj))+1)

*

*The(negative)multinomial log-likelihood is thus:

*L=-sum[i=1..n]{

*sum[j=1..(k-1)](Yij*ln(Pj(Xi)))+

*(1-(sum[j=1..(k-1)]Yij))*ln(1-sum[j=1..(k-1)]Pj(Xi))

*}+ridge*(B^2)

SPSS实验8-二项Logistic回归分析

SPSS作业8:二项Logistic回归分析 为研究和预测某商品消费特点和趋势,收集到以往胡消费数据。数据项包括是否购买,性别,年龄和收入水平。这里采用Logistic回归的方法,是否购买作为被解释变量(0/1二值变量),其余各变量为解释变量,且其中性别和收入水平为品质变量,年龄为定距变量。变量选择采用Enter方法,性别以男为参照类,收入以低收入为参照类。 (一)基本操作: (1)选择菜单Analyz e-Regression-Binary Logistic; (2)选择是否购买作为被解释变量到Dependent框中,选其余各变量为解释变量到Covariates框中,采用Enter方法,结果如下: 分析:上表显示了对品质变量产生虚拟变量的情况,产生的虚拟变量命名为原变量名(编码)。可以看到,对收入生成了两个虚拟变量名为Income(1)和Income(2),分别表示是否中收入和是否高收入,两变量均为0时表示低收入;对性别生成了一个虚拟变量名为Gedder(1),表示是否女,取值为0

时表示为男。 消费的二项Logistic分析结果(二)(强制进入策略) 分析:上表显示了Logistic分析初始阶段(第零步)方程中只有常数项时的错判矩阵。可以看到:269人中实际没购买且模型预测正确,正确率为100%;162人中实际购买了但模型均预测错误,正确率为0%。模型总的预测正确率为62.4%。 消费的二项Logistic分析结果(三)(强制进入策略)

分析:上表显示了方程中只有常数项时的回归系数方面的指标,各数据项的含义依次为回归系数,回归系数标准误差,Wald检验统计量的观测值,自由度,Wald检验统计量的概率p值,发生比。由于此时模型中未包含任何解释变量,因此该表没有实际意义。 分析:上表显示了待进入方程的各个变量的情况,各数据项的含义依次为Score检验统计量的观测值,自由度和概率p值。可以看到,如果下一步Age 进入方程,则Score检验统计量的观测值为1.268,概率p值为0.26。如果显著性水平a为0.05,由于Age的概率p值大于显著性水平a,所以是不能进入方程的。但在这里,由于解释变量的筛选策略为Enter,所以这些变量也被强行进入方程。

Logistic回归分析简介

Logistic回归分析简介 Logistic回归:实际上属于判别分析,因拥有很差的判别效率而不常用。1.应用范围: ①适用于流行病学资料的危险因素分析 ②实验室中药物的剂量-反应关系 ③临床试验评价 ④疾病的预后因素分析 2.Logistic回归的分类: ①按因变量的资料类型分: 二分类 多分类 其中二分较为常用 ②按研究方法分: 条件Logistic回归 非条件Logistic回归 两者针对的资料类型不一样,后者针对成组研究,前者针对配对或配伍 研究。 3.Logistic回归的应用条件是: ①独立性。各观测对象间是相互独立的; ②LogitP与自变量是线性关系; ③样本量。经验值是病例对照各50例以上或为自变量的5-10倍(以10倍 为宜),不过随着统计技术和软件的发展,样本量较小或不能进行似然

估计的情况下可采用精确logistic回归分析,此时要求分析变量不能太多,且变量分类不能太多; ④当队列资料进行logistic回归分析时,观察时间应该相同,否则需考虑观 察时间的影响(建议用Poisson回归)。 4.拟和logistic回归方程的步骤: ①对每一个变量进行量化,并进行单因素分析; ②数据的离散化,对于连续性变量在分析过程中常常需要进行离散变成等 级资料。可采用的方法有依据经验进行离散,或是按照四分、五分位数 法来确定等级,也可采用聚类方法将计量资料聚为二类或多类,变为离 散变量。 ③对性质相近的一些自变量进行部分多因素分析,并探讨各自变量(等级 变量,数值变量)纳入模型时的适宜尺度,及对自变量进行必要的变量 变换; ④在单变量分析和相关自变量分析的基础上,对P≤α(常取0.2,0.15或 0.3)的变量,以及专业上认为重要的变量进行多因素的逐步筛选;模型 程序每拟合一个模型将给出多个指标值,供用户判断模型优劣和筛选变 量。可以采用双向筛选技术:a进入变量的筛选用score统计量或G统计 量或LRS(似然比统计量),用户确定P值临界值如:0.05、0.1或0.2,选 择统计量显著且最大的变量进入模型;b剔除变量的选择用Z统计量(Wald 统计量),用户确定其P值显著性水平,当变量不显者,从模型中予以剔 除。这样,选入和剔除反复循环,直至无变量选入,也无变量删除为止,选入或剔除的显著界值的确定要依具体的问题和变量的多寡而定,一般

SPSS—二元Logistic回归结果分析报告

SPSS—二元Logistic回归结果分析 2011-12-02 16:48 身心疲惫,睡意连连,头不断往下掉,拿出耳机,听下歌曲,缓解我这严重的睡意吧!今天来分析二元Logistic回归的结果 分析结果如下: 1:在“案例处理汇总”中可以看出:选定的案例489个,未选定的案例361个,这个结果是根据设定的validate = 1得到的,在“因变量编码”中可以看出“违约”的两种结果“是”或者“否” 分别用值“1“和“0”代替,在“分类变量编码”中教育水平分为5类,如果选中“为完成高中,高中,大专,大学等,其中的任何一个,那么就取值为 1,未选中的为0,如果四个都未被选中,那么就是”研究生“ 频率分别代表了处在某个教育水平的个数,总和应该为489个

1:在“分类表”中可以看出:预测有360个是“否”(未违约)有129个是“是”(违约) 2:在“方程中的变量”表中可以看出:最初是对“常数项”记性赋值,B为 -1.026,标准误差为:0.103 那么wald =( B/S.E)2=(-1.026/0.103)2 = 99.2248, 跟表中的“100.029几乎接近,是因为我对数据进行的向下舍入的关系,所以数据会稍微偏小, B和Exp(B) 是对数关系,将B进行对数抓换后,可以得到:Exp(B) = e^-1.026 = 0.358, 其中自由度为1, sig为0.000,非常显著

1:从“不在方程中的变量”可以看出,最初模型,只有“常数项”被纳入了模型,其它变量都不在最初模型 表中分别给出了,得分,df , Sig三个值, 而其中得分(Score)计算公式如下: (公式中(Xi- Xˉ) 少了一个平方) 下面来举例说明这个计算过程:(“年龄”自变量的得分为例) 从“分类表”中可以看出:有129人违约,违约记为“1”则违约总和为 129,选定案例总和为489 那么: yˉ = 129/489 = 0.16 xˉ = 16951 / 489 = 34.2 所以:∑(Xi-xˉ)2 = 30074.9979

logistic回归分析案例

1. 数据制备(栅格数据) (1) 宝塔区基底图层.tif (2) 居民点扩增.tif 、坡度.tif 、坡向.tif 等要素数据。 在 environment settings ------ p rocessing extent ------ snap raster (选中基底图层),保证栅格数据 像元无偏移,且行列的数量一致。 化:Raster to ASCII Inyul r aiLtvl- 匚” k 『号樹 ± 如葡让也\1非*订kilt :f 10. 2 'iiStati EeiT-SlaT 14t L J. KT 2.通过CLUE-S 莫型中的fileconvert 模块,获得logistic 回归分析的数据集。 (1) 将上一步骤中的因变量 y 和影响因素x 的.txt 文档后缀改为.asc 格式,并将文件 放在CLUE-S 模型所在的文件夹中。 (2) 打开FileCo nvert V2软件,按下图勾选,填写"file list "内容,点击start con version , 3 田F1 曰 It:. (3)栅格数据转为 ASCII 码,生成txt 文档。 匚onversion Tools Ejicel From GPS From KML From Raster 气 Raster to ASCII y Raster to Fist 声.Raster to Point

生成stat .txt文档。 祥Fi le 荃 flFfijie? I1id J?1Ji w ■■ 1 ? 9><4 P t414 Tl ?J19 12词 ■M*£LD|i4I# ■ Q电兀列心£i k1lf\ 15?1 *■4JE RI7 <1- I 4 話M3 IS r擠uSstalB-^aG 齬£ 淨珀bCMir 二i缶 pad... ■ 枝jfcsurrT^cM.a^t 炉 MBlOrtTIdH■: 护 xVcomr-.iic / rll asc 播Tann砂£]T (2)logistic回归分析 按图设置参数因变量、自变量;由于x3属于分类变量,点击分类按钮,按图设置参数。 >M!L4M|昨T祜lt?M? 曲唱-Hl'F1 wB-j' MtF M|T ffl¥ g: ZTStiRiiri SHilfi VTU '_'■ rt 舖C r TI薔色Z4d* ■i aa ■;? 1 iTdlfAflWVK4Wt4「利 E 呻■■} 1■ IdfcWM^U.一尉仇■臂H xlAftL lAMDf Jfit 1Q1?7r -iwns ■B-13磁MT 13 J 工 '-恫fl T l£j v-IIHH M4Q J0W PW回沐神to 型 rwa: wm 1 H teiiy- 卩厲 4a13 4 ■ira 401?wa 70i-221 ?d'131fefl 加ifUnm 片nu t013*Ozmwkt他 w p1W址?囲血|淞:幽 11013 1 Qm Sft?t 121JJ V s? 014*」; 11 H?iKa; H013 5 *旳 ti a IM■ KK MS V;941 ti Q144T f 7W filwvjcfic OH

Logistic回归分析报告结果解读分析

Logistic 回归分析报告结果解读分析 Logistic 回归常用于分析二分类因变量(如存活和死亡、患病和未患病等)与多个自变量的关系。比较常用的情形是分析危险因素与是否发生某疾病相关联。例如,若探讨胃癌的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群有不同的临床表现和生活方式等,因变量就为有或无胃癌,即“是” 或“否”,为二分类变量,自变量包括年龄、性别、饮食习惯、是否幽门螺杆菌感染等。自变量既可以是连续变量,也可以为分类变量。通过Logistic 回归分析,就可以大致了解胃癌的危险因素。 Logistic 回归与多元线性回归有很多相同之处,但最大的区别就在于他们的因变量不同。多元线性回归的因变量为连续变量;Logistic 回归的因变量为二分类变量或多分类变量,但二分类变量更常用,也更加容易解释。 1. Logistic 回归的用法 一般而言,Logistic 回归有两大用途,首先是寻找危险因素,如上文的例子,找出与胃癌相关的危险因素;其次是用于预测,我们可以根据建立的Logistic 回归模型,预测在不同的自变量情况下,发生某病或某种情况的概率(包括风险评分的建立)。 2. 用Logistic回归估计危险度 所谓相对危险度(risk ratio , RR)是用来描述某一因素不同状态发生疾病(或其它结局)危险程度的 比值。Logistic回归给出的OR(odds ratio)值与相对危险度类似,常用来表示相对于某一人群,另一人群发生终点事件的风险超出或减少的程度。如不同性别的

胃癌发生危险不同,通过Logistic回归可以求出危险度的具体数值,例如1.7,

图文举例详细讲解Logistic曲线的回归分析

Logistic曲线的回归分析 例某一品种玉米高度与时间(生长周期,每个生长周期为2-3天,与气温有关)的数据如 表1.所示。用转化为线性方程的方法估计其logistic曲线预测模型。设最大值k为300(cm)。 表1.玉米高度与时间(生长周期)的关系 时间(生长周期)高度/cm时间(生长周期)高度/cm时间(生长周期)高度/cm 10.671212.752297.4620.851316.5523112.7 31.281420.124135.141.751527.3525153.652.271632.5526160.362.751737.55271 67.173.691844.7528174.984.711953.3829177.996.362071.6130180.2 107.732183.8931180.8119.91 3.1基本绘图操作 在Excel中输入时间x与高度y的数据。 选择插入->图表 图87 点击图表,选择“标准类型”中的xy散点图,并点击子图表类型的第一个。

图88 点击下一步,得到如图89。 图89

点击下一步。 图90 分别点击标题、网格线、图例进行修改,然后点击下一步。 图91 点击完成。 图92 右击绘图区,修改绘图区格式,双击做表格,修改坐标轴刻度,最后的散点图。

图93 观察散点图,其呈S型曲线,符合logistic曲线。采用转化为线性方程的方法求解模型。 3.2Logistic曲线方程及线性化 Logistic曲线方程为: y 1 k at me(12) (1)将数据线性化及成图 转化为线性方程为: y'aat 01 (13 ) 其中,y'ln(k/y1),a 0lnm,a1a 具体操作为: 向excel表格中输入y’数据。

(整理)多项分类Logistic回归分析的功能与意义1.

多项分类Logistic回归分析的功能与意义 我们经常会遇到因变量有多个取值而且无大小顺序的情况,比如职业、婚姻情况等等,这时一般的线性回归分析无法准确地刻画变量之间的因果关系,需要用其它回归分析方法来进行拟合模型。SPSS的多项分类Logistic回归便是一种简便的处理该类因变量问题的分析方法。 例子:下表给出了对山东省某中学20名视力低下学生视力监测的结果数据。试用多项分类Logistic回归分析方法分析视力低下程度(由轻到重共3级)与年龄、性别(1代表男性,2代表女性)之间的关系。

“年龄”使之进入“协变量”列表框。

还是以教程“blankloan.sav"数据为例,研究银行客户贷款是否违约(拖欠)的问题,数据如下所示: 上面的数据是大约700个申请贷款的客户,我们需要进行随机抽样,来进行二元Logistic 回归分析,上图中的“0”表示没有拖欠贷款,“1”表示拖欠贷款,接下来,步骤如下: 1:设置随机抽样的随机种子,如下图所示:

选择“设置起点”选择“固定值”即可,本人感觉200万的容量已经足够了,就采用的默认值,点击确定,返回原界面、 2:进行“转换”—计算变量“生成一个变量(validate),进入如下界面: 在数字表达式中,输入公式:rv.bernoulli(0.7),这个表达式的意思为:返回概率为0.7的bernoulli分布随机值 如果在0.7的概率下能够成功,那么就为1,失败的话,就为"0" 为了保持数据分析的有效性,对于样本中“违约”变量取缺失值的部分,validate变量也取缺失值,所以,需要设置一个“选择条件” 点击“如果”按钮,进入如下界面:

SPSS与社会统计学逻辑回归分析Logistic课程

SPSS与社会统计学逻辑回归分析Logistic课程作业二[1]陈昱,陈银蓉,马文博. 基于Logistic模型的水库移民安置区居民土地流转意愿分析——四川、湖南、湖北移民安置区的调查[J]. 资源科学,2011,06:1178-1185. 一、变量赋值 1.被解释变量用0表示不愿意流转,1表示愿意流转,有意愿上的状态表示效果。 2.性别分别用1和2表示男女,男女不存在有没有状态的表征,所以用1、2赋值非常合适;它的预计影响方向为负,是基于学者张林秀、刘承芳等认为:由于农村男性外出打工的几率高于女性,女性更愿意在家耕种土地,这就可能导致女性不愿意转出土地的基础上设定的。 3.教育程度越高赋值越高,且预测影响为正,这个也是在文章前面定量分析的时候引用学者李实的观点说明赋值的理由。 4.职业类型中,兼业化程度越高赋值越高,且为正向。从家庭收入对农业收入的依赖性原理角度来看这个不难理解。 5.其它变量的赋值依据实际情况初步判断也不能理解其赋值的缘由。然而对于“是否为村干部”这一变量来看,预测的趋向是:是村干部则不愿

意流转,前面的分析并没有说明为什么会是这样。虽然这知识一种预判,但是若能够给出预判的一丁点理由就更好了。 二、系数解读 1. 标准化系数中,x1,x3,x7,x9,x11,x12系数为付,意味着性 别是男、与市中心距离越近、家庭人口和劳动力人数越少、农业 收入占比越少、认为土地经营权权属则土地流转的意愿越强; 2. 其中X3(与市中心距离),x9(劳动力人数)影响系数绝对值较大, 分别为0.815,0.322。在显著性检验方面,x3、x9、x11分别通过 了15%、1%、5%的显著性检验。也就是说,土地不愿意流转与 劳动力人数多有显著相关性,与农业收入占比高有较显著的相 关,与市中心距离近相关性不显著。 3. 系数为正的变量中,影响系数均不高,但能通过显著性检验的

第十二章+Logistic回归分析

第十二章 Logistic 回归分析 一、Logistic 回归概述: Logistic 回归主要用于筛选疾病的危险因素、预后因素或评价治疗措施;通常以疾病的死亡、痊愈等结果发生的概率为因变量,以影响疾病发生和预后的因素为自变量建立模型。 二、Logistic 回归的分类及资料类型: 第一节 非条件Logistic 回归分析 一、Logistic 回归模型: Logistic 回归模型: logit (P )= ln( p p -1) = β0+β1χ1 + … +βn χn 二、回归系数的估计(参数估计): 回归模型的参数估计:Logistic 回归模型的参数估计通常利用最大似然估计法。 三、假设检验: 1.Logistic 回归方程的检验: ·检验模型中所有自变量整体来看是否与所研究事件的对数优势比存在线性关系,也即方程是否成立。 ·检验的方法有似然比检验、比分检验(score test )和Wald 检验(wald test )。上述三种方法中,似然比检验最可靠。 ·似然比检验(likehood ratio test ):通过比较包含与不包含某一个或几个待检验观察因素的两个模型的对数似然函数变化来进行,其统计量为G=-2ln(L)(又称Deviance )。无效假设H 0:β=0。当H 0成立时,检验统计量G 近似服从自由度为N-P-1的X 2分布。当G 大于临界值时,接受H 1,拒绝无效假设,认为从整体上看适合作Logistic 回归分析,回归方程成立。 2.Logistic 回归系数的检验: ·为了确定哪些自变量能进入方程,还需要对每个自变量的回归系数进行假设检验,判断其对模型是否有贡献。 ) (11011011011011)](exp[11 )exp(1)exp(p p X X p p p p p p e X X X X X X p ββββββββββββ+++-+= +++-+=+++++++=

如何用SPSS做logistic回归分析

如何用spss17.0进行二元和多元logistic回归分析 一、二元logistic回归分析 二元logistic回归分析的前提为因变量是可以转化为0、1的二分变量,如:死亡或者生存,男性或者女性,有或无,Yes或No,是或否的情况。 下面以医学中不同类型脑梗塞与年龄和性别之间的相互关系来进行二元logistic回归分析。 (一)数据准备和SPSS选项设置 第一步,原始数据的转化:如图1-1所示,其中脑梗塞可以分为ICAS、ECAS和NCAS三种,但现在我们仅考虑性别和年龄与ICAS的关系,因此将分组数据ICAS、ECAS和NCAS转化为1、0分类,是ICAS赋值为1,否赋值为0。年龄为数值变量,可直接输入到spss中,而性别需要转化为(1、0)分类变量输入到spss当中,假设男性为1,女性为0,但在后续分析中系统会将1,0置换(下面还会介绍),因此为方便期间我们这里先将男女赋值置换,即男性为“0”,女性为“1”。 图1-1 第二步:打开“二值Logistic 回归分析”对话框: 沿着主菜单的“分析(Analyze)→回归(Regression)→二元logistic (Binary Logistic)”的路径(图1-2)打开二值Logistic 回归分析选项框(图1-3)。

如图1-3左侧对话框中有许多变量,但在单因素方差分析中与ICAS 显著相关的为性别、年龄、有无高血压,有无糖尿病等(P<0.05),因此我们这里选择以性别和年龄为例进行分析。

在图1-3中,因为我们要分析性别和年龄与ICAS的相关程度,因此将ICAS选入因变量(Dependent)中,而将性别和年龄选入协变量(Covariates)框中,在协变量下方的“方法(Method)”一栏中,共有七个选项。采用第一种方法,即系统默认的强迫回归方法(进入“Enter”)。 接下来我们将对分类(Categorical),保存(Save),选项(Options)按照如图1-4、1-5、1-6中所示进行设置。在“分类”对话框中,因为性别为二分类变量,因此将其选入分类协变量中,参考类别为在分析中是以最小数值“0(第一个)”作为参考,还是将最大数值“1(最后一个)”作为参考,这里我们选择第一个“0”作为参考。在“存放”选项框中是指将不将数据输出到编辑显示区中。在“选项”对话框中要勾选如图几项,其中“exp(B)的CI(X)”一定要勾选,这个就是输出的OR和CI值,后面的95%为系统默认,不需要更改。

图文举例详细讲解Logistic曲线的回归分析

Logistic 曲线的回归分析 例 某一品种玉米高度与时间(生长周期,每个生长周期为2-3天,与气温有关)的数据如表1.所示。用转化为线性方程的方法估计其logistic 曲线预测模型。设最大值k 为300(cm )。 表1. 玉米高度与时间(生长周期)的关系 时间(生长周期) 高度/cm 时间(生长周期) 高度 /cm 时间(生长周期) 高度/cm 1 2 3 4 5 6 7 8 9 10 11 0.67 0.85 1.28 1.75 2.27 2.75 3.69 4.71 6.36 7.73 9.91 12 13 14 15 16 17 18 19 20 21 12.75 16.55 20.1 27.35 32.55 37.55 44.75 53.38 71.61 83.89 22 23 24 25 26 27 28 29 30 31 97.46 112.7 135.1 153.6 160.3 167.1 174.9 177.9 180.2 180.8 3.1 基本绘图操作 在Excel 中输入时间x 与高度y 的数据。 选择插入->图表 图87 点击图表,选择“标准类型”中的xy 散点图,并点击子图表类型的第一个。

图88 点击下一步,得到如图89。 图89

点击下一步。 图90 分别点击标题、网格线、图例进行修改,然后点击下一步。 图91 点击完成。 图92 右击绘图区,修改绘图区格式,双击做表格,修改坐标轴刻度,最后的散点图。

图93 观察散点图,其呈S 型曲线,符合logistic 曲线。采用转化为线性方程的方法求解模型。 3.2 Logistic 曲线方程及线性化 Logistic 曲线方程为: 1at k y me -= + (12) (1) 将数据线性化及成图 转化为线性方程为: 01'y a a t =+ (13) 其中,'ln(/1)y k y =-,0ln a m =,1a a =- 具体操作为: 向excel 表格中输入y ’数据。

基于因子分析和Logistic回归分析的

基于因子分析和Logistic回归分析的 儿童心理发展状况及其对策研究 摘要:目前,在儿童心理健康研究中,归纳方法已经比较成熟了,而对数据进行数学分析的方法还不够完善,本文主要运用因子分析、主成分分析和Logistics分析等多元统计学中的分析方法,对儿童心理健康状况做了一定的科学分析。通过分析,得到了影响孩子心理健康的因素,并提出针对性的解决方案,提出了一些行之有效的解决措施。通过归纳法与数据分析法的比较,数据分析比归纳法更具有科学依据也更为准确。 关键词:因子分析;主成分分析;Logistics回归分析;心理健康;儿童 Abstract:At present, in the study of children's mental health, the method of induction has become more mature, and the method of mathematical analysis of data is still not perfect. This article mainly uses multivariate analysis methods such as factor analysis, principal component analysis, and logistic analysis. The children's mental health status has done some scientific analysis. Through analysis, the factors that affect the children's mental health are obtained, and specific solutions are proposed, and some effective solutions are proposed. By comparing the induction method with the data analysis method, the data analysis is more scientific and accurate than the induction method. Key word: Factor analysis; Principal component analysis; Logistics analysis ; Mental health; Children

Logistic回归分析报告结果解读分析

L o g i s t i c回归分析报告结果解读分析Logistic回归常用于分析二分类因变量(如存活和死亡、患病和未患病等)与多个自变量的关系。比较常用的情形是分析危险因素与是否发生某疾病相关联。例如,若探讨胃癌的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群有不同的临床表现和生活方式等,因变量就为有或无胃癌,即“是”或“否”,为二分类变量,自变量包括年龄、性别、饮食习惯、是否幽门螺杆菌感染等。自变量既可以是连续变量,也可以为分类变量。通过Logistic回归分析,就可以大致了解胃癌的危险因素。 Logistic回归与多元线性回归有很多相同之处,但最大的区别就在于他们的因变量不同。多元线性回归的因变量为连续变量;Logistic回归的因变量为二分类变量或多分类变量,但二分类变量更常用,也更加容易解释。 回归的用法 一般而言,Logistic回归有两大用途,首先是寻找危险因素,如上文的例子,找出与胃癌相关的危险因素;其次是用于预测,我们可以根据建立的Logistic回归模型,预测在不同的自变量情况下,发生某病或某种情况的概率(包括风险评分的建立)。 2.用Logistic回归估计危险度 所谓相对危险度(riskratio,RR)是用来描述某一因素不同状态发生疾病(或其它结局)危险程度的 比值。Logistic回归给出的OR(oddsratio)值与相对危险度类似,常用来表示相对于某一人群,另一人群发生终点事件的风险超出或减少的程度。如不同性别的胃癌发生危险不同,通过Logistic回归可以求出危险度的具体数值,例如,这样就表示,男性发生胃癌的风险是女性的倍。这里要注意估计的方向问题,以女性作为参照,男性患

Logistic回归分析

Logistic 回归分析 Logistic 回归分析是与线性回归分析方法非常相似的一种多元统计方法。适用于因变量的取值仅有两个(即二分类变量,一般用1和0表示)的情况,如发病与未发病、阳性与阴性、死亡与生存、治愈与未治愈、暴露与未暴露等,对于这类数据如果采用线性回归方法则效果很不理想,此时用Logistic 回归分析则可以很好的解决问题。 一、Logistic 回归模型 设Y 是一个二分类变量,取值只可能为1和0,另外有影响Y 取值的n 个自变量12,,...,n X X X ,记12(1|,,...,)n P P Y X X X ==表示在n 个自变量的作用下Y 取值为1的概率,则Logistic 回归模型为: [] 011221 1exp (...)n n P X X X ββββ= +-++++ 它可以化成如下的线性形式: 01122ln ...1n n P X X X P ββββ??=++++ ?-?? 通常用最大似然估计法估计模型中的参数。 二、Logistic 回归模型的检验与变量筛选 根据R Square 的值评价模型的拟合效果。 变量筛选的原理与普通的回归分析方法是一样的,不再重复。 三、Logistic 回归的应用 (1)可以进行危险因素分析 计算结果各关于各变量系数的Wald 统计量和Sig 水平就直接反映了因素i X 对因变量Y 的危险性或重要性的大小。

(2)预测与判别 Logistic回归是一个概率模型,可以利用它预测某事件发生的概率。当然也可以进行判别分析,而且可以给出概率,并且对数据的要求不是很高。 四、SPSS操作方法 1.选择菜单 2.概率预测值和分类预测结果作为变量保存 其它使用默认选项即可。

基于logistic回归分析

基于SPSS logistic回归分析探究不同月均收入的男女比例 一一一 华北科技学院基础部北京东燕郊 065201 摘要:在计划经济时代,由于中国政府推行男女性别平等的就业制度和工资分配制度,因而城市劳动力性别工资差异并不明显。经济改革以来,伴随着由计划经济向市场经济的转型,工资分配机制发生了根本改变,性别工资差异越来越明显。性别分割是我国劳动力市场上一直存在的一种现象,性别收入差距总体趋势在扩大;个体特征差异能够在一定程度上解释性别收入差异,现阶段性别收入差异在很大程度上是由于劳动者本身的人力资本水平引起的,是正常合理的范围;歧视仍然是造成性别收入差距的一个原因,女性在获得教育的机会上还是比男性要低,而且女性很难进入到高收入行业和职业,使得在教育方面女性仍然处于不利地位。本文将运用SPSS二元回归分析探究不同月均收入对应的男女比例并得出结论,旨在对分析结果提出一些有建设性的建议。 关键词:logistic回归分析;SPSS软件;人均收入;性别比例 Based on SPSS logistic regression analysis to explore the sex ratio of different monthly income NIU Xiaoyu (North China institute of science and technology,Beijing,065201,China) Abstract: In the era of planned economy, as a result of the Chinese government to implement gender equality employment system and salary distribution system, and urban labor gender wage gap is not obvious. Since the economic reform, with the transition from planned economy to market economy, fundamental changes have taken place in wage distribution mechanism, the gender wage gap is more and more obvious. Gender segmentation is China's labor market has been a phenomenon of gender overall trend in the expanding income gap; Individual characteristics can partly explain the gender income differences, gender differences at present stage is largely caused by the human capital level of laborer itself, is a normal reasonable range; Discrimination is still a cause of the gender pay gap, women in the opportunity to gain education or lower than men,

SPSS学习笔记之——二项Logistic回归分析

SPSS学习笔记之——二项Logistic回归分析 一、概述 Logistic回归主要用于因变量为分类变量(如疾病的缓解、不缓解,评比中的好、中、差等)的回归分析,自变量可以为分类变量,也可以为连续变量。他可以从多个自变量中选出对因变量有影响的自变量,并可以给出预测公式用于预测。 因变量为二分类的称为二项logistic回归,因变量为多分类的称为多元logistic回归。 下面学习一下Odds、OR、RR的概念: 在病例对照研究中,可以画出下列的四格表: ------------------------------------------------------ 暴露因素病例对照 ----------------------------------------------------- 暴露 a b 非暴露 c d ----------------------------------------------- Odds:称为比值、比数,是指某事件发生的可能性(概率)与不发生的可能性(概率)之比。在病例对照研究中病例组的暴露比值为: odds1 = (a/(a+c))/(c(a+c)) = a/c, 对照组的暴露比值为: odds2 = (b/(b+d))/(d/(b+d)) = b/d OR:比值比,为:病例组的暴露比值(odds1)/对照组的暴露比值(odds2) = ad/bc 换一种角度,暴露组的疾病发生比值: odds1 = (a/(a+b))/(b(a+b)) = a/b 非暴露组的疾病发生比值: odds2 = (c/(c+d))/(d/(c+d)) = c/d OR = odds1/odds2 = ad/bc 与之前的结果一致。 OR的含义与相对危险度相同,指暴露组的疾病危险性为非暴露组的多少倍。OR>1说明疾病的危险度因暴露而增加,暴露与疾病之间为“正”关联;OR<1说明疾病的危险度因暴露而减少,暴露与疾病之间为“负”关联。还应计算OR的置信区间,若区间跨1,一般说明该因素无意义。 关联强度大致如下: ------------------------------------------------------ OR值联系强度 ------------------------------------------------------ 0.9-1.0 1.0-1.1 无 0.7-0.8 1.2-1.4 弱(前者为负关联,后者为正关联) 0.4-0.6 1.5-2.9 中等(同上) 0.1-0.3 3.0-9.0 强(同上) <0.1 10.0以上很强(同上) ------------------------------------------------------

二分类Logistic回归的详细SPSS操作

SPSS操作:二分类Logistic回归 作者:张耀文 1、问题与数据 某呼吸内科医生拟探讨吸烟与肺癌发生之间的关系,开展了一项成组设计的病例对照研究。选择该科室内肺癌患者为病例组,选择医院内其它科室的非肺癌患者为对照组。通过查阅病历、问卷调查的方式收集了病例组和对照组的以下信息:性别、年龄、BMI、COPD病史和是否吸烟。变量的赋值和部分原始数据见表1和表2。该医生应该如何分析? 表1. 肺癌危险因素分析研究的变量与赋值 表2. 部分原始数据 ID gender age BMI COPD smoke cancer 1 0 34 0 1 1 0 2 1 32 0 1 0 1 3 0 27 0 1 1 1 4 1 28 0 1 1 0 5 1 29 0 1 0 0 6 0 60 0 2 0 0 7 1 29 0 0 1 1 8 1 29 1 1 1 1 9 1 37 0 1 0 0 10 0 17 0 0 0 0 11 0 20 0 0 1 1 12 1 35 0 0 0 0 13 0 17 1 0 1 1

………………… 2、对数据结构的分析 该设计中,因变量为二分类,自变量(病例对照研究中称为暴露因素)有二分类变量(性别、BMI和是否吸烟)、连续变量(年龄)和有序多分类变量(COPD 病史)。要探讨二分类因变量与自变量之间的关系,应采用二分类Logistic回归模型进行分析。 在进行二分类Logistic回归(包括其它Logistic回归)分析前,如果样本不多而变量较多,建议先通过单变量分析(t检验、卡方检验等)考察所有自变量与因变量之间的关系,筛掉一些可能无意义的变量,再进行多因素分析,这样可以保证结果更加可靠。即使样本足够大,也不建议直接把所有的变量放入方程直接分析,一定要先弄清楚各个变量之间的相互关系,确定自变量进入方程的形式,这样才能有效的进行分析。 本例中单变量分析的结果见表3(常作为研究报告或论文中的表1)。 表3. 病例组和对照组暴露因素的单因素比较 病例组(n=85)对照组(n=259) χ2 /t统计量P 性别,男(%)56 (65.9) 126 (48.6) 7.629 <0.01 年龄(岁),x± s40.3 ±14.0 38.6 ±12.4 1.081 0.28 BMI,n (%) 正常48 (56.5) 137 (52.9) 0.329 0.57 超重或肥胖37 (43.5) 122 (47.1) COPD病史,n (%) 无21 (24.7) 114 (44.0) 14.123 <0.01 轻中度24 (28.2) 75 (29.0) 重度40 (47.1) 70 (27.0) 是否吸烟,n(%) 否18 (21.2) 106 (40.9) 10.829 <0.01 是67 (78.8) 153 (59.1) 单因素分析中,病例组和对照组之间的差异有统计学意义的自变量包括:性别、COPD病史和是否吸烟。 此时,应当考虑应该将哪些自变量纳入Logistic回归模型。一般情况下,建议纳入的变量有:1)单因素分析差异有统计学意义的变量(此时,最好将P值放宽一些,比如0.1或0.15等,避免漏掉一些重要因素);2)单因素分析时,

二项logistic回归案列分析

二项logistic回归案列分析 第九组成员:曹克强张铭牛孝龙张昕鑫 1、实验分析目标:建立客户购买的预测模型,分析影响因素 2、操作步骤: 第一步:选择选项“分析”-“回归”-“二项Logistic回归”,出现窗口 第二步:在“方法”中选择解释变量的筛选策略选择默认方法 在“选项”项中,可以指定输出内容和设置建模中的某些参数。如下图所示:

在“保存”项中,可以将预测结果、残差依据强影响点的探测值等保存到数据编辑窗口,如下图所示: 在“分类”选项设置性别、收入分类变量对比为指示符、以第一个为参考类别。

3、结果分析: 下图为初始阶段(方程中只有常数项时)的混淆矩阵 可以看到,269人实际没购买且模型预测正确,正确率为100%,162人实际购买了但模型预测错误,正确率为0,模型的总的预测正确率为62.4%。 方程中常量的显著性检验p值小于0.05所以拒绝原假设说明常数量对模型影响是显著地 从上表统计量p值可以看出年龄的统计量p 值大于0.05所以接受原假设,年龄对是否购买影响不显著。

下图为当前模型时的混淆矩阵 在实际没购买的269人中,模型正确识别了236人,错误识别了33人,正确率为87.7%。在实际购买的162中,模型正确识别了31人,错误识别了131人,正确率为19.1%,模型的总的预测正确率为62.9%。 下图为Hosmer-Lemeshow检验的结果 在最终模型中,Hosmer-Lemeshow统计量为8.749,P值为0.364,大于显著性水平,因此,不拒绝原假设,认为观测频数的分布与预测频数的分布无显著差异,那么模型拟合效果较好 从上表中可以看出年龄的统计量p值大于0.05、接受原假设,所以在模型中年龄对是否购买影响不显著,可以不用考虑年龄。 根据上表所示拟合方程为: P=-0.814-0.511gender(1) P=-0.814-0.787income(1) P=-0.814-0.686income(2)

logistic回归分析实例操作

Logistic回归分析 二分类(因变量Y有(如发病1与未发病0)两种可能出现的结果)资料的Logistic回归分析,至于多分类Logistic回归分析,与二分类操作过程类似,只是在数据编制及分析方法选择处不同。 分析的一般步骤: 变量的编码 哑变量的设置和引入 各个自变量的单因素分析 变量的筛选 交互作用的引入 建立多个模型 选择较优的模型 模型应用条件的评价 输出结果的解释 实例操作 11.1 某研究人员在探讨肾细胞癌转移的有关临床病理因素研究中,收集了一批行根治性肾切除术患者的肾癌标本资料,现从中抽取26例资料作为示例进行logistic回归分析。 1.各变量及其赋值说明 x1:确诊时患者的年龄(岁) x2:肾细胞癌血管内皮生长因子(VEGF),其阳性表述由低到高共3个等级(1-3)x3:肾细胞癌组织内微血管数(MVC) x4:肾癌细胞核组织学分级,由低到高共4级(1-4) x5:肾细胞癌分期,由低到高共4期(1-4) y:肾细胞癌转移情况(有转移y=1; 无转移y=0)。为二分类变量。 若作单因素的Logistic回归分析,也就是分别作Y与各自变量间的回归分析,如Y与X1、Y与X2等的单因素Logistic回归分析。 2.建立数据库

3.分析步骤 (1)

(2)

上图中若为单因素回归分析,只需在Covariates协变量框内导入单一自变量如X1即可。(3) 4.分析结果 (1)数据描述 Case Processing Summary Unweighted Cases a N Percent Selected Cases Included in Analysis 26 100.0 Missing Cases 0 .0 Total 26 100.0 Unselected Cases 0 .0 Total 26 100.0 a. If weight is in effect, see classification table for the total number of cases. (2)Block 1: Method = Forward Stepwise (Likelihood Ratio)

相关文档
最新文档