我正在尝试使用带有“可能性”方法的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/