R语言分布滞后非线性模型(DLNM)研究发病率,死亡率和空气污染示例|附代码数据

全文下载链接:http://tecdat.cn/?p=21317

最近我们被客户要求撰写关于DLNM的研究报告,包括一些图形和统计输出。

本文提供了运行分布滞后非线性模型的示例,同时描述了预测变量和结果之间的非线性和滞后效应,这种相互关系被定义为暴露-滞后-反应关联 。

数据

数据集包含1987-2000年期间每日死亡率(CVD、呼吸道),天气(温度,相对湿度)和污染数据(PM10和臭氧)。数据是由健康影响研究所赞助的《国家发病率,死亡率和空气污染研究》(NMMAPS)的一部分[Samet et al.,2000a,b]。

该研究是关于随时间变化的职业暴露与癌症之间的关系。该研究包括250个风险集,每个风险集都有一个病例和一个对照,并与年龄相匹配。暴露数据以15岁至65岁之间的5岁年龄区间收集。

数据集药物包含模拟数据,来自一个假设的随机对照试验,对随时间变化剂量的药物的影响。该研究包括200名随机受试者,每人每天接受药物剂量,持续28天,每周都有变化。每隔7天报告一次。

DLNM方法

在这里,我提供了一个简短的摘要来介绍概念和定义。

暴露-滞后-反应关联

DLNM的建模类用于描述关联,在该关联中,暴露和结果之间的依赖关系会在时间上滞后。可以使用两个不同且互补的观点来描述此过程。我们可以说,在时间t处的暴露事件确定了在时间t +l处的未来风险。使用后向视角,时间t的风险由过去在时间t-l经历的一系列风险确定。这里的l是滞后,表示暴露和测得的结果之间的滞后。

DLNM统计模型

DLNM类提供了一个概念和分析框架,用于描述和估计暴露-滞后-反应关联。DLNM的统计发展基于以下选择:DLNM类为描述和估计暴露-滞后-反应关联提供了一个概念和分析框架。DLNM的统计发展基于该选择。

暴露-滞后-反应关联的一个简单情况是,预测变量空间中的关系(即暴露-滞后关系)是线性的。可以通过DLM对这种类型的关系进行建模。在这种情况下,关联仅取决于滞后反应函数,该函数模拟线性风险如何随滞后变化。滞后反应函数的不同选择(样条曲线,多项式,层次,阈值等)导致指定了不同的DLM,并暗示了滞后反应关系的替代假设。

DLNM解释

DLNM的结果可以通过使用3-D绘图提供沿两个维度变化的关联,通过为每个滞后和预测变量的拟合值构建预测网格来解释。

第一是与特定暴露值相关联的滞后反应曲线,定义为预测变量特定性关联。这被解释为与时间t风险相关的时间t +l的风险贡献序列。

第二是与特定滞后值相关联的暴露-反应曲线,该特定滞后值定义为滞后特定关联。这被解释为与在时间t处发生的暴露值相关联的在时间t +l处的暴露-反应关系。

第三个也是最重要的是与在考虑的滞后期内经历的整个暴露历史相关的暴露反应曲线,定义为总体累积关联。使用正向视角,这被解释为表示时间t发生的给定暴露期间[t,t+L]期间经历的净风险的暴露反应关系。

时间序列之外的应用

分布滞后模型首先是在很久以前的计量经济时间序列分析中提出的[Almon,1965],然后在环境流行病学Schwartz [2000]的时间序列数据中重新提出。DLNM的扩展是由Armstrong [2006]构想的。Gasparrini等人对时间序列数据的建模框架进行了重新评估。[2010]。有趣的是,已经在不同的研究领域中提出了这种暴露-滞后-反应关联的模型。一般的想法是通过特定函数加权过去的暴露,这些函数的参数由数据估算。在癌症流行病学[Hauptmann等,2000;Langholz等,1999;Richardson,2009;Thomas,1983;Vacek,1997]和药物流行病学[Abrahamowicz等]中,说明了类似于DLM的线性-暴露-反应关系模型。

