R - 为配对(错误)匹配实现 bootstrap 函数
R - implement bootstrap function for paired (mis)matches
我在 boot
库中实现函数时遇到问题。
我要实现的功能如下
fsyn = function(x) sum( x[1,] == x [2,] )
这是两个序列之间匹配的计数。
我的数据是一组序列如
id V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 1 c a c b c c b d d a
2 1 c d a a c b d a b a
3 2 b d c b b b c d a b
4 2 b a b c b c d b a d
关于这些序列的一个重要事实是它们 由 id
配对。
我有兴趣做两件事,第一是 bootstrap id
的匹配数,第二是随机的两个人。
第一个程序可以通过
实现
library(dplyr)
chid = df$id
# sampling paired sequences #
wchid = function(chid) which(chid %in% sample(chid, 1))
# the matches function #
fsyn = function(x) sum( x[1,] == x [2,] )
# wrapping the function #
funcHamC = function(df) df[wchid(chid), -1] %>% fsyn
和
df %>% funcHamC
第二个函数可以简单地写成
funcHamR = function(df) df[sample(df$id, 2), -1] %>% fsyn
df %>% funcHamR
但是,我在 boot
中使用这两个函数时遇到问题。
library(boot)
boot(df, funcHamC, R = 10)
boot(df, funcHamR, R = 10)
这是行不通的。任何想法 ?
数据
df = as.data.frame( t(replicate(20, sample(letters[1:4], 10, T))) )
df$id = rep(1:10, 2)
df = df %>% select(id, everything()) %>% arrange(id)
boot
函数需要 statistic
函数的两个参数——第二个参数是指定要选择的样本值的参数。因为您使用自己的方法从数据中随机选择,所以您应该将 sim
参数设置为 'parametric'
。这将使用 ran.gen
参数来指定一个函数以从数据中生成随机值。
引用自帮助文件:"If ran.gen
is not specified, the default is a function which returns the original data
in which case all simulation should be included as part of statistic
."
将引导输出保存到变量中——例如 C.boot
和 R.boot
,您将在 C.boot$t
和 R.boot$t
.
中找到样本
C.boot <- boot(df, statistic=funcHamC, R = 10, sim='parametric')
R.boot <- boot(df, statistic=funcHamR, R = 10, sim='parametric')
然后您可以从生成的值中获取所需的统计信息。
我在 boot
库中实现函数时遇到问题。
我要实现的功能如下
fsyn = function(x) sum( x[1,] == x [2,] )
这是两个序列之间匹配的计数。
我的数据是一组序列如
id V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 1 c a c b c c b d d a
2 1 c d a a c b d a b a
3 2 b d c b b b c d a b
4 2 b a b c b c d b a d
关于这些序列的一个重要事实是它们 由 id
配对。
我有兴趣做两件事,第一是 bootstrap id
的匹配数,第二是随机的两个人。
第一个程序可以通过
实现library(dplyr)
chid = df$id
# sampling paired sequences #
wchid = function(chid) which(chid %in% sample(chid, 1))
# the matches function #
fsyn = function(x) sum( x[1,] == x [2,] )
# wrapping the function #
funcHamC = function(df) df[wchid(chid), -1] %>% fsyn
和
df %>% funcHamC
第二个函数可以简单地写成
funcHamR = function(df) df[sample(df$id, 2), -1] %>% fsyn
df %>% funcHamR
但是,我在 boot
中使用这两个函数时遇到问题。
library(boot)
boot(df, funcHamC, R = 10)
boot(df, funcHamR, R = 10)
这是行不通的。任何想法 ?
数据
df = as.data.frame( t(replicate(20, sample(letters[1:4], 10, T))) )
df$id = rep(1:10, 2)
df = df %>% select(id, everything()) %>% arrange(id)
boot
函数需要 statistic
函数的两个参数——第二个参数是指定要选择的样本值的参数。因为您使用自己的方法从数据中随机选择,所以您应该将 sim
参数设置为 'parametric'
。这将使用 ran.gen
参数来指定一个函数以从数据中生成随机值。
引用自帮助文件:"If ran.gen
is not specified, the default is a function which returns the original data
in which case all simulation should be included as part of statistic
."
将引导输出保存到变量中——例如 C.boot
和 R.boot
,您将在 C.boot$t
和 R.boot$t
.
C.boot <- boot(df, statistic=funcHamC, R = 10, sim='parametric')
R.boot <- boot(df, statistic=funcHamR, R = 10, sim='parametric')
然后您可以从生成的值中获取所需的统计信息。