正確,因此您正試圖在不知道如何處理該類的函數(barNest)中使用對象類(svyby),因爲調查包和plotrix包不能很好地一起玩。幸運的是svyby對象dotchart方法是不是太多的代碼,所以你可能只是想修改它..
# run your code above, then review the dotchart method for svyby objects:
getS3method('dotchart' , 'svyby')
..和從,你可以學習它真的不是遠遠超出調用原dotchart功能(也就是說,在將b
對象中包含的數據轉換爲矩陣後,不使用svyby對象,只是統計數據的常規集合)。現在你所要做的就是增加一個置信區間線。
置信區間寬度很容易通過運行
confint(b)
獲得的(更容易比使用SE(b)
)可以提取這些統計數據,以建立自己的barNest
或plotCI
電話?
如果在點圖上放置置信區間很重要,主要障礙是正確地打y座標。在點圖默認方法中挖掘..
getS3method('dotchart' , 'default')
..你可以看到y座標是如何計算的。削減到只有基本的內容,我想你可以使用這個:
# calculate the distinct groups within the `svyby` object
groups <- as.numeric(as.factor(attr(b , 'row.names')))
# calculate the distinct statistics within the `svyby` object
nstats <- attr(b , 'svyby')$nstats
# calculate the total number of confidence intervals you need to add
n <- length(groups) * nstats
# calculate the offset sizes
offset <- cumsum(c(0, diff(groups) != 0))
# find the exact y coordinates for each dot in the dotchart
# and leave two spaces between each group
y <- 1L:n + sort(rep(2 * offset , nstats))
# find the confidence interval positions
ci.pos <-
rep(groups , each = nstats) +
c(0 , length(groups))
# extract the confidence intervals
x <- confint(b)[ ci.pos , ]
# add the y coordinates to a new line data object
ld <- data.frame(x)
# loop through each dot in the dotchart..
for (i in seq_len(nrow(ld))){
# add the CI lines to the current plot
lines(ld[ i , 1:2 ] , rep(y[i] , 2))
}
但是這顯然笨重,因爲置信區間被允許去的方式在屏幕上。忽略了svyby
類,甚至整個survey
包一秒鐘,找到我們實現dotchart
很好地格式置信區間,我們可能會幫助你更多。我不認爲survey
包是你問題的根源:)
報告錯誤時,預計會提供足夠的詳細信息。代碼在我的機器上運行良好。使用R 2.15.2,plotrix_3.4-5,survey_3.29,據我所知可以是所有當前版本。你甚至沒有描述過什麼「不工作」對你意味着什麼。 –