基本函数

指定标准暴露反应和滞后反应关系的基本函数,例如多项式,分层或阈值函数。例如,样条线由推荐的包样条线中包含的函数ns()和bs()指定。多项式是通过函数poly()获得的。这是一个简单向量的转换示例:

poly(1:5,degree=3)
1 2 3
[1,] 0.2 0.04 0.008
[2,] 0.4 0.16 0.064
[3,] 0.6 0.36 0.216
[4,] 0.8 0.64 0.512
[5,] 1.0 1.00 1.000
attr(,"degree")
[1] 3
attr(,"scale")
[1] 5
attr(,"intercept")
[1] FALSE
attr(,"class")
[1] "poly" "matrix"

第一个未命名的参数x指定要转换的向量,而参数度设置多项式的度。定义分层函数是通过strata()指定的。

strata(1:5,breaks=c(2,4))[,]
1 2
[1,] 0 0
[2,] 1 0
[3,] 1 0
[4,] 0 1
[5,] 0 1

结果是带有附加类别“层”的基础矩阵。转换是定义对比的虚拟参数化。参数break定义了层的右开放区间的下边界。

阈值函数通过thr()指定。一个例子:

thr(1:5,thr.value=3,side="d")[,]
1 2
[1,] 2 0
[2,] 1 0
[3,] 0 0
[4,] 0 1
[5,] 0 2

结果是具有附加类别“ thr”的基础矩阵。参数thr.value定义一个带有一个或两个阈值的向量,而side用于指定高(“ h”,默认值),低(“ l”)或双精度(“ d”)阈值参数化。

点击标题查阅往期内容

【视频】R语言中的分布滞后非线性模型(DLNM)与发病率,死亡率和空气污染示例

左右滑动查看更多

01

02

03

04

基本转换

此函数代表以dlnm为单位进行基本转换的主要函数,适用于指定暴露-反应和滞后-反应关系。它的作用是应用选定的转换并以适用于其他函数(例如crossbasis()和crosspred())的格式生成基本矩阵。以下示例复制了该部分中显示的多项式变换:

onebasis(1:5,fun="poly",degree=3)
b1 b2 b3
[1,] 0.2 0.04 0.008
[2,] 0.4 0.16 0.064
[3,] 0.6 0.36 0.216
[4,] 0.8 0.64 0.512
[5,] 1.0 1.00 1.000
attr(,"fun")
[1] "poly"
attr(,"degree")
[1] 3
attr(,"scale")
[1] 5
attr(,"intercept")
[1] FALSE
attr(,"class")
[1] "onebasis" "matrix"
attr(,"range")
[1] 1 5

结果是带有附加类“ onebasis”的基础矩阵。同样,第一个未命名参数x指定要转换的向量,而第二个参数fun将字符转换定义为应用转换而调用的函数的名称。具体来说,基本矩阵包括fun和range属性,以及定义转换的被调用函数的参数。如前所述,onebasis()还可以根据特定要求调用用户定义的函数。一个简单的例子:

> mylog <- function(x) log(x)
> onebasis(1:5,"mylog")
b1
[1,] 0.0000000
[2,] 0.6931472
[3,] 1.0986123
[4,] 1.3862944
[5,] 1.6094379
attr(,"fun")
[1] "mylog"
attr(,"range")
[1] 1 5
attr(,"class")
[1] "onebasis" "matrix"

交叉基

这是dlnm软件包中的主要函数。它在内部调用onebasis()来生成暴露-反应和滞后-反应关系的基矩阵,并通过特殊的张量积将它们组合起来,以创建交叉基,该交叉基在模型中同时指定了暴露-滞后-反应关联性。它的第一个参数x的类定义如何解释数据。可以使用第二个变量lag修改滞后期。

