怎么做变量来做jquery id选择器 变量

android studio下的NDK开发详解(一)
好记性不如烂笔头,开始坚持写博客,学一点记一点,只为了生活更好。学了一年多的硬件,现在来做android,不知道是对是错,跟着感觉走,开始总是想把android和硬件挂上勾,所以第一个android应用写的是关于蓝牙的。现在学习NDK开发,有时说得也是JNI开发。那为什么要学习JNI,JNI会学习到比较底层的东西,java可以实现上层应用的开发,但是不能写底层驱动,有些android项目必须和底层硬件打交道,比如要精确快速的获取某种传感器的值,那么java是不能办到的,那怎么办,就通过JNI开发,通过c/c++完成底层驱动或者值得获取,然后将值传回到java层。同样java层也可以将数据传递给c/c++层,这样通过JNI完成数据的交互。那为什么java不能访问底层呢?先看一张java程序的执行流程图:java源代码通过java编译器后变成字节码,然后装载到java平台运行期环境(java虚拟机),在不同的平台下游不同的java虚拟机,window下有window的,linux下有linux下的java虚拟机,java虚拟机屏蔽了与底层直接的细节,做到java运行与平台无关,所以java是不能访问底层的那么java层怎么就能访问到c/c++层并将数据传输过去:c/c++又怎么能将数据传回java层呢。出来在java层通过native标记某个方法是本地方法外,重要是需要NDK这个android 本地开发工具集&& & & & 什么是NDK(android native develop kits ):android 本地开发工具集 ,可以把c/c++ -&编译成一个 linux下可以执行的二进制文件&java代码里面就可以通过jni 调用执行二进制的文件.& & & &&什么是JNI&:java本地开发接口,JNI是一个协议这个协议用来沟通java代码和外部的本地代码(c/c++).通过这个协议,java代码就可以调用外部的c/c++,代码外部的c/c++代码也可以调用java代码。& JNI开发用途:驱动开发&(wifi-hotspot) 2.3无线热点共享 &,Native code效率高,数学运算,实时渲染的游戏上,音视频处理(极品飞车,opengl,ffmpeg),复用代码(文件压缩,人脸识别…)等。& & &下面进入主题:JNI开发环境配置及简单的程序实现。& & &一:需要的工具及资源:开发工具,android studio,NDK开发工具集,至于没有的可以到网上下载,我用的是android studio1.3和&android-ndk-r10,当然不必和我一样的,好像听网上说android &studio1.3开始支持DNK开发,而且支持也不太好的,经过这几天的学习,真的是感觉支持不是很好的,最新的NDK开发工具集集成了cygwin(一个模拟Linux运行环境的软件),所以就不像以前那样还要***什么cygwin。& & &环境配置步骤如下(简单的说一下,网上有很多教程):& & &1 解压NDK开发工具集,随便哪里都行,看你自己的习惯,但是还是要自己知道,别什么时候不知不觉删了,然后开发JNI始终不行,怎么都找不到错误,那就杯具了。& & & 2打开android &studio,依次点击:File -&ProjectStructure:如图:点击右边,选择你解压的NDK,点击应用。这一步将工具包关联到android &studio。在 local.properties&文件中设置ndk的路径:就是你解压的NDK工具集的路径 &我的是&E:/Android/android-ndk-r10,注意要对应加斜杠到这里我说JNI(有时说的NDK开发,一样的,叫法不同)环境初步建好了,不想eclipse那样什么cygwin啊,怎么还要ndk-build的啊,我说什么都不用,就用一个命令就行了,下面就开始我们的第一个小demo。程序过程讲解:一:头文件生成:第一步:像平时一样将一个空的android工程。第二部:前面说了,要用native来标识一个方法,告诉程序这是一个本地方法。程序如下public class NDK extends Activity{
System.loadLibrary(&MyJni&);//导入生成的链接库文件
public native String getStringFromNative();//本地方法
public native String getString_From_c();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myjni);
System.out.println(getStringFromNative());
public void onClick(View view) {
System.out.println(getString_From_c());
Toast.makeText(this, getStringFromNative(), Toast.LENGTH_LONG).show();
}} 这一步可以先不加这行代码:System.loadLibrary(&MyJni&);//导入生成的链接库文件 ,因为这里还没有建立C文件,不能生成库文件。 然后make&project一下,目的就是编译成对应的class文件。然后根据生成的class文件,利用javah生成对应的&.h头文件。如果没有编译就执行javah命令会提示找不到这个类文件的。下面是我的工程界面;这里说一下:我工程里面的本地方法显示是红色,我一开始以为不能进行JNI开发,或者有错误,包括我后面的C文件和头文件里面也有很多地方是红色的,我开始定义这些方法的时候是红色的,但是有时又不是的,不知道是android studio对NDK支持不太好,还是怎么得,但是后面开发JNI程序没有任何影响的。所以就没有关了,如果那位大神知道还望告诉我一下,将非常感激。第三部:打开命令窗口,点击view -&ToolsWindows-&Terminal,如下图:进来后默认是指向当前的工程目录,接下来输入命令:cd app/src/main 回车,切换到main目录下:如图:至于怎么理解命令,建议你去学一下linux系统,这事linux最基本的操作。第四部:输入javah -d jni -classpath E:/Android/sdk/platforms/android-22/android.../../build/intermediates/classes/debug .ndkdemo.NDK(注意前后有英文的;号隔开的哈)
生成头文件(要先编译程序的,不然会报错)。可能有些人看到这里就茫然了,这么长怎么写出来的哟,这怎么记得到的,我告诉大家根本不用记,我给你说怎么得来的,你们就能很快写出来了,是不是真的哟,不信试一试的。首先:javah是生成头文件需要的工具,这个很好记得把,相信学java是都用过的。-d jni 在工程下生成jni目录,到时会在这个目录下建JNI开始的C/C++源文件的。-classpath E:/Android/sdk/platforms/android-22/android.jar 这个就是你SDK文件下android.jar所在的文件位置,找到后复制即可。在学java的时候讲了这个的,可以将E:/Android/sdk/platforms/android-22/android.jar配置到环境变量就可以不写出来,因为在生成头文件是需要这个jar包,因为我没有配置到环境变量,所以这里就显示写出来。这部分很好搞定把。前面好弄,那后面部分怎了弄得,相信学过linux的很快能够知道的。../../build/intermediates/classes/debug .ndkdemo.NDK&首先是 ../../build/intermediates/classes/debug,结合到下面的图看:..表示返回上级目录,../..表示返回上两级目录,也就是返回到那层目录,然后明白这个了啥../../build/intermediates/classes/debug,指向debug目录,然后空格和后面隔离,然后就是后面部分.ndkdemo.NDK,看上图明白啥,是该类的全路径,这里有.隔离开,平时写类的全路径都是用的.号,生成头文件是将类对应的class文件生成二进制文件,所以要指向这里的,然后回车就能完成了头文件的生成。意思是将该文件目录下的NDK.class文件生成相应的头文件。打开jni目录下会有本地方法相应的映射方法定义。在jni目录下建立C源文件网上说需要在jni下多建一个空的C文件,不让会出错,到底出什么错我也不知道的,反正我多不多建都没有什么影响的,不过多建一个没什么影响,也就建了。jni.c代码如下:#include &example_daosong_com_ndkdemo_NDK.h&//#include &android/log.h&//#define
&System.out&//#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG,
__VA_ARGS__)//#define LOGINFO(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG,
__VA_ARGS__)JNIEXPORT jstring JNICALL Java_example_daosong_com_ndkdemo_NDK_getStringFromNative
(JNIEnv * env, jobject obj){
// LOGINFO(&LOGINFO&);
return (*env)-&NewStringUTF(env,&NDK 测试成功&);}jstring Java_example_daosong_com_ndkdemo_NDK_getString_1From_1c
(JNIEnv * env, jobject jobject){
(*(*env)).NewStringUTF(env,&NDK 来自于C文件&);}讲到这里如果要运行还得配置一个地方:现在运行控制台就会打印相应的消息(至于为什么这么写,代码代表什么意思,我会在下一篇博客讲解),不是eclipse还要配置android.mk这么文件吗?android &studio不用,你还真猜对了,不过不是说不用就代表他没有,只不过这个配置过程不过你来做,你要做的就是配置上图的代码。那android.mk在哪里的呢?看下图:是不是是曾相识啊,对就是它。不知不觉就是深夜1点多了,下面给出我的工程,里面有log打印相关的知识,这个将在下一篇博客详细讲解,如果有什么错误,欢迎大家指出。http://download.csdn.net/detail/tuoguang/9068899
最新教程周点击榜
微信扫一扫您现在的位置:&&>&&>&&>&&>&正文
医学统计之星
§13.3&&& Cox Regression过程
上面给大家介绍的是两种生存分析方法,但它们只能研究一至两个因素对生存时间的影响,当对生存时间的影响因素有多个时,它们就无能为力了,下面我给大家介绍Cox Regression过程,这是一种专门用于生存时间的多变量分析的统计方法。
Cox Regression过程主要用于:
1、 用以描述多个变量对生存时间的影响。此时可控制一个或几个因素,考察其他因素对生存时间的影响,及各因素之间的交互作用。
例13.3 40名肺癌患者的生存资料(详见胡克震主编的《医学随访统计方法》1993,77页)
生活能力评分
诊断到研究时间
注:原数据库是用亚变量定义肺癌分类:0,0,0为其它癌;1,0,0为鳞癌;0,1,0为小细胞癌;0,0,1为腺癌。表中的最后一个变量是我加上去的癌症类别,1为鳞癌;2为小细胞癌;3为腺癌;4为其它癌。实践表明结果与用亚变量计算一样。
图9&&& Cox回归主对话框
【Time】框、【Status】框前文已经介绍过了,这里我就不再废话唠叨的了。Block 1 of 1右边的Next钮被激活。这个按钮用于确定不同自变量进入回归方程的方法,详见Method框的内容。用同一种方法进入回归方程的自变量在同一个Covariates框内。
【Covariates】框
选入自/协变量,即选入你认为可能对生存时间有影响的变量。
【Method】框
选择自变量进入Cox回归方程的方法,SPSS提供下面几种方法:
Enter: Covariates框内的全部变量均进入回归模型。
Forward: Conditional: 基于条件参数估计的向前法。
Forward: LR: 基于偏最大似然估计的向前法。
Forward: Wald: 基于Wald统计量的向前法。
Backward: Conditional: 基于条件参数估计的后退法。
Backward: LR: 基于偏最大似然估计的后退法。
Backward: Wald: 基于Wald统计量的后退法。
【Strata】框
定义分层因素,将生存时间按分层因素分别进行Cox回归。
【Categorical】选项
用于告诉系统,Covariates框内的变量中哪些是分类变量或字符型变量。系统默认字符型变量为分类变量,数字型变量为连续型变量。
选入自变量后,categorical钮被激活。按categorical钮,进入确定分类变量的对话框。见图10。
图10&& 确定分类变量对话框
左边的Covariates框中列出了刚刚被选取的自变量,将分类变量选入Categorical Covariates框中。此时Change Contrast框被激活,请你选择比较方法,即计算参数OR/βi的方法。当选入分类变量后,Change Contrast框被激活,此时可选择比较方法。SPSS提供下面几种比较方法。
Indicator:指示对比。用于指定某一分类变量的基线,即参照水平。这样计算出来的参数OR/βi是以该变量的第一个或最后一个水平为基准水平(取决于下面的reference category中你选择的是last还是first)。在这里SPSS自动创建亚变量,对照水平在对比分类矩阵中用0行代表。在这里我再多说两句,如本例中的肿瘤类型,若规定鳞癌为1,小细胞癌为2,腺癌为3,其它癌为4。若选indicator及last,则以其它癌为参照,计算出来的OR及βi是以其它癌为基准,即其它癌的OR为1,其他计算出来的OR值是与其它癌相比的结果。
Simple:差别对比。可计算该分类变量的各水平与参照水平相比的OR值。参照水平自己当然就不用跟自己相比了。对于本例来说,Simple与Indicator选项是一样的,前提是下面的Reference Category中你所选择的同是last(或first)。
Difference:差别对比。分类变量欲比较水平与其前面的各水平平均值进行比较,当然也不包括第一水平。与Helmert法相反,因此也叫反Helmert法。如3水平与1、2水平的平均值相比,下同。
&Helmert:赫尔默特对比。分类变量欲比较水平与其后面各水平平均值进行比较,当然不包括最后一个水平。
&Repeated:重复对比。分类变量的各水平与其前面相邻的水平相比较(第一水平除外)。
&Polynomial:多项式对比。仅用于数字型的分类变量。无效假设是假设各水平是等距离的(可以是线性的关系,也可以是立方、四次方的关系)。例如年龄每增加10岁,死亡风险的增加值是一样的,但实际情况常常与此相反,如在20岁与60岁年龄段,年龄都增加10岁,所增加的死亡风险肯定是不一样的,具体情况需根据各人的研究课题,专业而定。
&Deviation:离差对比。除了所规定的参照水平外,其余每个水平均与总体水平相比。
Reference category:如果你选择了Deviation, Simple, 或Indicator三个选项,就必须选择First或Last作为参照水平。
完成上述选择后,击change钮,确认选择。
你若对上面写的一段不感兴趣的话,可跳过去,直接用系统默认的选项。
【Plots】选项
图11&&&&&&&&&&&&& Cox回归统计图对话框
&Survival:累积生存函数曲线。
&Hazard:累积风险函数曲线。
&Log minus log:对数累积生存函数乘以-1后再取对数。
&One minus survival:生存函数被1减后的曲线。
Change Value:系统默认用各变量的均数进行作图,但对字符型变量如癌症类型取均值则没有实际意义。若用分类变量的其它水平进行作图,则选定该变量,此时Change Value钮被激活,按Value钮,在其右边的框内输入你所想要用于作图的值。击Change。
Separate Line for:输入分类变量的名称,此时可以用分类变量的不同水平进行作图,对于本例则可作出不同癌症的曲线。此分类变量必须包括在前面的自变量框中。
【Save】存为新变量
图12&&&&& Cox回归存为新变量对话框
lSurvival:生存函数。
&Function:累积生存函数估计值。
&Standard error:累积生存函数估计值的标准误。
&Log minus log:对数累积生存函数乘以-1后再取对数。
lDiagnostics:回归诊断。
&Hazard function Cox-Snell:残差。
&Partial residual:偏残差。
&Dfbeta(s):剔除某一观察单位后的回归系数变化量。
&X*Beta:线性预测得分。
【Options】选项
击Options按钮,弹出选项对话框。
图13&& Cox回归选项对话框
lModel Statistics:模型统计量。
&CI for exp(&) 95%:相对危险度的可信区间。系统默认95%可信区间。
&Correlation of estimates:回归系数的相关阵。
lDisplay model:输出模型方式。
lAt each step:输出每一步的模型。系统默认。
lAt last step:输出最后一步的模型。
lProbability for Stepwise:模型保留变量的显著性水平。
&Entry:系统默认选入变量为P≤0.05。
&Removal:系统默认剔除变量为P>0.10。
&Maximum Iterations:最大迭代次数,系统默认20次。
&Display baseline function:输出风险基准函数以及基于各协变量均值的生存函数与风险函数。
操作如下:
1.Analyze==&Survival ==&Cox regression
2.Time框:选入survival time
3.Status框:选入status;击define events钮,在single value框右边的空格中输入1;
4.Covariate框:选入x1,x2,x3,x7,x8;
5.Categorical列表框:选入x8;
6.Plots 列表框:
lPlot Type:选
lSeparate Line for:选入x8;
7.Option列表框:
lModel Statistics:
&选CI for exp(&):输出回归系数&的95%可信区间。
&选Correlation of estimate:输出自变量的相关矩阵。
Cox Regression
上表输出总例数、删失例数、失访例数。
输出各种癌症的频数及系统所赋的亚变量x81、x82、x83值,当癌症类型是鳞癌时,x81取值为1,其它亚变量取值为0,依此类推。
Block 0: Beginning Block
模型拟合迭代过程,可不管它。
Block1: Method = Enter
描述模型参数(常数项除外)是否全为0,本例,χ2=30.120,自由度υ=7,P=0.000。说明βI不全为0。
对回归方程各参数的估计,B即&值;SE,标准误;Wald,Wald卡方;df,自由度;sig,自由度;exp(B),OR值;95%Ci for EXP(B),OR值的95%可信区间。
自变量的相关矩阵。本例,X1与X2的相关系数是0.072,其它依此类推。
输出自变量的均数及其在不同模式下的取值,因X1,X2,X3,X7四个变量没有生成亚变量,故在此输出它们的均数。
输出在各自变量的均值水平时的累积生存函数曲线。
输出各种癌症的累积生存函数曲线。
§13.4& Cox w/Time-Dep Cov过程
Cox w/Time-Dep Cov过程应用于:
1.在建立Cox回归方程时,风险比例可能会随时间变化而变化,即有些危险因素作用的强度随时间而变化,这样的资料是不适合前面所讲的一般的Cox回归模型的。此时,就应改为时间依存协变量模型,也称为非比例风险模型。你可把所怀疑的那个协变量及时间变量T_定义成时间依存协变量(多个协变量时就必须用编程来做了),常用的方法是把它们简单地进行相乘,然后通过对时间依存协变量系数的显著性检验来判断比例风险是否合理。
2.用到Cox w/Time-Dep Cov过程的另一种情况是:有些变量虽然在不同的时间点取不同的值但与时间并非系统地相关,在这种情况下,需用逻辑表达式定义一个分段时间依存协变量,逻辑表达式取值1时为真,取0时为假。用一系列的逻辑表达式,你可以从一系列观测记录中建立自己的时间依存变量。例如:对病人血压每周观察一次,共观察4次,(变量名为BP1至BP4)。时间依存协变量可以这样定义:(T_ & 1) * BP1 + (T_ &= 1 & T_ & 2) * BP2 + (T_ &= 2 & T_ & 3) * BP3 + (T_ &= 3 & T_ & 4) * BP4(&表示“逻辑与”,即一般编程语言中的“AND”)。请注意括号中的值只能有一个取1,而其它的值只能取0,也就是说,这个函数意味着当时间小于一周时(此时第一个括号内取值为1,而其它括号内取值为0)使用BP1的值,大于一周而小于两周时使用BP2的值,依次类推。
下面请大家跟我一起看例子。因我到处找不到例子,所以我自己编了一个(因此我在此仅列出3例)。
例13.4 27名病人共测了4次血压,计算对生存时间的影响。
图14&&&&& 构造时间依存变量对话框
【Expression for T_cov_】框:
左边的框中列出了数据库中的所有变量,以供构造时间依存变量用,其中的T_是系统提供的时间变量。可以用右边的各个键和SPSS提供的各种函数构造时间依存变量;也可以在右边的Expression for T_cov_框中直接输入时间依存变量的表达式。时间依存变量的表的是构造完以后,击Model钮,出现下面的对话框。
图15&& 定义模型对话框
对话框左边是数据库中出现的变量名。在【Time】中输入生存时间变量Time;【Status】中输入状态变量status;【Covariates】中输入时间依存变量T_COV_。因本例无其它协变量,如有别的不随时间变化的协变量,一并输入Covariates框中。
对话框中的其他选项均在Cox模型中介绍过,这里就不再罗嗦了。
Cox Regression
上表输出总例数、删失例数、失访例数。
Block 0: Beginning Block
模型拟合迭代过程,可不管它。
Block1: Method = Enter
整个方程检验无统计学意义,χ2=1.702,υ=1,P=0.192。
输出方程中协变量的系数、标准误、Wald卡方值、自由度、P值、OR值。
输出协变量均数。
1.对于分段时间依存协变量,有缺失值的病例将不能被分析。因此,你必须保证所有病例每个时间点均有协变量值。虽然这些值在分析中用不到,但它们能有效地防止这些病例被丢掉。例如,以上面规定的时间依存协变量为例,假使一个病例在第二周时终检,但它的BP3及BP4值仍必须有,可以取0或其它值,这个无关紧要,因为它们在统计分析中并不用到。
2.那位又说了,既然寿命表法和Kaplan-Meier法都可以计算累积生存函数和风险函数,那么它们之间有什么差别呢?区别就在于寿命表法是生存时间分为许多时间段进行分析计算的,适用于大样本资料;而Kaplan-Meier法是计算每一终止事件发生时的生存率,适用于小样本资料。
众说风云 (已有3条评论)
* 游客填写 & &* 用户名
上海、北京及广州生物技术相关行业最新的职位信息,尽在生物招聘。
成功的秘诀
关注2009——危机下的就业形势
Eppendorf 荧光定量 PCR仪
ABI Stepone TM 实时定量PCR仪,最新的软件系统,界面友好,操作简单
各种厂家和各种规格的PCR产物纯化试剂盒
最全的定量PCR试剂
从引物设计到实验全程服务关注今日:16 | 主题:179269
微信扫一扫
扫一扫,下载丁香园 App
即送15丁当
【求助】SPSS,什么是交互变量?如何选择如何判断?做两分类logstic回归用。
页码直达:
这个帖子发布于3年零274天前,其中的信息可能已发生改变或有所发展。
拟作logstic回归方程一条。自变量中有性别和吸烟史两项,我想知道它们之间是否有交互作用?如何实现?如果有交互作用对下一步的模型建立自变量的纳入该如何取舍?如果没有交互作用是否就是与其他自变量一样选入?本人现在在选取自变量时同时选中性别与吸烟史两个选中,&a*b&按钮被激活,单击该按钮,并继续下一步最后的结果如下图想知道这个表格里面gender不要smokinghistory“性别与吸烟史”的这个偏回归系数如何解读,OR值如何解读。另想知道SPSS如何做这两个自变量是否存在交互作用!谢谢!
不知道邀请谁?试试他们
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
gender不要smokinghistory
是genderbysmokinghistory
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
楼主,请问这个问题现在有***了吗?我也想知道,谢谢!
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
喜欢柯南的小女孩 楼主,请问这个问题现在有***了吗?我也想知道,谢谢!没有啊,哎。。。。。高级SPSS我们没学过,难啊。。。。。
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
关于丁香园

参考资料

 

随机推荐