JMM中的因果关系似乎是其中最令人困惑的部分.我有几个关于JMM因果关系的问题,并允许并发程序中的行为.
据我了解,目前的JMM总是禁止因果关系循环.(我对吗?)
现在,根据JSR-133文档,第24页,图16,我们有一个例子,其中:
原来 x = y = 0
线程1:
r3 = x;
if (r3 == 0)
x = 42;
r1 = x;
y = r1;
Run Code Online (Sandbox Code Playgroud)
线程2:
r2 = y;
x = r2;
Run Code Online (Sandbox Code Playgroud)
直觉上,r1 = r2 = r3 = 42似乎不可能.但是,它不仅被提及,而且在JMM中也被"允许".
对于这种可能性,我无法理解的文件中的解释是:
编译器可以确定分配给的唯一值
x是0和42.从那以后,编译器可以推断出,在我们执行的时候r1 = x,我们刚刚执行了42的写入x,或者我们刚刚读过x和看过价值42.在任何一种情况下,读取x价值42 是合法的.然后可以r1 = x改为r1 = 42; 这将允许y = r1转换为y = 42更早并执行,从而导致相关行为.在这种情况下,y首先提交写入.
我的问题是,它真的是什么样的编译器优化?(我是编译器无知的.)由于42只被写入有条件,当if …
java concurrency compiler-optimization causality java-memory-model
因果模型和有向图形模型之间有什么区别?因果关系和定向概率关系之间有什么区别?更具体地说,你会把什么放在一个DirectedProbabilisticModel类的接口中,以及一个CausalModel类中的什么?一个人会继承另一个吗?
machine-learning bayesian-networks causality probability-theory
我是Granger Causality的新手,对于理解/解释python statsmodels输出结果的任何建议,我们将不胜感激。我已经构造了两个数据集(正弦函数随时间变化并添加了噪声)
并将它们放在“数据”矩阵中,信号1为第一列,信号2为第二列。然后,我使用以下命令运行测试:
granger_test_result = sm.tsa.stattools.grangercausalitytests(data, maxlag=40, verbose=True)`
Run Code Online (Sandbox Code Playgroud)
结果表明,最佳滞后(以最高的F检验值表示)的滞后为1。
Granger Causality
('number of lags (no zero)', 1)
ssr based F test: F=96.6366 , p=0.0000 , df_denom=995, df_num=1
ssr based chi2 test: chi2=96.9280 , p=0.0000 , df=1
likelihood ratio test: chi2=92.5052 , p=0.0000 , df=1
parameter F test: F=96.6366 , p=0.0000 , df_denom=995, df_num=1
Run Code Online (Sandbox Code Playgroud)
但是,似乎最能描述数据的最佳重叠的滞后时间约为25(在下图中,信号1已向右移动了25点):

Granger Causality
('number of lags (no zero)', 25)
ssr based F test: F=4.1891 , p=0.0000 , df_denom=923, df_num=25
ssr based chi2 test: chi2=110.5149, p=0.0000 , …Run Code Online (Sandbox Code Playgroud) 我想在R中使用CausalImpact软件包来估算干预措施对传染病病例数的影响。我们通常将个案数的分布特征描述为泊松或负二项式。该bsts()函数使我们可以指定泊松族。但是,这遇到了错误CausalImpact()
set.seed(1)
x1 <- 100 + arima.sim(model = list(ar = 0.999), n = 100)
y <- rpois(100, 1.2 * x1)
y[71:100] <- y[71:100] + 10
data <- cbind(y, x1)
pre.period <- c(1, 70)
post.period <- c(71, 100)
post.period.response <- y[post.period[1] : post.period[2]]
y[post.period[1] : post.period[2]] <- NA
ss <- AddLocalLevel(list(), y)
bsts.model <- bsts(y ~ x1, ss, family="poisson", niter = 1000)
impact <- CausalImpact(bsts.model = bsts.model,
post.period.response = post.period.response)
Error in rnorm(prod(dim(state.samples)), 0, sigma.obs) : invalid arguments …Run Code Online (Sandbox Code Playgroud) 假设我们有一个生成两个事件的写模型(域):
Carrier和BusConnection类是(部分)单独的聚合.BusConnection被分配给Carrier并包含其CarrierId(单独的聚合仅由id引用).
在正常的命令和事件流中,写入模型和读取模型中的一切都很好,但是当我们想要从头开始重建/添加新的读取模型时会出现问题.
许多人建议(例如akka-persistence库)事件存储在事件存储中的每个聚合中.当反规范器要求回复事件时,他从每个聚合中获得两个独立的事件流.问题是来自上述示例中的不同聚合的某些事件需要按照它们添加到事件存储的相同顺序进行回复.这意味着我们需要某种因果依赖/部分排序.
最后我的问题:
如果是后者,那么最有效的方法是什么?
domain-driven-design causality cqrs event-sourcing akka-persistence
我有2个不同参数的矩阵:M1和M3具有相同的尺寸.我想在R中做一个明智的grangertest.
M1<- matrix( c(2,3, 1, 4, 3, 3, 1,1, 5, 7), nrow=5, ncol=2)
M3<- matrix( c(1, 3, 1,5, 7,3, 1, 3, 3, 4), nrow=5, ncol=2)
Run Code Online (Sandbox Code Playgroud)
我想做格兰杰的因果关系检验,以确定M2格兰杰是否会导致M1.我的实际矩阵包含更多的列和行,但这只是一个例子.两个向量之间的原始代码如下:
library(lmtest)
data(ChickEgg)
grangertest(chicken ~ egg, order = 3, data = ChickEgg)
Run Code Online (Sandbox Code Playgroud)
我如何编写这个用于列式分析,以便返回具有2行("F [2]"和"Pr(> F)[2]")和两列的矩阵作为结果?
我搜索并看到了一些关于此事的问题,但没有答案(由于问题是一年多前提出的,我希望事情有所改变)
我正在寻找一个库来从连续变量文件推断贝叶斯网络,是否有任何人遇到过的简单\开箱即用的东西?例如,我尝试过 pyAgrum 但是当我运行时
pyAgrum.BNLearner(numdata).learnDAG()
我明白了
异常:[pyAgrum] 类型错误:无法对连续变量执行计数。不幸的是以下变量是连续的:V0
已经尝试过几个库,但它们似乎都只适用于离散变量,希望提前得到一些帮助。
我正在使用python包DoWhy来查看基于此站点的tenure和churn之间是否存在因果关系。
# TREATMENT = TENURE
causal_df = df.causal.do('tenure',
method = 'weighting',
variable_types = {'Churn': 'd', 'tenure': 'c', 'nr_login', 'c','avg_movies': 'c'
},
outcome='Churn',common_causes=['nr_login':'c','avg_movies': 'c'])
Run Code Online (Sandbox Code Playgroud)
我还有许多其他变量。
这是进行分析的正确方法吗?
常见原因是什么意思,如何选择它们?
我如何解释结果以及如何确定?
causality ×8
python ×3
r ×2
bayesian ×1
causalml ×1
concurrency ×1
cqrs ×1
inference ×1
java ×1
lm ×1
matrix ×1
statsmodels ×1
time-series ×1