作为一个简单的示例,我模拟了2-5个滞后期内3个对象的暴露历史矩阵:它们中的每一个都将传递给onebasis()来分别构建暴露-反应和滞后-反应关系的矩阵。仅用于时间序列数据的附加参数组定义了被视为单独无关序列的观察组,例如在季节性分析中可能有用。作为一个简单的示例,我模拟了2-5个滞后期内3个对象的暴露历史矩阵:它们中的每一个都将传递给onebasis()来分别构建暴露-反应和滞后-反应关系的矩阵。作为一个简单的示例,我模拟了2-5个滞后期内3个对象的暴露历史矩阵:

 > hist
lag2 lag3 lag4 lag5
sub1 1 3 5 6
sub2 7 8 9 4
sub3 10 2 11 12

然后,我应用交叉基参数化,将二次多项式作为暴露反应函数,并将分层函数2-3和4-5定义为滞后反应函数的分层函数:

lag=c(2,5),argvar=list(fun="poly",degree=2),
arglag=list(fun="strata",breaks=4))[,]
v1.l1 v1.l2 v2.l1 v2.l2
sub1 1.250000 0.9166667 0.4930556 0.4236111
sub2 2.333333 1.0833333 1.4583333 0.6736111
sub3 2.916667 1.9166667 2.5625000 1.8402778

该函数返回“ crossbasis”类的矩阵对象。它首先使用argvar和arglag列表中的参数调用onebasis(),以建立暴露反应空间和滞后反应空间的矩阵基础。在另一个示例中,我将crossbasis()应用于数据集中的变量temp,该数据集表示1987-2000年期间日平均温度序列:

 > summary(cb)
CROSSBASIS FUNCTIONS
observations: 5114
range: -26.66667 to 33.33333
lag period: 0 30
total df: 10
BASIS FOR VAR:
fun: thr
thr.value: 10 20
side: d
intercept: FALSE
BASIS FOR LAG:
fun: ns
knots: 1 4 12
intercept: TRUE
Boundary.knots: 0 30

此处,将暴露反应建模为阈值为10和20的双阈值函数。滞后时间设置为0到30。滞后反应函数留给默认的自然三次样条(fun =“ ns”),其滞后值为1、4和12。

预测

crossbasis()生成的交叉基矩阵需要包含在回归模型公式中才能拟合模型。关联通过函数crosspred()进行汇总,该函数针对默认值或用户直接选择的预测值和滞后值的组合的网格进行预测。例如,我使用创建的交叉基矩阵cb,使用数据集时间序列数据来研究温度与心血管疾病死亡率之间的关联。首先,我将一个简单的线性模型与模型公式中包含的交叉基矩阵拟合。然后,我通过使用cross-basis和回归模型对象作为前两个参数调用crosspred()来获得预测:

crosspred(cb,model,at=-20:30)

结果是“ crosspred”类的列表对象,其中的存储预测和有关模型的其他信息,例如系数和与交叉基参数有关的关联(协)方差矩阵的一部分。可以为特定的预测器-滞后组合选择预测的网格。例如,我提取温度为-10°C且滞后5的预测和置信区间,然后提取25°C的整体累积预测:

 > pred$allfit["25"]
25
1.108262

第一个结果表明,在给定的一天中,-20°C的温度会在五天后导致0.95例心血管死亡的增加,或者在给定的一天中,温度为-6摄氏度时,心血管死亡的数目增加0.95。其他类型的预测可以通过crosspred()获得。特别是,如果模型链接等于log或logit,则将自动返回取幂的预测。如果参数cum设置为TRUE,则是累积预测的矩阵cum。

crosspred()的另一种用法是预测特定的暴露历史记录集的影响。这可以通过输入暴露历史矩阵作为参数来实现。例如,我们可以从拟合模型中预测出,在过去10天暴露于30°C和在滞后期的其余时间暴露于22°C之后,心血管死亡的总体累积增加:如果参数cum设置为TRUE,则包括增量累积预测的矩阵cum,并将其存储在组件cum中。crosspred()的另一种用法是预测特定的暴露历史记录集的影响。这可以通过输入暴露历史矩阵作为参数来实现。例如,我们可以从拟合模型中预测出,在过去10天暴露于30°C和在滞后期的其余时间暴露于22°C之后,心血管死亡的总体累积增加:

 > crosspred(cb,model,at=histpred)$allfit
