【问题标题】:Permutation of a value by another另一个值的排列
【发布时间】:2017-01-13 11:47:15
【问题描述】:

我正在使用具有这两个变量的数据库在 R 中工作。伪装和探测。这些值是二进制的,0 表示显眼,1 表示伪装。 1 表示检测到,0 表示未检测到。但是,在我的分析过程中,我在检测变量中添加了称为未知的值。我想用 1 然后 0 排列 Unknown,看看每个排列是否会影响我正在使用的 glm 的重要性。排列可能是所有 Unknown 变为 0 或 1,或者一些变为 1,而另一些变为 0。随机排列。可能很简单,只是我对 R 不是很实用。

【问题讨论】:

  • 如果你举例说明你有什么、想要的输出和你尝试过什么,那么回答问题会容易得多
  • 我实际上在数据库中有两列:检测和伪装。我想看看模型伪装时是否被检测到。但是,有时不清楚是否检测到它,所以我将未知放在检测列中。我想用这个 Unknown 来看看如果 Unknown 被实际检测到 (1) 或未检测到 (0),我会得到什么样的结果。我希望我很清楚

标签: r statistics permutation glm


【解决方案1】:

试试这个:

camouf = c(1,NA,0,0,1,0,NA,NA,NA,0,1)

perm <- function(vec, chance = 0.5){
    unknown <- which(is.na(camouf))
    vec[unknown] <- sample(0:1, size=length(unknown), 
                       prob = c(1-chance,chance), replace = TRUE)
    return(vec)
}

perm(camouf) # do it once

replicate(50, perm(camouf))  # do it many times

它定义了一个函数perm 来执行你所说的置换01 的向量,并在原始具有@987654327 的地方随机放入01 @。 1 的概率可以通过 chance = 参数给出。

【讨论】:

  • 感谢您的回答。但我实际上在数据库的列中有值。我应该将其转换为矢量吗?而且我没有 NA,它实际上是 Unknown 所以我想在第一次操作中我应该用 Unknown 替换 NA 对吧?
  • R 中的一列始终是一种数据。如果某些行是字符类型,例如“未知”,则该列中的其他值不能是数字,但也必须是 bi 字符类型。 NA 表示“不可用”是 R 中的一个特殊值,它可以是全数字列的一部分。因此,当将数据读入 R 时,您必须确保所有“未知”值都变为 NA。将数据读入 R 后,它们形成一个data.framedata.frame 中的每一列都是一个向量。这就是为什么我演示了如何使用矢量来做到这一点。
  • 好的,现在我明白了。事实上,每当我将列转换为向量时,R 都会将我的 Unknown 值更改为 3。执行此排列后,如何检查每个排列对我的 glm 的影响,即 model1=glm(Detection~Camouflage, data,family=binomial)
  • 您可以为每个新构建的向量计算 glm,然后比较模型/系数/...。这一切都取决于您首先尝试这样做的原因。我想您尝试进行某种引导,但您从未说明过您想要达到什么目的。
  • 是的,这是某种引导,但我不知道该怎么做。我的目的是用 0/1 的所有可能组合替换未知值或 NA,以查看伪装对检测的影响是否保持显着。实际上,我正在分析相机陷阱,在某些情况下,不清楚捕食者是否检测到模型,所以我只输入了未知。我在不考虑未知的情况下实现了 glm,并获得了伪装对检测的显着影响。现在,我想看看是否真的检测到了 Unknown。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2018-09-27
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多