精华内容
下载资源
问答
  • 如果合理假设具有不同自由度的不同边际方差的基础双变量t分布是合理的,则新模型可能适合于平方列联表。 随着自由度变大,建议的模型接近扩展的线性对角线参数对称模型,如果合理假设基本的二元正态分布,则该模型...
  • 将收益率刻画为随机变量,建立了均值-方差证券投资组合模型;研究并给出了随机变量期望值和方差的一般计算方法,将模型转化为其确定等价形式;讨论了模型的凸性,证明了模型解的存在性和惟一性;通过数值例子...
  • 并发模型

    2019-07-25 09:51:00
    2.使用buffer无锁化 例子:http://blog.guoyb.com/2018/03/17/double-buffer/ 2.CSP(Communicating Sequential Processe), 通过channel传递消息共享变量 例子:《C++并发编程实践》第四章最后 和附录C ATM例子 ...

    1.线程池,共享线程安全队列

    例子:osmium thread 模块

    2.使用双buffer无锁化

    例子:http://blog.guoyb.com/2018/03/17/double-buffer/

    2.CSP(Communicating Sequential Processe), 通过channel传递消息共享变量 

    例子:《C++并发编程实践》第四章最后 和附录C ATM例子

              go 语言

    3.actor model 

    例子:erlong

    转载于:https://www.cnblogs.com/water-bear/p/11242366.html

    展开全文
  • 在使用AngulaJS编写应用时,我们经常需要做的一件事情就是对模型中的变量进行监视,并对其发生的变化做出相应的回应。AngularJS为我们提供了一个非常方便的$watch方法,它可以帮助我们在每个scope中监视其中的变量。...

            刚进一个新项目组,前端用的是AngularJs 的东西,刚开始一直很抵触这个东西,不过最近开始写点东西,发现其实还是蛮好用的,针对今天遇到的问题做一个总结。

    问题是这样的 :一个页面上有两个单选按钮radio(name相同)A、B,然后有两个下拉框select :sA、sB,要求点A是,sA显示,sB隐藏; 点B时sB显示,sA隐藏.....(先说这个简单的例子)
    解决方案:给两个radio加相同的 ng-model (如:
    ng-model="radioModel"),然后分别给两个下拉框加ng-model(sAm和sBm),和ng-show(sAs和sBs)(用来控制显示的)
    注意:AngulaJS 中一个很牛的地方就是实现了数据的双向绑定,这里ng-model 就能实现,单选框ng-model 对应 value 属性的值;下拉框的ng-model则对应option 中的value属性值。这样js中就可以直接用其控制,如:
    if($scope.radioModel == 'valA'){
    $scope.sAs = true;
    $scope.sBs = false;}
    当然需要这样:
    $scope.$watch(‘radioModel’,function(){
             if($scope.radioModel == 'valA'){//为radio的value值
    $scope.sAs = true; 
    $scope.sBs = false;
    }
    })


    同理也可以对下拉框进行监控。。。。
     

    ===========================以下是分享网友的


    在使用AngulaJS编写应用时,我们经常需要做的一件事情就是对模型中的变量进行监视,并对其发生的变化做出相应的回应。AngularJS为我们提供了一个非常方便的$watch方法,它可以帮助我们在每个scope中监视其中的变量。下面是一个非常简单的例子:

    <html>
    <head>
        <script src='./lib.angular.min.js'></script>
    </head>
    <body ng-app='watch'>
        <input ng-model='name' type='text'/>
        <div>change count: {{count}}</div>
        <script>
            angular.module('watch',[])
                         .run(['$rootScope',function($rootScope){
                                $rootScope.count = 0;
                                $rootScope.name = 'Alfred';
                                $rootScope.$watch('name',function(){
                                    $rootScope.count++;
                                })
                         }]);
        </script>
    </body>
    </html> 
    

    上面的这段代码非常简单,它用$watch来对$rootScope中的name进行监视,并在它发生变化的时候将$rootScope中的count属性增加1。因此,每当我们对name进行一次修改时,下面显示的change count数字就会增加1。

    在AngularJS内部,每当我们对ng-model绑定的name属性进行一次修改,AngularJS内部的$digest就会运行一次,并在运行结束之后检查我们使用$watch来监视的东西,如果和进行上一次$digest之前相比有了变化,则执行我们在其中绑定的处理函数。

    然而,我们在实际运用中常常不只是对一个原始类型的属性进行监视,如果你还记得Javascript中的六种基本类型,你一定会记得原始类型(数字,字符串)和引用类型的区别。对于原始类型,如果我们使用了一个赋值操作,则这个原始类型变量会“真正的”被进行一次复制,然而对于引用类型,在进行赋值时,仅仅时将赋值的变量指向了这个引用类型。在AngularJS的$watch方法中,对两者的操作也有不同之处。原始类型,就像我们上面例子中提到的$rootScope,没有什么特别之处,然而如果要对一个引用类型,尤其是在实际运用中常见的对象数组进行监视时,情况就不一样了。我们来看下面的例子:

    <html>
    <head>
        <script src='./lib.angular.min.js'></script>
    </head>
    <body ng-app='watch'>
        <div hg-repeat='item in items'>
            <input ng-model='item.a'/><span>{{item.a}}</span>
        </div>
        <div>change count: {{count}}</div>
        <script>
            angular.module('watch',[])
                         .run(['$rootScope',function($rootScope){
                                $rootScope.count = 0;
                                $rootScope.items = [
                                { "a": 1 },
                                { "a": 2 },
                                { "a": 3 },
                                { "a": 4 }
                                ]
                                $rootScope.$watch('items',function(){
                                    $rootScope.count++;
                                })
                         }]);
        </script>
    </body>
    </html>  
    

    此时,如果我们对四个input中的a进行改变时,我们会发现,count的值依然是0。这是怎么回事?难道没有$watch失灵了吗?

    正如我们前面所说的,$watch在对待原始类型和引用类型会有不同的处理方式,这就要首先说一说$watch函数的第三个参数。在前面的例子中,我们知道,$watch函数有接收两个参数,第一个参数是需要监视的对象,第二个参数是在监视对象发生变化时需要调用的函数,实际上$watch还有第三个参数,它在默认情况下是false。在默认情况下,即不显式指明第三个参数或者将其指明为false时,我们进行的监视叫做“引用监视”。引用监视的原词的“reference watch”,它的意思是只要监视的对象引用没有发生变化,就不算它发生了变化。具体来说,在上面的例子中,只要是items的引用没有发生变化,就算items中的一些属性发生了变化,$watch也会当做没有看见。那么在什么时候算是引用发生了变化呢?比如说将一个新的数组newItems赋值给items,此时$watch才会站出来说:“你变了!你再也不是以前我认识的那个和我一起看星星看月亮聊人生理想并且教会我什么叫做爱的人了!”

    相反,如果我们将$watch的第三个变量设置为true,那么此时我们进行的监视叫做“全等监视”,原词是“equality watch”。此时,$watch就像是一个醋意十足的恋人,只要看他的对象有一点风吹草动,马上就跳出来,大喊大叫:“你冷酷你无情,你无理取闹。就算我冷酷,我无情,我无理取闹,也没有你冷酷你无情,你无理取闹!尔康。。。。。”。

    因此,有同学就会问了,既然全等监视这么好,那么我们为什么不直接用全等监视呢?当然,任何事情都有好的坏的两个方面,全等监视固然是好,但是它在运行时需要先遍历整个监视对象,然后在每次$digest之前使用angular.copy()将整个对象深拷贝一遍然后在运行之后用angular.equal()将前后的对象进行对比,上面的例子中因为items比较简单,因此可能性能上不会有什么差别,但是到了实际生产时,我们要面对的数据千千万万,可能因为全等监视这一个设置就会消耗大量的资源,让应用停滞不前。因此这就需要我们在使用时进行权衡,究竟应该使用哪一种监视方式。

    除了上面提到的两种方式之外,在angular 1.1.4版本之后,添加了一个$watchCollection()方法来针对数组(也就是集合)进行监视,它的性能介于全等监视和引用监视二者之间,即它并不会对数组中每一项的属性进行监视,但是可以对数组的项目的增减做出反应。比如还是上面的例子:

    $rootScope.items = [
                                { "a": 1 },
                                { "a": 2 },
                                { "a": 3 },
                                { "a": 4 }
                                ]
                                $rootScope.$watchCollection('items',function(){
                                    $rootScope.count++;
                                })
                         }]);
    

    如果改变了items[0]的a属性值,$watch并不会做出反应,但是如果我们在items上push或者pop了一个项目,$watch就会开始行动了。

    关于AngularJS中$watch部分就讲这么多,还是那句话“最好的学习方式就是实践”。多coding,多犯错,一定能学好AngularJS。

    展开全文
  • Detecting Causality in Complex Ecosystems摘要Ⅰ 引言动态因果关系和CCM识别因果关系的框架(i)通过功能耦合进行双向因果关系识别(ii)单向因果关系传递性复杂的模型例子:非耦合变量的外部强迫现实世界的例子:用...


    作者:George Sugihara, Robert May, Hao Ye,1Chih-hao Hsieh, Ethan Deyle, Michael Fogarty, Stephan Munch
    翻译:Wendy

    摘要

      识别因果网络对于在气候、流行病学、金融监管等方面提出有效的政策和管理建议非常重要。提出了一种基于非线性状态空间重构的方法,能够区分因果关系和相关关系。它扩展到不可分离的弱连接动态系统(目前的格兰杰因果关系范式没有覆盖的情况)。该方法通过简单的模型(与现实世界相反,我们知道潜在的方程/关系,因此可以检查我们的方法的有效性)和应用于真实的生态系统,包括有争议的沙丁鱼-凤尾鱼-温度问题来说明。

    Ⅰ 引言

      在复杂的系统中确定因果关系是很困难的。矛盾出现在许多科学环境中,变量有时是积极耦合的,但有时是不相关的,甚至是依赖于系统状态的消极耦合(视频S1)。波罗的海渔业,例如,表现出完全不同的动态控制机制(从底部自顶向下 )根据阈值大量浮游生物,导致鱼类和浮游动物之间的相关性变化迹象。这种相互依存的行为定义的标志是一个复杂的非线性系统,并非线性在自然界中无处不在。

      短暂的或“海市蜃楼”相关性在即使是最简单的非线性系统也是常见的,如图Fig.1所示,表现出混沌行为的两组微分方程:
    在这里插入图片描述
    当这种情况发生时,长期处于积极耦合状态的变量可能会自发地变得反相关或解耦;这在将模型与观测数据拟合时可能会产生问题。
    在这里插入图片描述
      虽然相关性既不是建立因果关系的必要条件,也不是充分条件,但它在我们的启发式思维中仍然根深蒂固。例如,人们可以得出结论,图1中的变量没有因果关系,因为它们不相关。显然,缺乏相关性并不意味着缺乏因果关系。由于这个原因,以及刚刚给出的原因,使用相关性来推断因果关系是有风险的,特别是当我们逐渐认识到非线性动力学无处不在时。

      另一种方法,格兰杰因果关系(GC),提供了一个框架,使用可预测性而不是相关性来识别时间序列变量之间的因果关系。自Berkeley以来,GC被认为是因果问题的主要进展。

      变量X被认为是Y“格兰杰原因”条件是,假如将变量X从所有可能的因果变量集合中删除,Y的可预测性(在某些理想化的模型中)下降。GC的关键要求是可分离性,即有关导致因素的信息是该变量独有的(例如,捕食者影响的信息不包含在猎物的时间序列中),可以通过从模型中消除该变量来验证。可分性是纯随机和线性系统的特征,GC可以用于检测非线性系统中强耦合(同步)变量之间的相互作用。可分离性反映了这样一种观点:系统可以一次理解一部分,而不是作为一个整体来理解。

      然而,正如Granger 早期所认识到的,这种方法在确定性的环境下可能会有问题,特别是在具有弱耦合或中度耦合的动态系统中。例如,GC在图1中给出了不明确的系统结果(GC计算见S1)。这是因为这类系统不能满足可分离性,它不同于经济学的传统和单一鱼种的渔业管理,需要作为一个整体加以考虑。也就是说,在确定性动态系统(即使是有噪声的系统)中,如果X是Y的原因,关于X的信息将冗余地存在于Y本身,并且不能从Takens定理 的U-a结果中正式删除。为了直观地看到这一点,我们简单地注意到Eq. 1可以被重写为Y(t + 1) 按照Y(t)和Y(t - 1)的模型(见S1方框中的工作示例)。因此,与预测yt有关的X(t)信息在这个系统中是冗余的,不能简单地通过消除显式变量X来删除。当格兰杰的定义被违反时,GC计算就不再有效,这就留下了在这样的系统中检测因果关系的问题。

      除了不可分离性之外,生态系统与使用格兰杰方法研究的典型系统在其他重要方面有所不同。首先,在生态系统动力学中,弱-中度耦合是常态。McCann 和其他人提出了一个强有力的案例,证明了弱耦合在生态食物网中的普遍存在,并证明了它们对系统稳定性的重要性。其次,生态系统通常会受到外部驱动变量(如温度、降水和上升流)的影响。因为许多物种共享相似的非生物环境,这可能导致非相互作用的物种之间的相关性和明显的同步。使得从虚假的相关性中筛选出真实的相互作用的任务变得更加复杂。因此,在生态学中,有以下方法非常重要:(i)处理不可分离系统,(ii)识别弱耦合变量,以及(iii)区分物种之间的相互作用和共享驱动变量的影响。

      在这里,我们研究了一种方法,专门针对在生态时间序列中识别因果关系。我们用简单的模型例子演示了我们方法的原理,表明该方法将物种相互作用与共享驱动变量的影响区分开来。最后,我们将方法应用于生态实验数据和现场研究,显示它如何区分自上而下与自下而上的控制经典草履虫实验和澄清的持续争论的本质之间的交互沙丁鱼,凤尾鱼,海洋表面温度在加利福尼亚海流的生态系统。

      我们的方法不能与许多使用GC的有效方法竞争(见补充文本);相反,它专门针对GC不涉及的一类系统。在GC计算S1到S5和box S1中验证,GC并不适用于这类系统。

    动态因果关系和CCM

      如果世界是纯粹随机的,GC就适用。然而,在确定性和动力学并非完全随机的程度上,将有一个潜在的流形控制动力学(代表连贯的轨迹,而不是随机的纠缠)。

      在动力系统理论中,如果时间序列变量(比如X和Y)来自同一个动力系统 ,那么它们就有因果联系——也就是说,它们共享一个共同的吸引器流形(视频S1到S3说明了这个想法)。这意味着每个变量都可以识别对方的状态(例如,过去的猎物种群信息可以从捕食者的时间序列中恢复,反之亦然)。此外,当一个变量X是人口变量Y的随机环境驱动因素时,关于X状态的信息可以从Y中恢复,但反之亦然。鱼的时间序列可以用来估计天气,但不能反过来。这与格兰杰的直觉方案相悖(见方框S1中的解释)。

      我们的替代方法,收敛交叉映射(CCM),通过测量Y值的历史记录可以可靠地估计X的状态的程度来测试因果关系。 仅当X因果影响Y时,才会发生这种情况。 更详细地讲,CCM通过查看由Y,MY构造的吸引器歧管中的点与X歧管MX中的点之间是否存在对应关系,来寻找Y在时间序列中X的信号。 两个歧管分别由时间序列变量Y和X的滞后坐标构造得到(附件S1和S2)。

      本质上,这个想法是看 Y流形上附近点的时间指数是否可以用来识别mx上的附近点。如果是这样,那么可以用Y来估计X,反之亦然。这个过程在图2和影片S3中进行了说明,包括(26)中的算法在内的全部技术细节。
    在这里插入图片描述
      请注意,CCM与交叉预测的一般概念相关,但有重要区别。首先,CCM估计跨变量的“状态”,而不预测系统如何在流形上“进化” 。这消除了可能的信息损失从混沌动力学(李雅普诺夫发散)和容纳非动态(即随机)变量。更重要的是,CCM涉及到收敛性,这是区分因果关系和简单相关关系的一个关键属性。收敛意味着交叉映射估计在时间序列长度为L(用于构建库的样本大小)时提高了估计技能(图3A、图S2和框S1)。随着数据的增加,定义吸引子的轨迹会填充进来,导致最接近的邻居和随着L增加的估计误差下降(一个更高的相关系数)(图2)。因此,CCM成为因果关系的必要条件。确实,未能考虑到收敛性,这就解释了文献中报道的结果与相关方法相矛盾(补充文本和图S5)。

      在实际应用中,阴影流形是真实系统的低维近似值,收敛将受到观测误差,过程噪声和时间序列长度L的限制。因此,在场数据有限或嘈杂的情况下,证明了CCM在带L限制下的可预测性提高这一点 图S3)。 有关数据需求的讨论,请参见(26)。
    在这里插入图片描述

    识别因果关系的框架

    (i)通过功能耦合进行双向因果关系识别

      双向因果关系类似于Granger(18)所描述的两个时间序列之间的“反馈”概念,也是Takens(19)所涵盖的主要情况。简单地说,如果变量是相互耦合的(例如,捕食者和猎物),它们将在两个方向上交叉映射(图3A和图S1A)。因此,每个变量都可以从其他变量来估计(捕食者的历史可以估计猎物的状态)。图3B给出了该情况的例子。

      请注意,随着耦合强度的增加,受影响变量中的信息变得更加明显。因此,它们的流形将包含更强烈的历史特征的原因。在图1 (Eq. 1)中,例如,by,x>> bx, y物种x对Y的影响更强,意味着预测x的收敛速度比预测Y的更快(图3A)。因此,在所有条件相同的情况下,交叉映射的相对技巧可以表示因果效应的相对强度(图3B)。

    (ii)单向因果关系

      其中,物种X影响着y的动态变化,而物种y对X无影响(图2)。3C和图S1B)。这描述了一种两性或共生关系,或表示外部环境的强迫。

       图3C在β(x,y)=0时检查系统。注意适度的强烈迫使X(通过β(x,y)),尽管Y不起任何作用,Y的同时依赖关系可能会导致X的局部交叉映射。但是,这种统计效果不是收敛的(由图3E中相对于L的渐近水平曲线显示)。由于强制非常强,强制变量的内在动力学从属于强制变量,导致了被充分研究的“同步”现象(27)。图3E中的红色高原表明,在强强迫的情况下可以发生双向收敛。因此,必须排除强强制(同步),使CCM明确地暗示双向耦合,尽管它仍然暗示在公共动态系统中的成员关系。

    传递性

      注意,因果关系是具有传递性的(例如,如果狐狸捕食兔子,兔子吃草,那么狐狸和草是有因果关系的)。更正式的说法是,无论X和Z是否直接互动,X⇔Y⇔Z暗含着X⇔Z。同样,对于单向的强迫,也有X⇒Y,Y⇒Z暗含着X⇒Z。可传递性为将CCM扩展到更大的交互网络提供了基础,使我们能够区分耦合的变量与共享一个共同驱动程序的变量。下面的两个模型示例说明了这一点。

    复杂的模型例子:非耦合变量的外部强迫

      考虑这样一种情况:两种物种X和Y不相互作用,但都是由共同的环境变量Z驱动的(图4A中的例子1示意图)。这在生态系统中很常见,在因果关系的研究中仍然存在问题。在这里,我们认为物种X和Y之间没有交叉映射,因为变量之间没有信息流;然而,关于外力变量(Z)的信息仍然可以从X和Y中恢复。

      例如,在渔业中,由于有利的环境条件而具有共同的高峰采伐年的非相互作用种群即使没有相互作用也可能是相关的。 图4B中的简单渔业模型说明了这种情况,尽管物种之间的显着互相关表明它们可能是耦合的,但是交叉映射显示没有收敛的迹象,证明了它们没有耦合。 这表明CCM可以将真正的交互作用与共享驱动变量产生的简单相关性区分开

      图4C提供了具有更复杂的五种模型的方法的有趣的进一步说明[图4A中为示意图,(26)中为模型细节]。 在此示例中,种类1、2和3代表相互作用的环境,即外部作用于种类4和5,而种类4和5不影响任何其他种类。 物种1、2和3与上面的讨论中的Z相似,其中4和5与外部所有y强制非耦合对X和Y相似。图4C显示,CCM能够推论正确的相互作用网络,从而使所有双向 和单向链接正确。
    在这里插入图片描述

    现实世界的例子:用生态数据进行演示

      记住,从真实数据构造的吸引子是发生在更高维度的动态的近似。因此,尽管观测误差和过程噪声将限制可达到的收敛水平,低维近似仍然可以产生显著的因果效应的交叉地图估计。
    在这里插入图片描述

    1. 一个实验捕食者-猎物系统的双向因果关系
        我们将分析应用于经典的实验捕食者-猎物系统的时间序列,该系统最早由Gause在20世纪20年代研究,后来由Veilleux改进,涉及Didinium(捕食者)和Paramecium(猎物)[方法细节见(26)]。
        图5A的结果表明是双向耦合(情况一),这与已知的情况一致。此外,草履虫时间序列中Didinium的交叉定位技能水平高于反向(图5B),表明捕食者Didinium的自上而下控制强于猎物草履虫的自下而上控制。这一发现与实验方案一致,并说明了不对称的双向耦合(案例i)。
    2. 沙丁鱼-凤尾鱼系统中的复杂因果关系
        这里,我们研究了太平洋沙丁鱼(Sardinops sagax)的着陆,北凤尾鱼(Engraulis mordax)的着陆,以及在加州斯克里普斯码头和新港码头测量的海表温度(SST)之间的关系(图5C)。
        竞争性的假说已经被提出来解释沙丁鱼和凤尾鱼在几十年时间尺度上在全球渔业的交替优势模式。尽管观测到的互反丰度水平(图5A)与生态竞争作为一种潜在机制相呼应,但沙丁鱼和鳀鱼节的全球同步表明,大规模环境强迫与最佳温度水平的物种-物种差异相结合的运作。最近的证据表明,这些系统的类制度行为表明非线性过程的运作。
        与全局模式相似的是,20世纪在加州,太平洋沙丁鱼和北部凤尾鱼的数量下降时,其中一个数量达到峰值。尽管有些人假设物种是在直接竞争中行动的,但另一些人认为物种对普通大规模环境强迫的反应不同。此外,以Santa Barbara盆地缺氧沉积物中保存的鱼鳞为基础的古生态时间序列显示,20世纪的负相关在这些较长的时间序列中消失了。与环境因素的相关性也一直难以捉摸。Jacobson和MacCall使用了两种方法,一种是广义相加模型,另一种是线性化的Ricker鱼群补充模型(含环境条件),并检测了Scripps Pier SST与沙丁鱼补充和产卵鱼群大小之间的3年平均运行时间的相关性。然而,当分析扩展到包括最近的股票评估从1992年到2009年,这种关系消失了。虽然有许多可能的解释,但这种行为与非线性动力学和海市蜃楼相关是一致的。

      我们使用同样的分析方法来解决这个争议(26)。图5D的结果显示沙丁鱼和凤尾鱼之间没有显著的交叉图信号,说明沙丁鱼和凤尾鱼之间没有相互作用。此外,正如预期的那样,在温度管汇中没有发现沙丁鱼或鳀鱼的可检测特征;显然,沙丁鱼和凤尾鱼都不会影响海温。然而,沙丁鱼与海表温度之间、鳀鱼与海表温度之间存在明显的不对称CCM(图5,E和F),这意味着温度信息在两个渔业时间序列中都进行了编码。可恢复的温度特征揭示了温度与沙丁鱼和凤尾鱼的弱耦合。因此,虽然沙丁鱼和凤尾鱼实际上并没有相互作用,但它们受到一个共同的环境驱动力的微弱影响,温度至少是一个可行的代理。注意,由于传递性,温度可能是一组驱动变量的代理(即,温度可能不是最接近的环境驱动因素)。我们发现海温影响沙丁鱼和鳀鱼种群大小(图5,E和F),这与Jacobson和MacCall的早期发现一致。附件提供了与渔业无关的其他数据的支持证据(图。S3和S4)。

      最后,值得注意的是,温度对沙丁鱼种群的可测量非线性耦合意味着温度的影响随系统状态而变化。因此,与目前对沙丁鱼的管制框架相反,一个固定的温度指数将不足以作出健全的管理决定。相反,需要一个涉及温度的动态(状态相关)规则。

    关于不可分离性的最后评论

      这项研究的基本观点之一是,当因果关系是单方面的时,X ⇒ Y(" X驱动Y "就像案例Ⅱ一样)那么可以从Y来估计X,但不能从X来估计Y。这与直觉(和GC)背道而驰,并表明如果天气驱动鱼类数量,例如,我们可以使用鱼类来估计天气,但不能反过来。

      进一步澄清这是如何工作的,考虑前面描述的生态物流模型(Eq.1)。我们可以通过重新排列恢复交叉映射动力学代数Eq.1给表达式Y (t) 和 X (t),用这些回Eq.1,解决X (t)代替Y (t),Y (t - 1)(反之见附录S1)。

      在这些表达式中,参数β(x, y)支配X对Y变化的敏感性,当β(x, y)接近0,X单方面驱动Y(案例ii), X的交叉映射估计仍然表现良好。但是当β(x, y)时,Y的交叉映射模型有一个奇异点,这意味着交叉映射允许从驱动变量重构驱动变量,但不能反过来重构驱动变量(鱼反映天气状态,但不能反过来)。

      最后,因为Eq.1(参数化的fig.1)可以作为一个模型代数重新安排X (t + 1)代替X (t) 和 X (t - 1),从Y变得冗余的信息,可以删除不影响我们的能力来预测X (t + 1)。因此,GC会结束(错误地)导致Y不是由X产生的结果 (GC计算S1)。

    结论

      尽管伯克利在1710年的《论人类知识原理的论文》中提出了一些基本问题,相关性仍然是现代科学的分析标准。随着越来越多的人认识到非线性动力学无处不在,这已经变得越来越难以证明。在非线性系统中,变量之间的明显关系可能由于海市蜃景相关性或区域的阈值变化而自发地转换,而相关性可能导致不正确和矛盾的假设。越来越多的人认识到非线性行为的普遍性和重要性,要求有一个更好的标准来评估不可能进行实验操作的原因。

      格兰杰因果关系以预测而非相关性作为时间序列因果关系的标准来解决伯克利的问题。这个想法假设原因可以与结果分开,因此,如果在删除变量时预测技能下降,则将变量标识为因果关系。在纯粹的随机世界中,这是可能的,并且对于可以作为独立零件进行研究的系统而言,这是一个强大的想法。但是,它并没有针对所有系统进行定义,尤其是没有针对采用Takens定理的确定性动态系统(甚至是嘈杂的系统)进行定义。为了解决这个问题,我们研究了一种利用不可分性的方法,该方法通过使用CCM来测试常见动态系统的成员资格。 CCM不是与GC竞争的方法,而是处理通常在GC中根本不适用的生态研究中经常发现的相互依赖性。因此,毫不奇怪,作为进一步检查,这项工作中考虑的所有模型和实际数据示例的GC计算在很大程度上都没有成功(表S2和GC计算S1至S5)。

      尽管存在许多物种相互作用的经验度量(例如,从饮食矩阵推断相互作用代理),但我们认为,从时间序列信息推断的因果关系提供了一幅相互作用的“底线”图,这比可能与代理的关系更直接。从它们的动态行为中解析因果网络的能力对于系统识别和基于生态系统的管理具有重要意义,特别是在了解哪些物种作为一个群体相互作用并需要被共同考虑的情况下。在资源管理中,象在其他地方一样,对因果网络的准确了解对于避免管制行动的不可预见的后果是必不可少的。

    展开全文
  • 7.7.6 解释变量的使用 312 7.7.7 模型检验 313 7.7.8 说明 314 7.8 极值指数 318 7.8.1 D(un)条件 319 7.8.2 极值指数的估计 321 7.8.3 平稳时间序列的风险值 323 练习题 324 参考文献 326 8 多元时间序列...
  • 第2讲双变量分析1 P36. 第3讲双变量分析2 P37. 第4讲方差分析1 P38. 第5讲方差分析2 P39. 第6讲回归分析1 P40. 第7讲回归分析2 P41. 第8讲回归分析3 P42. 第9逻辑回归1 P43. 第10讲逻辑回归2 P44. 第11...
  • AngularJs四大特性

    2018-06-20 23:09:00
    Model:数据模型,其实就是angular变量($scope.XX,$rootScope.XX); View:视图层,Html+Directive(指令); Controller:业务逻辑和控制逻辑,就是function,数据的增删改查; 一个简单的小例子 <!D...

    angularJS四大核心特性:MVC、Module(模块化)、指令系统、双向数据绑定。

    一、MVC

    Model:数据模型,其实就是angular变量($scope.XX,$rootScope.XX);

    View:视图层,Html+Directive(指令);

    Controller:业务逻辑和控制逻辑,就是function,数据的增删改查;

    一个简单的小例子

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
     <style type="text/css">
            .main {
                text-align: center;
            }
        </style>
    <script src="https://cdn.bootcss.com/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    
    <h5 class='main'>尝试修改以下表单。</h5>
    
    <div class='main' ng-app="myApp" ng-controller="myCtrl">
    姓: <input type="text" ng-model="lastName"><br>
    名: <input type="text" ng-model="firstName"><br>
    <br>
    姓名: {{firstName + " " + lastName}}
    
    </div>
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.firstName= "Menghua";
        $scope.lastName= "Sun";
    });
    </script>
    
    </body>
    </html>

    运行结果:

    分析这个简单的例子,我们可以比较明显的区分出MVC的各层:

    使用angular的module方法定义了一个模块,并在定义的模块上调用了一个controller方法,定义了一个app模块的一个控制器myCtrl;

    而p标签的内容很明显就是显示层view,视图中,你不需要添加 $scope 前缀, 只需要添加属性名即可,如: {{firstName}};

     $scope 对象定义了属性firstName,lastName,视图可以获取这些属性,这些定义的属性为数据模型层

    2、Module(模块化)

    上例中,将控制器模块化。

    可以通过 AngularJS 的 angular.module 函数来创建模块:

    <div ng-app="myApp">...</div>
    
    <script>
    
    var app = angular.module("myApp", []); 
    
    </script>

    模块定义中 []参数用于定义模块的依赖关系;[ ]表示该模块没有依赖,如果有依赖的话会在中括号写上依赖的模块名字。

    添加控制器

    可以使用 ng-controller 指令来添加应用的控制器:

    <div ng-app="myApp" ng-controller="myCtrl">
    {{ firstName + " " + lastName }}
    </div>
    
    <script>
    
    var app = angular.module("myApp", []);
    
    app.controller("myCtrl", function($scope) {
        $scope.firstName = "Menghua";
        $scope.lastName = "Sun";
    });
    
    </script>

     

    注意:一切都是从模块开始的,我们在使用angularJS时,一定要先想到模块,所有的东西都是建立在模块的基础上,只有定义了模块才能调用其它方法。

    上面实例中的ng-app相当于c语言中main函数,所以每个页面中只能定义一个ng-app,他定义了所在的模块。

    3、指令系统

    AngularJS 通过被称为 指令 的新属性来扩展 HTML。

    AngularJS 通过内置的指令来为应用添加功能。

    AngularJS 允许你自定义指令。

    AngularJS 指令

    AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-

    ng-app 指令初始化一个 AngularJS 应用程序。

    ng-init 指令初始化应用程序数据。

    ng-model 指令把元素值(比如输入域的值)绑定到应用程序。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcss.com/angular.js/1.4.6/angular.min.js"></script> 
    </head>
    <body>
    
    <div ng-app="" ng-init="firstName='haiyang'">
    
    <p>在输入框中尝试输入:</p>
    <p>姓名: <input type="text" ng-model="firstName"></p>
    <p>你输入的为: {{ firstName }}</p>
    
    </div>
    
    </body>
    </html>

    运行结果:

    数据绑定

    上例中的 {{ firstName }} 表达式是一个 AngularJS 数据绑定表达式。

    创建自定义的指令

    angularjs的自定义指令系统是最有特色、最吸引人的一个特性。下面先看一个实例:

     

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcss.com/angular.js/1.4.6/angular.min.js"></script> 
    </head>
    <body ng-app="myApp">
    
    <hello></hello>
    
    <script>
    var app = angular.module("myApp", []);
    app.directive("hello", function() {
        return {
            template : "<h1>自定义指令hello!</h1>"
        };
    });
    </script>
    
    </body>
    </html>

    运行结果:

    可以通过设置restrict的值,通过以下方式来调用指令:

    • 元素名
    • 属性
    • 类名
    • 注释

    restrict 值可以是以下几种:

    • E 作为元素名使用
    • A 作为属性使用
    • C 作为类名使用
    • M 作为注释使用
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcss.com/angular.js/1.4.6/angular.min.js"></script> 
    </head>
    <body ng-app="myApp">
    
    <!-- directive: hello -->
    
    <script>
    var app = angular.module("myApp", []);
    app.directive("hello", function() {
        return {
            restrict : "M",
            replace : true,
            template : "<h1>自定义指令!</h1>"
        };
    });
    </script>
    
    <p><strong>注意:</strong> 我们需要在该实例添加 <strong>replace</strong> 属性, 否则注释是不可见的。</p>
    
    <p><strong>注意:</strong> 你必须设置 <b>restrict</b> 的值为 "M" 才能通过注释来调用指令。</p>
    
    </body>
    </html>

    运行结果:

    4、双向数据绑定

    大部分框架实现的都是单向数据绑定,单向数据绑定的意思是将数据绑定到模板上,并且显示到界面上,这种模式的缺点是显示出来后,当数据更改时,并不能及时的更新到页面上,因此angular提出了双向数据绑定的定义。

    比如上面第一个实例,该实例无论在input中输入任何内容,都会实时的显示在下面的p标签中,我们可以看到该实例中我们没有写任何js代码,我们在input上绑定了一个ng-model,它的值为firstName,lastName,而在p标签中则获取这个值,实时显示在html中。

    转载于:https://www.cnblogs.com/sunmarvell/p/9206587.html

    展开全文
  • 什么是统计套利

    千次阅读 2017-07-28 11:22:44
    统计套利主要是在对历史数据进行统计分析的基础上,估计相关变量的概率分布,并结合基本面数据进行分析以指导套利交易,其主要分为配对/一揽子交易、多因素模型、均值回归策略、协整以及针对波动率与相关性的建模,...
  • FreeMark学习笔记

    2015-05-06 07:23:20
    所谓顶层变量就是直接放在数据模型中的值,例如有如下数据模型: Map root = new HashMap(); //创建数据模型 root.put("name","annlee"); //name是一个顶层变量 对于顶层变量,直接使用${variableName}来输出变量值,...
  • freemarker总结

    2015-01-04 14:22:05
    l 数据模型中的变量任何地方都可见,也包括不同的名字空间,下面是修改的库: <p>Copyright (C) ${date} ${user}. All rights reserved. ${user}@acme.com"> l 假设数据模型中的user变量的值是Fred,...
  •  7.3.1 构造函数--一个精度浮点数封装类的例子   7.3.2 缺省构造和拷贝构造   7.3.3 对象常量   7.4 对象的销毁和存储单元的回收   7.5 JavaScript的内置对象   7.5.1 Math对象   7.5.2 Date对象--...
  • 汇编语言教程

    2015-12-29 14:44:50
     4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  • 汇编语言学习大全

    2011-10-08 22:56:17
     4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  • 80x86汇编语言教程

    2011-01-26 21:36:37
     4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符  2 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  •  4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...
  • 汇编语言教程.chm

    2010-02-09 22:55:51
     4 变量  5 六字节变量  6 八字节变量  7 十字节变量  4.3 调整偏移量伪指令  1 偶对齐伪指令  2 对齐伪指令  3 调整偏移量伪指令  4 偏移量计数器的值  4.4 复合内存变量的定义  1 重复说明符 ...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 135
精华内容 54
关键字:

双变量模型例子