1
5.934992

dlnm软件包的主要优点之一是,用户可以使用标准回归函数执行DLNM,只需在模型公式中包括交叉基矩阵即可。函数crosspred()自动处理来自回归函数lm()和glm(),gam()(软件包mgcv),coxph()的模型。

降维

DLNM的拟合度可以降低到预测变量或滞后的一个维度,仅以诸如总累积暴露反应表达。该计算通过函数crossreduce()进行,该函数的工作原理与crosspred()非常相似。前两个自变量base和model指定交叉基矩阵和需要对其执行计算的模型对象。减少的类型由类型定义,带有选项“ overall”-“ lag”-“ var”,用于汇总总体累积暴露反应,滞后特异性暴露反应或预测变量特异性滞后反应。

绘图

一维或二维关联的解释通过图形表示来辅助。通过方法函数plot(),lines()和points()为类“ crosspred”和“ crossreduce”提供高级和低级绘图功能。例如,我使用对象pred中的预测。plot()方法可以通过参数ptype为“ crosspred”对象生成不同类型的图。具体来说,它会生成整个二维暴露-滞后-反应关联的图形。二维关联可以绘制为3-D或等高线图,例如:

> plot(pred,ptype="3d",main="3D plot"

可以通过选择不同的ptype获得定义的关联的摘要。

> plot(pred,"overall"

在这种情况下,方法函数plot()在内部调用函数plot.default(),如上面的示例所示,可以将其他特定参数添加到函数调用中。通过设置ptype =“ slices”,可以将滞后特异性和预测因子特异性关联分别绘制为暴露-反应和滞后-反应关系,因为它们是在3-D曲面中沿特定维度切割的切片。例如:

> plot(pred,"slices",lag=5

这两个图分别代表了滞后5的暴露反应和特定于25°C温度的滞后反应。参数lag和var指定必须分别绘制lag和特定于预测变量的关联的值。

本文选自《R语言分布滞后非线性模型(DLNM)研究发病率,死亡率和空气污染示例》。

本文转载于网络 如有侵权请联系删除

相关文章

  • 从 Prompt 来看微前端路由劫持原理

    问题前两天,业务方给我抛来一段代码,略去繁杂的逻辑,简化后的代码如下://代码示例1 import{Prompt,Link}from'react-router-dom'; exportconstApp=()=>{ return( <> <Promptmessage="跳转到另一个同微应用路由"/> <Linkto="/detail">跳转到detail</Link> </> ) } 复制在结合微前端框架icestark使用时,跳转到同一微应用的其他路由,会产生异常的效果:Prompt弹窗了两次。面对这个错误,我陷入了深深地沉思。接下来,我尝试解开这个错误的神秘面纱,在这个过程中,会涉及到:ReactRouter的实现原理<Prompt/>的底层实现以及微前端框架劫持路由后,面临的困境ReactRouterDOM是怎么实现单页应用路由的我们以BrowserHistory为例://代码示例2 import{BrowserRouter,Route}fro

  • 打破国外垄断,开发中国人自己的编程语言(2):使用监听器实现计算器

    1.Visitor与Listener在上一篇文章中使用Antlr和Visitor实现了一个可以计算表达式的程序MarvelCalc。这个程序非常简单,相当于Antlr的HelloWorld。不过Antlr除了Visitor方式外,还支持Listener方式,也就是监听器方式。不管是哪种方式,其目的都是遍历AST(抽象语法树),只是Visitor方式需要显式访问子节点(通过visit方法访问),例如,下面的代码访问了MulDiv的两个子节点,也就是MulDiv的左右操作数(ctx.expr(0)和ctx.expr(1))。 //exprop=('*'|'/')expr#MulDiv publicIntegervisitMulDiv(CalcParser.MulDivContextctx){ intleft=visit(ctx.expr(0));//访问MulDiv的左操作数 intright=visit(ctx.expr(1));//访问MulDiv的右操作数 if(ctx.op.getType()==CalcParser.MUL)return

  • 【PAT520 钻石争霸赛】7-1 考试周 (5分)

    考试周快到了,浙江大学的电子屏又调皮了……本题请你帮小编写一个自动倒计时的程序,对给定的日期(例如“腊八”就对应8)和倒计时天数(例如电子屏上的“四天之后”就对应4),自动调整公式里的分母(例如8/2=4里面的那个2)。输入格式:输入在一行中给出两个正整数:A是给定的日期,不超过30;B是倒计时天数,不超过10。输出格式:在一行中输出公式A/X=B,其中X是满足等式的数字,输出时保留小数点后1位即可。输入样例:83复制输出样例:8/2.7=3复制C++#include<iostream> usingnamespacestd; intmain(){ inta,b; cin>>a>>b; doublex=1.0*a/b; printf("%d/%.1f=%d",a,x,b); return0; }复制

  • 一文让你更懂Docker

    在之前的文章中,给大家介绍了如何使用Docker打包前端项目的知识,可能通过一通实操,你已成为一名会使用Docker的程序员。不过老实说,之前的内容还不足以让你懂Docker。因此,今天想来继续做科普,让大家了解Docker到底是个什么东西,以及使用Docker的一些初衷。它是一种虚拟化技术简单来说,通过虚拟化的方式,可以将一个物理计算资源(比如CPU、磁盘、网络等)虚拟成多个逻辑计算资源,让多个逻辑计算资源可以在这个物理计算资源上同时运行,并相互独立互不影响,从而提高资源的利用效率。而且通过虚拟化技术,可以做到硬件资源容量的动态扩容,也可以简化软件的重新配置过程,能显著提高工作效率。Docker所代表的容器技术,它们的目的当然也是如此。它是容器:一种轻量级的虚拟化技术轻量级,是相对于传统的虚拟机(VirtualMachine,简称VM)技术来说的。我们来看一张图,以方便了解Docker所使用的容器技术和传统虚拟机技术在运行模型上的差别:左图代表的是一台运行着虚拟机的宿主计算机,而右图是运行着Docker容器的宿主计算机。虚拟机和容器的创建与管理工作都是由专门的管理程序来执行,比如虚拟

  • Autosar知识:方法论-概念概述

    AUTOSAR方法论将由创建工作产品的角色执行的活动定义为通用可重用方法模式。AUTOSAR使用EnterpriseArchitect建模工具来绘制文档图形,图形的定义是通过《软件过程工程元模型规范SPEM》制定。1、方法库元素:方法库元素包含对该元素的描述以定义其在方法中的用途,从而提供了AUTOSAR方法的基本内容。其元素包括:方法库元素•   任务定义•   工作产品定义•   角色定义•  工具定义•   指南1.1、任务定义任务定义是由特定角色执行的可分配工作单元。任务的持续时间通常为几个小时到几天。任务通常会生成一个或多个工作产品。每个任务都与输入和输出工作产品相关联。输入分为强制输入和可选输入。任务被用作定义流程的元素之一。任务语义任务具有明确的目的,即执行角色可以实现明确定义的目标。它提供了完成此目标所需完成的所有工作的完整分步说明。此描述完全独立于流程生命周期中何时实际完成工作。它不描述什么时候完成什么工作,而是描述所有完成的工作。任务用法在开发过程中使用任务时,它将提供在任何特定时间点将实际执行哪部分任务的信息。假设任务将一遍又一遍地执行,但是每次都对任务描述的不同

  • Python自动化备份系统及网站

    随着目前IT迅猛的发展,自动化运维对于Linux运维人员也越来越重要,传统的运维方式靠大量的人力,现在也逐渐转向自动化运维,我们常见的跟自动化有关的软件有哪些呢。今天我们来简单列举一下:kickistart、puppet、cobbler、chef、func、shell命令自动化等等各种自动化工具,今天我们来研究一下使用Python来编写自动化脚本,那python设计的目标是什么呢?Python的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和惊喜。下面直接上脚本如下:(我也参考的网上的文章,自己根据实际情况修改,希望大家一起来交流)#!/usr/bin/python #Filename: Auto Ba

  • leetcode446. Arithmetic Slices II - Subsequence

    题目要求Asequenceofnumbersiscalledarithmeticifitconsistsofatleastthreeelementsandifthedifferencebetweenanytwoconsecutiveelementsisthesame. Forexample,thesearearithmeticsequences: 1,3,5,7,9 7,7,7,7 3,-1,-5,-9 Thefollowingsequenceisnotarithmetic. 1,1,2,5,7 Azero-indexedarrayAconsistingofNnumbersisgiven.Asubsequencesliceofthatarrayisanysequenceofintegers(P0,P1,...,Pk)suchthat0≤P0<P1<...<Pk<N. Asubsequenceslice(P0,P1,...,Pk)ofarrayAiscalledarithmeticifthesequenceA[P0],A[P1],...,A[Pk-1],

  • Leetcode 476. Number Complement

    版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢!https://blog.csdn.net/Quincuntial/article/details/82666457文章作者:Tyan 博客:noahsnail.com|CSDN|简书1.Description2.SolutionVersion1classSolution{ public: intfindComplement(intnum){ intresult=0; stack<int>s; while(num){ intbit=num&1; num>>=1; s.push(bit); } while(!s.empty()){ result<<=1; intbit=s.top(); s.pop(); result|=(bit^1); } returnresult; } };复制Version2classSolution{ public: intfindComplement(intnum){ intmask=~0; while(num&mask){ mask<<=

  • 用Redis开发一个聊天室(节选)

    ——本文节选自我的新书《左手MongoDB,右手Redis从入门到商业实战》

  • Centos 7安装unbound

    1.关闭firewall:#停止firewallsystemctlstopfirewalld.service#禁止firewall开机启动systemctldisablefirewalld.service2.永久关闭vi/etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled 设置后需要重启才能生效下面开始正式安装unbound3.安装unboundyum-yinstallunbound清理缓存yumcleanall重启服务systemctlrestartunbound 设置开机启动systemctlenableunbound4.备份配置文件cd/etc/unbound/mvunbound.confunbound.conf.bak5.编辑配置文件 vimunbound.conf注释的地方,全部被我删除了!完整内容如下:server:verbosity:1statistics-interval:0statistics-cumulative:noextended-statistics:yesnum-threads:2#监听地址inter

  • 为什么很多公司都不招大龄码农?

    今天在知乎上看到一个问题,说:为什么很多公司都不招大龄码农?本人36,最近联系猎头找个工作,猎头说只能找技术管理类的了,纯开发的一般公司32岁的就不招了。首先,我们通过你的问题的题目来分析,为什么很多公司都不招大龄码农?或者是说大部分公司不招大龄码农?这就得从公司能力的角度来分析了。首先,这个「大部分」指的都是互联网小公司,都是创业型公司,从公司能力上来讲,这些公司养不起大龄码农。30岁往上的大龄码农,要价都不会很低,最起码都在25k及以上,甚至成为技术专家的都是按年薪算的。其次,大公司毕竟是少数,大型互联网公司比如:BAT或者移动互联网界的明星公司TMD这种大厂里肯定会有很多大龄码农和技术专家。要想能够进大厂,又得从码农的技术能力上面来分析。我们要知道很多大龄码农,只是增长了年龄,而没有增长能力和本事。比如:一年的工作经验重复的用十年,那可不是说明你有十年的工作经验,更别提能力了。这样的大龄码农进BAT,TMD这样的公司很容易被面试出来自己的能力的。如果都干到35岁了,你还没有在这个行业积累点影响力,人脉,甚至成为技术专家,就说明自身有问题了。你看看,有能力,有技术,有实力的大龄码农

  • 轻松搭建分布式文件系统

    需求用户在登录之后可以上传文件,也可以看到所有上传的文件(自己或其他用户上传的文件),并可以下载这些文件。该系统由服务器集群(多节点)实现,每个节点能够为多个客户连接请求提供响应,当应用请求较多、节点平均负载较大时,系统会启用新的节点;当集群的总体请求量较少时,应当逐步关闭节点。每个服务器节点都有自己的存储空间,可以保存客户上传的文件。所有在线客户应当实时获得系统中文件信息的更新。每个服务器节点都可能是不可靠的,k个节点故障(网络中断、节点关闭、节点崩溃……)不会对系统产生影响并介绍了如何设计、实现以及可靠性的分析等内容。系统分析与设计根据需求可以看出,这套系统至少可以分为前后端两个部分:后端拥有一套高可用、可扩展的分布式存储服务前端可以为用户(Human)提供服务。其中,分布式存储服务又可以进一步分成两个部分:分布式文件存储提供真正的存储服务,我们期望它能存储从KB到GB级别的文件。为每个文件做2份以上的备份,并能通过一个FileID索引文件。分布式文件索引另一部分提供索引和查询服务,例如获取一个文件夹下所有的文件。对于某个文件(例如/foo/bar.txt),能够得到它的FileI

  • 你以为玩VR的自己很帅气,然而事实却是......

    各位亲爱的看官们,周末好!想想两天的休息日已经过去了一半,而且明天又要上班啦!哈哈哈哈哈哈哈哈...当然,小编今天不是来拉仇恨的,因为小编明天也要早起去工作(ㄒoㄒ)~~但是一想到各位可能正在家里无聊的发呆、虚度时光,小编就感到十分心痛(╯︵╰)昨天推送的游戏各位有没有玩呀?不知各位平时玩VR游戏的时候有没有发生过什么搞笑的事?这不,有一些网友把自己玩VR游戏时搞笑的样子分享了出来快让我们一起来看看吧!视频内容不知道你们看的如何,反正小编已经笑趴下了想必各位也看出来了,小编今天就是来送搞笑福利的希望这些有趣的视频能让忙碌了一周的您开心一笑同时,也希望VR能为各位的生活带去更多的乐趣好啦!今天就聊到这吧!希望各位看官们每一天都工作顺利!拜拜啦!

  • Tesseract-OCR5.0命令类型

    原文链接:http://www.juzicode.com/image-ocr-tesseract-ocr5-command 帮助命令–help或-h 直接输入tesseract或tesseract–help或tesseract-h会带出帮助信息: E:\juzicode>tesseract Usage: tesseract--help|--help-extra|--version tesseract--list-langs tesseractimagenameoutputbase[options...][configfile...] OCRoptions: -lLANG[+LANG]Specifylanguage(s)usedforOCR. NOTE:Theseoptionsmustoccurbeforeanyconfigfile. Singleoptions: --helpShowthishelpmessage. --help-extraShowextrahelpforadvancedusers. --versionShowversioninformation. --lis

  • sqlalchemy

    create_table #1.导入SQLAlchemy fromsqlalchemy.ext.declarativeimportdeclarative_base #3.导入ORM对应数据库数据类型的字段 fromsqlalchemyimportColumn,Integer,String #5.创建数据库连接 fromsqlalchemyimportcreate_engine #2.创建ORM模型基类 Base=declarative_base() #4.创建ORM对象 classUser(Base): __tablename__='user' id=Column(Integer,primary_key=True,autoincrement=True) name=Column(String(32),index=True) #数据库连接创建完成 engine=create_engine('mysql+pymysql://root:password@ip地址:端口/数据库名称?charset=uft8',echo=True) print(engine) #6.去数据库中创建与Us

  • Yii2之model

    记录model常用方法   between: $model->andFilterWhere(['between','apply_time',$startTime,$endTime])复制  

  • MySQL 安装 启动 基本语法概述

    MySQL安装和配置   我是直接使用安装包:mysql-installer-community-5.6.10.1.msi     安装的时候其中有几点要注意:     1.记住端口号(默认给的是3306);     2.记住用户名;     3.记住密码;   与MySQLServer连接   安装好MySQL之后,可以采用命令行和Server连接。     shell>mysql-hhost-uuser–p     其中host是主机地址,如果是本机,可以写127.0.0.1或localhost;     user是用户名,即你在安装MySQL时自己设置的名字。     按回车后,提示输入密码,成功后显示:             mysql>表示mysql准备好了接收你的命令。         如果是本机登录,也可以省略地址:     shell>mysql-uuser–p  

  • 【转】布同:如何循序渐进学习Python语言

    大家都知道Python语言是一种新兴的编程语言。1989年,Python就由GuidovanRossum发明。Python一直发展态势很好。       原因有几点:1、跨平台性好。Linux、Windows、MacOS、塞班……。2、快速易学。3、模块齐全。      Python本身是一种面向对象的脚本语言。功能涉及到应用程序开发、网络编程、网站设计、图形界面编程等等,基本囊括众多应用。手机应用开发,电脑PC程序开发,连Google也开始使用python作为其开发语言。很多编程比赛也开始接受python语言。      既然这么有用,那怎么学习呢?废话少说,马上解答。      《征服Python——语言基础与典型应用》      这本书中的ppt部分简单介绍了Python的相关知识。其源代码部分涉及到常见的数据结构和算法、语

  • 数据结构实验报告-实验一 顺序表、单链表基本操作的实现

    实验一   顺序表、单链表基本操作的实现   l 实验目的 1、顺序表 (1)掌握线性表的基本运算。 (2)掌握顺序存储的概念,学会对顺序存储数据结构进行操作。 (3)加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力。   l 实验内容 1、顺序表 1、编写线性表基本操作函数: (1)InitList(LIST*L,intms)初始化线性表; (2)InsertList(LIST*L,intitem,intrc)向线性表的指定位置插入元素;                          (3)DeleteList1(LIST*L,intitem)删除指定元素值的线性表记录; (4)DeleteList2(LIST*L,intrc)删除指定位置的线性表记录;

  • Micropython教程之TPYBoard DIY超声波测距仪实例演示

    1.实验目的 1.学习在PC机系统中扩展简单I/O?接口的方法。2.进一步学习编制数据输出程序的设计方法。3.学习超声波模块的测距原理。4.学习LCD5110接线方法5.学习TPYboard控制超声波模块测距。(萝卜学科编程教育tpyboard。com) 2.所需元器件 超声波模块一个TPYBoard板子一块5110LCD显示屏一个数据线一条杜邦线若干 3.超声波模块工作原理 (1)采用IO口TRIG触发测距,给最少10us的高电平信呈。(2)模块自动发送8个40khz的方波,自动检测是否有信号返回。(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。如下图接线,VCC供5V电源,GND为地线,TRIG触发控制信号输入,ECHO回响信号输出等四个接口端。。(萝卜学科编程教育tpyboard。com)   4.控制5110显示屏显示6x8字符 先看一下LCD5110针脚含义吧(注意:LCD5110的针脚有些不一样的)TPYBoard的针脚与5110的针脚对应关系如下: TPYBoa

  • Mobile Matrices

    Thisisanattempttocompilealistofrelevantspecificationsforallmodernsmartphonesandmobileinternetdevices.Itisprimarilyforaquickreferencesheetwhentryingtotargetaspecificplatformwith CSSmediaqueries. Apple: Model OperatingSystem Browser ScreenSize ScreenResolution ScreenDensity iPhone(Original,3G,3GS) iOS1.0–5.0.1 MobileSafari 3.5"(8.9cm) 320×480px 162ppi iPhone4 iOS4.0–7.1.1 MobileSafari 3.5"(8.9cm) 640×960px 326ppi iPhone4S iOS4.0–8.0 MobileSafari 3.5"(8.9cm) 640×960px 326ppi iPhone5

相关推荐

推荐阅读