关于C加加和JAVAC之父评论C与Java
Linux之父炮轰C:
Java之父评价C语言之父:我用尽了形容词
C之父评论C与Java
如果人们非要拿C和Java来作比较,我建议他们去阅读The Design and Evolution of C,看看C为什么是今天这个样子,用我在设计C时遵从的原则来检验这两种语言 。这些原则与SUN的Java开发小组所持的理念显然是不同的 。除了表面语法的相似性之外,C与Java是截然不同的语言 。在很多方面,Java更像Smalltalk 。(Sun的培训教材清楚地写道:Java在设计上采用了与C相似的语法 , 与Smalltalk相似的语义 。所以可以说Java与C是貌合神离,与Smalltalk才是心有灵犀 。)Java语言相对简单,这部分是一种错觉,部分是因为这种语言还不完整 。随着时间的推移,Java在体积和复杂程度上都会大大增长 。在体积上它会增长两到三倍 , 而且会出现一些实现相关的扩展或者库 。这是一条每个成功的商业语言都必须走过的发展之路 。随便分析一种你认为在很大范围内取得了成功的语言 , 我知道肯定是无有例外者,而且实际上这非常有道理 。
上边这段话是在Java 1.1推出之前写的 。我确信Java需要类似模板的机制,并且需要增强对于固有类型的支持 。简单地说,就是为了基本的完整性也应该做这些工作 。另外还需要做很多小的改动,大部分是扩展 。1998年秋,我从James Gosling(Java语言的创始人)那里得到一份建议书,说是要在Java中增加固有类型、操作符重载以及数学计算支持 。
还有一篇论文,是数学分析领域的世界级大师,伯克利大学的W. Kahan教授所写的How Java's Floating-Point Hurts Everyone Everywhere(且看Java的浮点运算如何危害了普天下的芸芸众生),揭露了Java的一些秘密 。我发现在电视和出版物中关于Java的鼓吹是不准确的,而且气势汹汹,让人讨厌 。大肆叫嚣凡是非Java的代码都是垃圾 , 这是对程序员的侮辱;建议把所有的保留代码都用Java重写,这是丧心病狂,既不现实也不负责任 。Sun和他的追随者似乎觉得为了对付微软罪恶的“帝国时代”,就必须如此自吹自擂 。但是侮辱和欺诈只会把那些喜欢使用不同编程语言的程序员逼到微软阵营里去 。
Java并非平台无关,它本身就是平台 。跟Windows一样,它也是一个专有的商业平台 。也就是说,你可以为Windows/Intel编写代码,也可以为Java/JVM编写代码,在任何一种情况下,你都是在为一个属于某个公司的平台写代码,这些代码都是与该公司的商业利益扯在一起的 。当然你可以使用任何一种语言,结合操作系统的机制来编写可供JVM执行的程序,但是JVM之类的东西是强烈地偏向于Java语言的 。它一点也不像是通用的、公平的、语言中立的VM/OS 。私下里,我会坚持使用可移植的C作大部分工作,用不同的语言作余下的工作 。
“Java is not platform-independent, it is the platform”,B. S的这句评语对于C用户有着很大的影响,有些C高手甚至把这句话作为自己的签名档,以表明对Java的态度和誓死捍卫C的决心 。
Linux之父炮轰C:
糟糕程序员的垃圾语言(1)2007-09-09 13:33 刘江 刘江@图灵 我要评论(14) 字号:T | TLinux之父为Linux内核开发而专门打造的版本控制软件Git已经引起了业界的广泛关注 。Dmitry Kakurin查看源代码之后,发现使用的是纯C而非C,表示不可理解 。引起了Linux之父炮轰C:糟糕程序员的垃圾语言 。AD: 2013大数据全球技术峰会低价抢票中
Linux之父炮轰C:糟糕程序员的垃圾语言Linux之父话糙理不糙不得不看的两次从C回归C的高手评论CC语言是否该扔进垃圾桶为什么每个程序员都应该学习C语言?每个程序员都应该学习C语言?我可不这么认为C语言已经死了,5个需要忘却它的理由用C设计 用C编码为什么使用CC0x:崭新的C,还是另一个Java?编程语言的三大定理动态语言为何难堪重任动态语言面面观Linux之父Linus Torvalds为了Linux内核开发而专门打造的版本控制软件Git已经引起了业界的广泛关注 。昨天,有一位Dmitry Kakurin老兄在查看了源代码之后,发现使用的是纯C而非C,表示不可理解,他直言:“别拿可移植性说事儿,这是屁话(BS,bullshit) 。“(此外 , 他还批评Git蛮力地直接操作文本,既啰嗦又易错,而且很难跟上高层代码逻辑 。)”这个BS引起了Torvalds的强烈反应,他用“*YOU* are full of bullshit.”(你才满嘴屁话呢)作为自己反驳的开场白 。接着,他先转向了对C的罕见的火药味十足的炮轰:“C是一种糟糕的(horrible)语言 。而且因为有大量不够标准的程序员在使用而使情况更糟,以至于极容易产生彻头彻尾的垃圾(total and utter crap) 。老实说,选择C就是为了把C程序员踢出去 。……我有这样的结论,任何喜欢用C而不是C开发项目的程序员可能都是我希望踢出去的人,免得他们来搞乱我参与的项目 。C会导致非常非常糟糕的设计选择 。你们这些C程序员总是一上来就用语言的那些‘漂亮的’库特性比如STL、Boost和其他彻头彻尾的垃圾,这可能对你们的程序有所‘帮助’ , 但是却会导致:
——当库无法工作时无穷无尽的折磨(别跟我说什么STL尤其是Boost很稳定而且可移植性很好,那全是屁话 , 而且一点都不可笑)
——低效的抽象编程模型 , 可能在两年之后你会注意到有些抽象效果不怎么样,但是所有代码已经依赖于围绕它设计的‘漂亮’对象模型了,如果不重写应用程序 , 就无法改正 。也就是说,使用优秀的、高效的、系统级的和可移植的C的唯一方式 , 最终还是限于使用C本身具有的所有特性 。项目限制只用C,意味着参与的人不会捣乱,也意味着会得到许多真正懂得底层问题,而不会折腾那些白痴‘对象模型’垃圾的程序员 。
所以,我很抱歉,但是对于Git这样效率是主要目标的软件,C的所谓优点只是巨大的错误 。而我们将看不到这一点的人排除在外却成了一个巨大的附加优势 。如果你想要用C写的版本控制系统,去玩Monotone吧 。他们确实使用了‘真格的数据库’,使用了‘漂亮的面向对象库’、使用了‘漂亮的C抽象’ 。可是说老实话,所有这些对某些计算机专业人士而言富于吸引力的设计决定,其最终结果确是一堆可怕、难以维护的垃圾 。”【070907更新】Torvalds和Dmitry Kakurin争论继续中 。对Torvalds的回击,Dmitry反唇相讥:“随着只用C编程的恐龙们逐渐灭绝,你很快就会发现只剩下自己一个人在固执己见 。用Git贡献者的数量是说明不了问题的 。显然C开发者也能够贡献C代码 。但是以为他们喜欢这种方式,那可就错了 。
没有C的时候我用汇编编程 。然后在C诞生之前,我转向了C 。现在我使用C和C#,而且不再走回头路 。差劲的程序员用任何语言都写不出好程序 。但是为了将差劲的贡献者拒之门外这样一个没谱的理由而惩罚优秀的开发者 , 这简直是胡闹 。”只过了10几分钟 , Torvalds就回贴了:“和你不同的是,我实实在在地给出了不喜欢C的原因 , 而且指出了它可能导致的各种问题的一些例子 。而你呢,没有给出一条像样的使用C的理由 。事实上 , Git比其他软件配置管理软件都要好,而好的品味(taste)和C正是原因之一 。”
对上面的最后一句话,Torvalds后来又做了如下补充:
“说得更具体一些:
——简单和清晰的核心数据结构,非常精益(lean)且颇具雄心的暧昧管理着它们,将“简单胜于花哨”这一方法发挥到极致 。
——有意识地不抽象数据结构和算法,因为它们恰恰是Git核心的全部要素(whole point) 。如果你想用更花哨的语言,C绝对是最糟糕的选择 。如果想要真正的高级特性,那就选择有垃圾回收或者好的系统集成的 , 而不是既缺乏C的简约(sparseness)又缺乏C的直接而且没有重要概念的高层 绑定(high-level bindings to important concepts)的东西 。一言以蔽之 , C正处在困境当中 , 它既无法帮助原型化或者简单的GUI编程足够简化从而真正可用,不是C那样积极地鼓励你使用简单和直接的语言构造的精益系统编程语言 。”(另一位同学插了一句:这还没有提到很难找到两个C编译器支持同样的特性 。)“这与什么恐龙毫无关系 。好的品味永远不会过时 。将C与汇编语言相提并论,恰恰说明你对自己所讨论的问题缺乏起码的概念(don't have a friggin idea) 。”
Java之父评价C语言之父:我用尽了形容词
摘要:Java 之父James Gosling在上周发布了关于讨论C语言之父Dennis Ritchie的简短博文称:C语言撑起了一切,他的影响巨大,并超越了科技世界 。
Java之父詹姆斯·高斯林(James Gosling)在上周发布了关于讨论C语言之父丹尼斯·里奇(Dennis Ritchie)的简短博文:丹尼斯·里奇辞世的新闻如五雷轰顶 。过去几天已经有很多资讯报道此事 。他的影响巨大,并超越了科技世界,虽然他的大多影响都不为人知,但完全可以感受到 。C语言撑起了一切 。我的整个职业生涯也是从C语言和Unix中发展而来 。对当今的大多数工程师而言 , 很难理解我在20世纪70年代感受到的幸福愉快感 。当一种编程语言最终出现,我(其他人也)可以从汇编语言提升到一种真正的编程语言 。我们可以做任何一切,过去我们得编写所有低级位系统 。在C语言之前,编程语言达不到任务:开销太大了 。系统的复杂性是真的阻碍了用汇编语言编写大型软件 。C语言就像代码的JATO 。(编注:“JATO”是“Jet-fuel assisted take off”的缩写,字面意思:“辅助起飞的喷气燃料” 。这个系统通过小型火箭提供辅助动力,以帮助超载的飞机起飞升空 。)下面是詹姆斯·高斯林此文的一些评论:Truely James. For every Computer professional in the world, the first language they come across is C. With so much of wonderfulness and which also makes the learning experience so fun and entertaining. RIP Ritchie!!!说的很对,詹姆斯!对于每个计算机专业人士,他们所接触的第一种编程语言就是C语言 。(C语言)有着如此多的令人惊奇的地方 , 这也使得学习过程非常有趣 。安息,里奇?。。reat ones are falling. I still love C. So simple. So powerful.一位巨星的陨落 。我仍然爱着C语言 。如此简单,如此强大 。I remember C being like Adventure for programmers: lots of little pits for the unwary to fall into. Even after many years there were a few I hadn't found. It was a good time.我记得C语言就是程序员的冒险:有很多小坑,一不小心就陷进去 。即便很多年过后 , 还有一些我没有发现的 。那是个美好时刻 。The equation is quite simple : Richie is like Einstein, pure Genius. All the IT is built on Kamp;R works. Thanks man, and RIP...等式非常简单:里奇就像爱因斯坦,纯粹的天才 。IT业的所有都基于肯贝汉和里奇的成果 。感谢,安息……文章出自:nighthacks译文来自:伯乐在线
如何用70行Java代码实现深度神经网络算法神经网络结构如下图所示,最左边的是输入层 , 最右边的是输出层,中间是多个隐含层,对于隐含层和输出层的每个神经节点,都是由上一层节点乘以其权重累加得到,标上“ 1”的圆圈为截距项b , 对输入层外每个节点:Y=w0*x0 w1*x1 ... wn*xn b,由此我们可以知道神经网络相当于一个多层逻辑回归的结构 。
import java.util.Random;
public class BpDeep{
public double[][] layer;//神经网络各层节点
public double[][] layerErr;//神经网络各节点误差
public double[][][] layer_weight;//各层节点权重
public double[][][] layer_weight_delta;//各层节点权重动量
public double mobp;//动量系数
public double rate;//学习系数
public BpDeep(int[] layernum, double rate, double mobp){
this.mobp = mobp;
this.rate = rate;
layer = new double[layernum.length][];
layerErr = new double[layernum.length][];
layer_weight = new double[layernum.length][][];
layer_weight_delta = new double[layernum.length][][];
Random random = new Random();
for(int l=0;llayernum.length;l){
layer[l]=new double[layernum[l]];
layerErr[l]=new double[layernum[l]];
if(l 1layernum.length){
layer_weight[l]=new double[layernum[l] 1][layernum[l 1]];
layer_weight_delta[l]=new double[layernum[l] 1][layernum[l 1]];
for(int j=0;jlayernum[l] 1;j)
for(int i=0;ilayernum[l 1];i)
layer_weight[l][j][i]=random.nextDouble();//随机初始化权重
}
}
}
//逐层向前计算输出
public double[] computeOut(double[] in){
for(int l=1;llayer.length;l){
for(int j=0;jlayer[l].length;j){
double z=layer_weight[l-1][layer[l-1].length][j];
for(int i=0;ilayer[l-1].length;i){
layer[l-1][i]=l==1?in[i]:layer[l-1][i];
z =layer_weight[l-1][i][j]*layer[l-1][i];
}
layer[l][j]=1/(1 Math.exp(-z));
}
}
return layer[layer.length-1];
}
//逐层反向计算误差并修改权重
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;jlayerErr[l].length;j)
layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);
while(l--0){
for(int j=0;jlayerErr[l].length;j){
double z = 0.0;
for(int i=0;ilayerErr[l 1].length;i){
z=z l0?layerErr[l 1][i]*layer_weight[l][j][i]:0;
layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j][i] rate*layerErr[l 1][i]*layer[l][j];//隐含层动量调整
layer_weight[l][j][i] =layer_weight_delta[l][j][i];//隐含层权重调整
if(j==layerErr[l].length-1){
layer_weight_delta[l][j 1][i]= mobp*layer_weight_delta[l][j 1][i] rate*layerErr[l 1][i];//截距动量调整
layer_weight[l][j 1][i] =layer_weight_delta[l][j 1][i];//截距权重调整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//记录误差
}
}
}
public void train(double[] in, double[] tar){
double[] out = computeOut(in);
updateWeight(tar);
}
}
分类数据和连续数据在逻辑回归中如何设值在逻辑回归中设值方法如下所述:
分类数据由用户或专家在模式级显式地说明属性的偏序:通常,分类属性或维的概念分层涉及一组属性 。连续数据在一定区间内可以任意取值、数值是连续不断的、相邻两个数值可作无限分割 。
大数据分析工具有哪些,有什么特点?常用的数据分析工具有如下几个
SAS
一般用法 。SAS由于其功能强大而且可以编程 , 很受高级用户的欢迎 。也正是基于此,它是最难掌握的软件之一 。使用SAS时,你需要编写SAS程序来处理数据,进行分析 。如果在一个程序中出现一个错误 , 找到并改正这个错误将是困难的 。
数据管理 。在数据管理方面,SAS是非常强大的,能让你用任何可能的方式来处理你的数据 。它包含SQL(结构化查询语言)过程 , 可以在SAS数据集中使用SQL查询 。但是要学习并掌握SAS软件的数据管理需要很长的时间,在Stata或SPSS中,完成许多复杂数据管理工作所使用的命令要简单的多 。然而 , SAS可以同时处理多个数据文件,使这项工作变得容易 。它可以处理的变量能够达到32,768个,以及你的硬盘空间所允许的最大数量的记录条数 。
统计分析 。SAS能够进行大多数统计分析(回归分析 , logistic回归,生存分析,方差分析,因子分析,多变量分析) 。SAS的最优之处可能在于它的方差分析 , 混合模型分析和多变量分析,而它的劣势主要是有序和多元logistic回归(因为这些命令很难),以及稳健方法(它难以完成稳健回归和其他稳健方法) 。尽管支持调查数据的分析,但与Stata比较仍然是相当有限的 。
绘图功能 。在所有的统计软件中,SAS有最强大的绘图工具,由SAS/Graph模块提供 。然而,SAS/Graph模块的学习也是非常专业而复杂,图形的制作主要使用程序语言 。SAS 8虽然可以通过点击鼠标来交互式的绘图,但不象SPSS那样简单 。
总结 。SAS适合高级用户使用 。它的学习过程是艰苦的,最初的阶段会使人灰心丧气 。然而它还是以强大的数据管理和同时处理大批数据文件的功能 , 得到高级用户的青睐 。
Stata
一般用法 。Stata以其简单易懂和功能强大受到初学者和高级用户的普遍欢迎 。使用时可以每次只输入一个命令(适合初学者),也可以通过一个Stata程序一次输入多个命令(适合高级用户) 。这样的话,即使发生错误,也较容易找出并加以修改 。
数据管理 。尽管Stata的数据管理能力没有SAS那么强大,它仍然有很多功能较强且简单的数据管理命令,能够让复杂的操作变得容易 。Stata主要用于每次对一个数据文件进行操作,难以同时处理多个文件 。随着Stata/SE的推出 , 现在一个Stata数据文件中的变量可以达到32,768,但是当一个数据文件超越计算机内存所允许的范围时 , 你可能无法分析它 。
统计分析 。Stata也能够进行大多数统计分析(回归分析,logistic回归,生存分析 , 方差分析,因子分析,以及一些多变量分析) 。Stata最大的优势可能在于回归分析(它包含易于使用的回归分析特征工具) , logistic回归(附加有解释logistic回归结果的程序,易用于有序和多元logistic回归) 。Stata也有一系列很好的稳健方法 , 包括稳健回归,稳健标准误的回归,以及其他包含稳健标准误估计的命令 。此外,在调查数据分析领域,Stata有着明显优势,能提供回归分析,logistic回归,泊松回归 , 概率回归等的调查数据分析 。它的不足之处在于方差分析和传统的多变量方法(多变量方差分析,判别分析等) 。
绘图功能 。正如SPSS,Stata能提供一些命令或鼠标点击的交互界面来绘图 。与SPSS不同的是它没有图形编辑器 。在三种软件中,它的绘图命令的句法是最简单的,功能却最强大 。图形质量也很好,可以达到出版的要求 。另外,这些图形很好的发挥了补充统计分析的功能 , 例如,许多命令可以简化回归判别过程中散点图的制作 。
总结 。Stata较好地实现了使用简便和功能强大两者的结合 。尽管其简单易学 , 它在数据管理和许多前沿统计方法中的功能还是非常强大的 。用户可以很容易的下载到别人已有的程序,也可以自己去编写,并使之与Stata紧密结合 。
SPSS
一般用法 。SPSS非常容易使用,故最为初学者所接受 。它有一个可以点击的交互界面 , 能够使用下拉菜单来选择所需要执行的命令 。它也有一个通过拷贝和粘贴的方法来学习其“句法”语言,但是这些句法通常非常复杂而且不是很直观 。
数据管理 。SPSS有一个类似于Excel的界面友好的数据编辑器,可以用来输入和定义数据(缺失值,数值标签等等) 。它不是功能很强的数据管理工具(尽管SPS 11版增加了一些增大数据文件的命令 , 其效果有限) 。SPSS也主要用于对一个文件进行操作,难以胜任同时处理多个文件 。它的数据文件有4096个变量,记录的数量则是由你的磁盘空间来限定 。
统计分析 。SPSS也能够进行大多数统计分析(回归分析,logistic回归,生存分析 , 方差分析 , 因子分析,多变量分析) 。它的优势在于方差分析(SPSS能完成多种特殊效应的检验)和多变量分析(多元方差分析,因子分析,判别分析等),SPSS11.5版还新增了混合模型分析的功能 。其缺点是没有稳健方法(无法完成稳健回归或得到稳健标准误),缺乏调查数据分析(SPSS12版增加了完成部分过程的模块) 。
绘图功能 。SPSS绘图的交互界面非常简单 , 一旦你绘出图形 , 你可以根据需要通过点击来修改 。这种图形质量极佳,还能粘贴到其他文件中(Word 文档或Powerpoint等) 。SPSS也有用于绘图的编程语句,但是无法产生交互界面作图的一些效果 。这种语句比Stata语句难,但比SAS语句简单(功能稍逊) 。
总结 。SPSS致力于简便易行(其口号是“真正统计 , 确实简单”),并且取得了成功 。但是如果你是高级用户,随着时间推移你会对它丧失兴趣 。SPSS是制图方面的强手,由于缺少稳健和调查的方法,处理前沿的统计过程是其弱项 。
总体评价
每个软件都有其独到之处,也难免有其软肋所在 。总的来说,SAS,Stata和SPSS是能够用于多种统计分析的一组工具 。通过Stat/Transfer可以在数秒或数分钟内实现不同数据文件的转换 。因此 , 可以根据你所处理问题的性质来选择不同的软件 。举例来说,如果你想通过混合模型来进行分析,你可以选择SAS;进行logistic回归则选择Stata;若是要进行方差分析,最佳的选择当然是SPSS 。假如你经常从事统计分析,强烈建议您把上述软件收集到你的工具包以便于数据处理 。
多因素非条件logistic回归分析怎么做多因素非条件logistic回归分析怎么做
二元logit回归
1.开启资料,依次点选多项逻辑回归代码java: *** yse--regression--binarylogistic , 开启二分回归对话方块 。
2.将因变数和自变数放入格子多项逻辑回归代码java的列表里 , 上面的是因变数,下面的是自变数(单变数拉入一个,多因素拉入多个) 。
3.设定回归方法,这里选择最简单的方法:enter,它指的是将所有的变数一次纳入到方程 。其他方法都是逐步进入的方法 。
4.等级资料,连续资料不需要设定虚拟变数 。多分类变数需要设定虚拟变数 。
虚拟变数ABCD四类,以a为参考,那么解释就是b相对于a有无影响 , c相对于a有无影响 , d相对于a有无影响 。
5.选项里面至少选择95%CI 。
点选ok 。
统计专业研究生工作室原创,请勿复杂贴上
我已经做出结果,但是p值很大,说明没有统计学意义,为何?有懂得原因的吗?(上述自己说的第一步没有做,只做了第二步)
一般是先做单因素分析,再做多因素分析多项逻辑回归代码java;
多元线性回归可以通过标准引数β来确定贡献大小,多元logistic回归的不知道用什么来确定
多元logistic回归与多因素logistic回归分析一样吗
二者是一样的 。但如果是多项逻辑回归则和多因素逻辑回归不同 。多项逻辑回归是相对于二项逻辑回归而言的,多项和二项指的都是因变数的水平数 , 而多元和多因素逻辑回归的多元和多因素都是指自变数的个数 。(南心网 SPSS逻辑回归分析)
多因素logistic回归分析 spss怎样输资料
跟其他分析的 资料路录入方法相同
一行对应一个案例资料
一列对应一个变数
有多少样本就有多少行,有多少变数就有多少列
在多因素logistic回归分析中OR值小于1怎么解释
一般来说是保护作用,但是要看多项逻辑回归代码java你具体赋值情况
统计专业,为您服务
首先澄清几个概念:OR是odds ratio 而 logistic里关注的是odds 不是odds的比值odds ratio odds= 发生的概率 除以 不发生的概率 logistic 回归的公式是: log O = alphaBx 那么 O = Exp(alphaBx) = Exp(alpha)*Exp(Bx) 所以当x每增加1 x--
二元logistic回归能做多因素分析吗
logistic回归 主要是看因变数的分类
如果因变数是二分类的 就用二元logistic回归
如果因变数是多个分类的 , 就用多元有序或者无序的logistic回归
所以多项逻辑回归代码java你首先看你的因变数发病次数 是否算是分类变数或者是有几个分类,如果发病次数仅有很小的几个分类,用logistic回归没什么问题,如果发病次数有很多分类,可以尝试将其作为连续性变数 进行普通回归
怎样应用SPSS进行多因素Logistic 回归分析
Logistic回归主要分为三类,一种是因变数为二分类得logistic回归,这种回归叫做二项logistic回归,一种是因变数为无序多分类得logistic回归,比如倾向于选择哪种产品,这种回归叫做多项logistic回归 。还有一种是因变数为有序多分类的logistic回归,比如病重的程度是高,中,低呀等等,这种回归也叫累积logistic回归,或者序次logistic回归 。
二值logistic回归:
选择分析——回归——二元logistic , 开启主面板 , 因变数勾选你的二分类变数,这个没有什么疑问,然后看下边写着一个协变数 。有没有很奇怪什么叫做协变数?在二元logistic回归里边可以认为协变数类似于自变数,或者就是自变数 。把你的自变数选到协变数的框框里边 。
细心的朋友会发现,在指向协变数的那个箭头下边,还有一个小小的按钮,标著a*b , 这个按钮的作用是用来选择互动项的 。我们知道,有时候两个变数合在一起会产生新的效应 , 比如年龄和结婚次数综合在一起,会对健康程度有一个新的影响,这时候,我们就认为两者有互动效应 。那么我们为了模型的准确 , 就把这个互动效应也选到模型里去 。我们在右边的那个框框里选择变数a , 按住ctrl,在选择变数b,那么我们就同时选住这两个变量了,然后点那个a*b的按钮,这样,一个新的名字很长的变数就出现在协变数的框框里了,就是我们的互动作用的变数 。
然后在下边有一个方法的下拉选单 。预设的是进入,就是强迫所有选择的变数都进入到模型里边 。除去进入法以外,还有三种向前法,三种向后法 。一般预设进入就可以了,如果做出来的模型有变数的p值不合格,就用其他方法在做 。再下边的选择变数则是用来选择你的个案的 。一般也不用管它 。
选好主面板以后,单击分类(右上角) , 开启分类对话方块 。在这个对话方块里边,左边的协变数的框框里边有你选好的自变数,右边写着分类协变数的框框则是空白的 。你要把协变数里边的字元型变数和分类变数选到分类协变数里边去(系统会自动生成哑变数来方便分析,什么事哑变数具体参照前文) 。这里的字元型变数指的是用值标签标注过得变数,不然光文字,系统也没法给你分析啊 。选好以后,分类协变数下边还有一个更改对比的框框,我们知道,对于分类变数,spss需要有一个参照,每个分类都通过和这个参照进行比较来得到结果 , 更改对比这个框框就是用来选择参照的 。预设的对比是指示符,也就是每个分类都和总体进行比较,除了指示符以外还有简单,差值等 。这个框框不是很重要,预设就可以了 。
点选继续 。然后开启储存对话方块,勾选概率,组成员,包含协方差矩阵 。点选继续,开启选项对话方块 , 勾选分类图 , 估计值的相关性 , 迭代历史,exp(B)的CI,在模型中包含常数,输出——在每个步骤中 。如果你的协变数有连续型的,或者小样本,那还要勾选Ho *** er-Lemeshow拟合度 , 这个拟合度表现的会较好一些 。
继续,确定 。
然后,就会输出结果了 。主要会输出六个表 。
第一个表是模型系数综合检验表,要看他模型的p值是不是小于0.05,判断我们这个logistic回归方程有没有意义 。
第二个表示模型汇总表 。这个表里有两个R^2 , 叫做广义决定系数,也叫伪R^2,作用类似于线性回归里的决定系数,也是表示这个方程能够解释模型的百分之多少 。由于计算方法不同,这两个广义决定系数的值往往不一样 , 但是出入并不会很大 。
在下边的分类表则表述了模型的稳定性 。这个表最后一行百分比校正下边的三个资料列出来在实际值为0或者1时,模型预测正确的百分比,以及模型总的预测正确率 。一般认为预测正确概率达到百分之五十就是良好(标准真够低的),当然正确率越高越好 。
在然后就是最重要的表了 , 方程中的变量表 。第一行那个B下边是每个变数的系数 。第五行的p值会告诉你每个变数是否适合留在方程里 。如果有某个变数不适合 , 那就要从新去掉这个变数做回归 。根据这个表就可以写出logistic方程了:P=Exp(常量 a1*变数1 a2*变数2. 。。。)/(1 Exp(常量 a1*变数1 a2*变数2. 。。。)) 。如果大家学过一点统计,那就应该对这个形式的方程不陌生 。提供变数 , 它最后算出来会是一个介于0和1的数,也就是你的模型里设定的值比较大的情况发生的概率,比如你想推算会不会治愈,你设0治愈,1为没有治愈 。那你的模型算出来就是没有治愈的概率 。如果你想直接计算治愈的概率,那就需要更改一下设定,用1去代表治愈 。
此外倒数后两列有一个EXP(B),也就是OR值,哦 , 这个可不是或者的意思,OR值是优势比 。线上性回归里边我们用标准化系数来对比两个自变数对于因变数的影响力的强弱,在logistic回归里边我们用优势比来比较不同的情况对于因变数的影响 。举个例子 。比如我想看性别对于某种病是否好转的影响,假设0代表女,1代表男,0代表不好转,1代表好转 。发现这个变数的OR值为2.9 , 那么也就是说男人的好转的可能是女人好转的2.9倍 。注意 , 这里都是以数值较大的那个情况为基准的 。而且OR值可以直接给出这个倍数 。如果是0,1,2各代表一类情况的时候,那就是2是1的2.9倍,1是0的2.9倍,以此类推 。OR值对于方程没什么贡献,但是有助于直观的理解模型 。在使用OR值得时候一定要结合它95%的置信区间来进行判断 。
此外还有相关矩阵表和概率直方图,就不再介绍了 。
多项logistic回归:
选择分析——回归——多项logistic,开启主面板,因变数大家都知道选什么,因变数下边有一个参考类别,预设的第一类别就可以 。再然后出现了两个框框,因子和协变数 。很明显,这两个框框都是要你选因变数的,那么到底有什么区别呢?嘿嘿,区别就在于 , 因子里边放的是无序的分类变数,比如性别,职业什么的,以及连续变数(实际上做logistic回归时大部分自变数都是分类变数,连续变数是比较少的 。),而协变数里边放的是等级资料,比如病情的严重程度?。?年龄?。ㄒ允晡桓瞿炅涠稳觯荒暌桓龅幕熬涂闯闪涫苫故牵┲嗟?。在二项logistic回归里边,系统会自动生成哑变数,可是在多项logistic回归里边 , 就要自己手动设定了 。参照上边的解释,不难知道设定好的哑变数要放到因子那个框框里去 。
然后点开模型那个对话方块,哇 , 好恐怖的一个对话方块,都不知道是干嘛的 。好,我们一点点来看 。上边我们已经说过互动作用是干嘛的了,那么不难理解,主效应就是变数本身对模型的影响 。明确了这一点以后,这个对话方块就没有那么难选了 。指定模型那一栏有三个模型,主效应指的是只做自变数和因变数的方程,就是最普通的那种 。全因子指的是包含了所有主效应和所有因子和因子的互动效应的模型(我也不明白为什么只有全因子,没有全协变数 。这个问题真的很难,所以别追问我啦 。)第三个是设定/步进式 。这个是自己手动设定互动项和主效应项的,而且还可以设定这个项是强制输入的还是逐步进入的 。这个概念就不用再罗嗦了吧?。?
点选继续,开启统计量对话方块,勾选个案处理摘要,伪R方,步骤摘要,模型拟合度资讯,单元格可能性,分类表,拟合度,估计,似然比检验,继续 。开启条件,全勾,继续,开启选项,勾选为分级强制条目和移除专案 。开启储存,勾选包含协方差矩阵 。确定(总算选完了) 。
结果和二项logistic回归差不多,就是多了一个似然比检验,p值小于0.05认为变数有意义 。然后我们直接看引数估计表 。假设我们的因变数有n个类 , 那引数估计表会给出n-1组的截距,变数1,变数2 。我们我们用Zm代表Exp(常量m am1*变数1 am2*变数2。。。),那么就有第m类情况发生的概率为Zn/1 Z2 Z3 …… Zn(如果我们以第一类为参考类别的话 , 我们就不会有关于第一类的引数,那么第一类就是预设的1,也就是说Z1为1) 。
有序回归(累积logistic回归):
选择选单分析——回归——有序,开启主面板 。因变数,因子,协变数如何选取就不在重复了 。选项对话方块预设 。开启输出对话方块,勾选拟合度统计,摘要统计,引数估计 , 平行线检验,估计响应概率,实际类别概率 , 确定,位置对话方块和上文的模型对话方块类似,也不重复了 。确定 。
结果里边特有的一个表是平行线检验表 。这个表的p值小于0.05则认为斜率系数对于不同的类别是不一样的 。此外引数估计表得出的引数也有所不同 。假设我们的因变数有四个水平 , 自变数有两个,那么引数估计表会给出三个阈值a1,a2,a3(也就是截距),两个自变数的引数m,n 。计算方程时 , 首先算三个Link值,Link1=a1 m*x1 n*x2 , Link2=a2 m*x1 n*x2,Link3=a3 m*x1 n*x2,(仅有截距不同)有了link值以后,p1=1/(1 exp(link1)),p1 p2=1/(1 exp(link2)),p1 p2 p3=1/(1 exp(link3)),p1 p2 p3 p4=1..
通过上边的这几个方程就能计算出各自的概率了 。
Logistic回归到这里基本就已经结束了 。大家一定要记熟公式,弄混可就糟糕了 。希望能对你有所帮助呦 。
logit回归
1.开启资料,依次点?。?*** yse--regression--binarylogistic,开启二分回归对话方块 。
2.将因变数和自变数放入格子的列表里,上面的是因变数 , 下面的是自变数(单变数拉入一个,多因素拉入多个) 。
3.设定回归方法,这里选择最简单的方法:enter,它指的是将所有的变数一次纳入到方程 。其他方法都是逐步进入的方法 。
4.等级资料,连续资料不需要设定虚拟变数 。多分类变数需要设定虚拟变数 。
5.选项里面至少选择95%CI 。
点选ok 。
统计专业研究生工作室原创 , 请勿复杂贴上
多因素logistic回归分析步骤步骤如下:
1、把自己需要分析的数据导入到SPSS,点击左上角的文件进行打开,选择弹出对话框中的数据 。
2、点击工具栏上的分析,依次选择回归,然后选择“多项Logistic” 多元线性回归分析和logistic回归分析都可以的 。
3、把变量依次移动到右侧的因变量、因子和协变量框内 。
4、就可以在度量标准中看到度量数据 。
5、再对多项逻辑回归的模型、统计量、条件、选项和保存进行设置 。
6、点击确定,即可用SPSS把多因素Logistic回归分析做好 。
多因素logistic回归是指包含的研究因素较多,如二项logistic回归、多项Logistic回归等 。
回答于 2022-05-05
【多项逻辑回归代码java 逻辑回归java实现】关于多项逻辑回归代码java和逻辑回归java实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 什么叫cpu步进,什么叫步进式开水器
- 鸿蒙系统股权分布,鸿蒙系统相关股
- 缓存数据库redis怎么使用,redis缓存数据类型有哪些
- 现在oracle怎么样 oracle发展前景
- 发音乐视频怎么添加小程序,如何发带音乐的小视频
- 提出区块链,区块链技术谁提出来的
- chatgpt怎么抓取数据,抓取tcp数据包
- oracle如何写循环 oraclefor循环
- key属性css,css @key