我正在尝试使用带有“可能性”方法的R调查数据包函数svyciprop来计算比例的置信区间。

这是一些示例代码:

df <- data.frame(id =  c(1, 1, 1, 2, 2, 2), var = c("a", "b", "a", "b", "a", "b"))
survey_design <- svydesign(id = ~id, data = df)
svyciprop(~I(var == "a"), survey_design, method = "likelihood")

这将生成错误消息:
Error in seq.int(xmin, xmax, length.out = n) : 'from' must be finite

我在软件包文档中找不到任何说明如何使它起作用的内容。

非常感谢!

最佳答案

可以通过键入svyciprop或通过谷歌搜索?svyciprop找到svyciprop文档,但是该文档不会涵盖与您的错误一样具体的内容。

由于所有R代码都可供用户阅读,因此您可以调试正在使用的功能。调试survey:::svyciprop,将您引至survey:::confint.svyglm,将其引至MASS:::confint.glm,将其引至MASS:::confint.profile.glm,依此类推。互联网上有很多有关如何在R中使用debug函数的解释。这里有很多 Activity 内容

您会从此计算中的glm对象中获取一些Inf值,从而导致其中断。这可能与您的示例数据集过于完美(且不切实际)有关。 ;)

如果我从您的df中删除了一个观察结果,那么它将起作用。

library(survey)
df <- data.frame(id =  c(1, 1, 2, 2, 2), var = c("a", "b", "b", "a", "b"))
survey_design <- svydesign(id = ~id, data = df)
svyciprop(~I(var == "a"), survey_design, method = "likelihood")

?svyciprop底部找到的示例数据集也可以使用。

您的特殊问题是,您要求的置信区间是不可能的。
# watch how the confidence interval tends toward zero and one as you widen it.
svyciprop(~I(var == "a"), survey_design, method = "likelihood",level=0.8)
svyciprop(~I(var == "a"), survey_design, method = "likelihood",level=0.9)
svyciprop(~I(var == "a"), survey_design, method = "likelihood",level=0.93)
svyciprop(~I(var == "a"), survey_design, method = "likelihood",level=0.95) # this is the default

关于r - R带有 “likelihood”方法的调查包函数svyciprop,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27161907/

10-12 23:29