我需要从包BSDA中的SIGN.test函数中提取p值:
> library(BSDA)
> x <- c(7.8, 6.6, 6.5, 7.4, 7.3, 7., 6.4, 7.1, 6.7, 7.6, 6.8)
> t1=SIGN.test(x,md=6.5)
One-sample Sign-Test
data: x
s = 9, p-value = 0.02148
alternative hypothesis: true median is not equal to 6.5
95 percent confidence interval:
6.571273 7.457455
sample estimates:
median of x
7
但是我收到以下错误:
> t1$p.value
Error in t1$p.value : $ operator is invalid for atomic vectors
我也试过str(t1)
没有用。
> str(t1)
num [1:3, 1:3] 0.935 0.95 0.988 6.6 6.571 ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:3] "Lower Achieved CI" "Interpolated CI" "Upper Achieved CI"
..$ : chr [1:3] "Conf.Level" "L.E.pt" "U.E.pt"
答案 0 :(得分:4)
我查看了函数的代码,除非满足特定条件(k<1
),否则它似乎不包含在输出中,其中k
在函数中定义。这不是文档所说的应该做的。您可以选择将修改后的函数版本放在自己的工作区中;你需要做的是替换最后两行
print(rval)
return(Confidence.Intervals)
只是
return(rval)
您将无法获得您获得的置信区间,但如果您愿意,也可以将它们添加到输出列表中,
rval$Confidence.Intervals <- Confidence.Intervals
return(rval)
与软件包维护人员联系也许是值得的,尽管它看起来不像自2012年3月以来一直在更新,无论价值多少。
答案 1 :(得分:1)
我遇到了同样的问题,一位优秀的R程序员为我修改了代码以提取p值。
就这样做。你的问题将得到解决。
1)发送一行只是写SIGN.test,它会显示你的功能,复制它,按你喜欢的名字命名,然后在步骤2中复制文本并将它们替换为函数最后一行......
2)
print(rval)
list(rval,Confidence.Intervals)
}
}
3)请注意,最后一行是
print(rval)
return(Confidence.Intervals)
}
}
<environment: namespace:BSDA>
用第2步中的行替换它们
4)如果我们通过my命名函数,并将函数结果存储在res中,则通过写入来提取p值。
<强>输入强>
res<-my(x,md=6.5)
<强>输出强>
RES [[1]] $ p.value [1] 0.02148438;其中x是你的向量
参考: - https://www.facebook.com/groups/rusers/10152075287578740/