小编jwd*_*ink的帖子

在JAGS中以"计数过程"形式表示参数生存模型

问题

我正在尝试在JAGS中建立一个生存模型,允许时变协变量.我希望它是一个参数模型 - 例如,假设生存遵循威布尔分布(但我想让危险变化,所以指数太简单了).因此,这基本上是可以在flexsurv包中完成的贝叶斯版本,它允许参数模型中的时变协变量.

因此,我希望能够以"计数过程"形式输入数据,其中每个主题有多行,每行对应于其协变量保持不变的时间间隔(如本pdf此处所述).这是包或包允许的(start, stop]配方.survivalflexurv

不幸的是,关于如何在JAGS中进行生存分析的每一个解释似乎都假设每个主题一行.

我试图采用这种更简单的方法并将其扩展到计数过程格式,但模型没有正确估计分布.

失败的尝试:

这是一个例子.首先,我们生成一些数据:

library('dplyr')
library('survival')

## Make the Data: -----
set.seed(3)
n_sub <- 1000
current_date <- 365*2

true_shape <- 2
true_scale <- 365

dat <- data_frame(person = 1:n_sub,
                  true_duration = rweibull(n = n_sub, shape = true_shape, scale = true_scale),
                  person_start_time = runif(n_sub, min= 0, max= true_scale*2),
                  person_censored = (person_start_time + true_duration) > current_date,
                  person_duration = ifelse(person_censored, current_date - person_start_time, true_duration)
)

  person person_start_time …
Run Code Online (Sandbox Code Playgroud)

r bayesian jags survival-analysis weibull

65
推荐指数
1
解决办法
1437
查看次数

Python/OpenCV:从立体图像计算深度图

我有两个立体图像,我想用来计算深度图.虽然我很遗憾不知道C/C++,但我确实知道python--所以当我找到这个教程时,我很乐观.

不幸的是,该教程似乎有点过时了.它不仅需要调整才能运行(将'createStereoBM'重命名为'StereoBM'),但是当它运行时,即使在教程本身使用的示例立体图像上也没有给出好的结果.

这是一个例子:

图像左 图像右

import numpy as np
import cv2
from matplotlib import pyplot as plt

imgL = cv2.imread('Yeuna9x.png',0)
imgR = cv2.imread('SuXT483.png',0)

stereo = cv2.StereoBM(1, 16, 15)
disparity = stereo.compute(imgL, imgR)

plt.imshow(disparity,'gray')
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果:

结果

这看起来与本教程的作者所达到的完全不同:

好结果http://docs.opencv.org/trunk/_images/disparity_map.jpg

调整参数并不能改善问题.我能找到的所有文档都是针对openCV代码的原始C版本,而不是python-library-equivalent.遗憾的是,我还没有用它来改进.

任何帮助,将不胜感激!

python opencv depth

13
推荐指数
2
解决办法
3万
查看次数

在ggplot2的stat_density2d中指定密度的比例

我正在寻找创建多个密度图,以制作"动画热图".

由于动画的每个帧都应该是可比较的,我希望每个图上的密度 - >颜色映射对于所有这些都是相同的,即使每个帧的数据范围发生变化.

这是我为每个单独的图表使用的代码:

ggplot(data= this_df, aes(x=X, y=Y) ) + 
    geom_point(aes(color= as.factor(condition)), alpha= .25) +
    coord_cartesian(ylim= c(0, 768), xlim= c(0,1024)) + scale_y_reverse() +
    stat_density2d(mapping= aes(alpha = ..level..), geom="polygon", bins=3, size=1)
Run Code Online (Sandbox Code Playgroud)

想象一下,我使用相同的代码,但'this_df'在每一帧上都会发生变化.因此,在一个图中,密度范围可以从0到4e-4.另一方面,密度范围为0到4e-2.

默认情况下,ggplot将为每个这些计算不同的密度 - >颜色映射.但这意味着两个图形 - 动画的两个框架 - 并不具有可比性.如果这是直方图或密度图,我只需调用coord_cartesian并更改x和y lim.但对于密度图,我不知道如何改变比例.

我能找到的最接近的是:

使用Alpha通道叠加两个ggplot2 stat_density2d图

但我没有选择将两个密度图放在同一个图上,因为我希望它们是不同的帧.

任何帮助将非常感谢!

编辑:

这是一个可重复的例子:

set.seed(4)
g = list(NA,NA)
for (i in 1:2) {

  sdev = runif(1)
  X = rnorm(1000, mean = 512, sd= 300*sdev)
  Y = rnorm(1000, mean = 384, sd= 200*sdev)

  this_df = as.data.frame( cbind(X = …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 kernel-density

6
推荐指数
2
解决办法
9297
查看次数

使用R中'rpart'包中的生存树来预测新的观察结果

我正在尝试使用R中的"rpart"包来构建生存树,我希望使用这棵树然后对其他观察进行预测.

我知道有很多涉及rpart和预测的SO问题; 但是,我无法找到任何解决(我认为)特定于使用带有"Surv"对象的rpart的问题.

我的特殊问题涉及解释"预测"功能的结果.一个例子很有帮助:

library(rpart)
library(OIsurv)

# Make Data:
set.seed(4)
dat = data.frame(X1 = sample(x = c(1,2,3,4,5), size = 1000, replace=T))
dat$t = rexp(1000, rate=dat$X1)
dat$t = dat$t / max(dat$t)
dat$e = rbinom(n = 1000, size = 1, prob = 1-dat$t )

# Survival Fit:
sfit = survfit(Surv(t, event = e) ~ 1, data=dat)
plot(sfit)

# Tree Fit:
tfit = rpart(formula = Surv(t, event = e) ~ X1 , data = dat, control=rpart.control(minsplit=30, cp=0.01))
plot(tfit); text(tfit)

# Survival Fit, Broken …
Run Code Online (Sandbox Code Playgroud)

tree r survival-analysis rpart

5
推荐指数
1
解决办法
6657
查看次数

Python - Pandas — 如何检查 DataFrame 是按哪一列分组的?

想象一下我有一个输出分组数据帧的函数。我现在想找出这个 DataFrame 是按哪一列分组的。我怎样才能做到这一点?

编辑:

这是一些代码:

from pandas import DataFrame
df = DataFrame({'A' : [0, 1, 2],
                'B' : [1, 6, 5],
                'C' : [2, 5, 4]
                 } )
grp = df.groupby('A')
Run Code Online (Sandbox Code Playgroud)

问题是如何判断grp是按A分组的。


下面,约翰-高尔特给出了一个非常有用的答案。然而,我发现了一种情况,如何应用他的解决方案并不是立即显而易见的:使用自定义分组函数。

编辑2:没关系,那个案例不是我想象的那样。我的问题已经得到解答。

python pandas

3
推荐指数
1
解决办法
746
查看次数