任何有关这方面的帮助将非常感激.我正在使用Lumley调查包,我正在尝试简化我的代码,但是遇到了一些麻烦.
包中的svymean函数在我的代码中调用如下,其中第一个参数是指示我想要哪些变量的公式,第二个参数是该数据集:
svymean(~hq_ehla, FraSvy, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个函数来提取分类变量的均值(比例)和标准误差,所以我做了以下函数:
stats <- function(repstat, num) {
estmean <- as.numeric(round(100 * repstat[num], digits=0))
estse <- round(100 * sqrt(attributes(repstat)$var[num,num]), digits=1)
return(list(mean=estmean, se=estse))
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,所以当我拿出我的第一个类别的平均值和se时,我使用:
stats(svymean(~hq_ehla, FraSvy, na.rm=TRUE), 1)$mean
stats(svymean(~hq_ehla, FraSvy, na.rm=TRUE), 1)$se
Run Code Online (Sandbox Code Playgroud)
我希望能够做到的是将其简化为更短的东西,也许我只需要写:
stats(FraSvy, "hq_ehla", 1)$mean
Run Code Online (Sandbox Code Playgroud)
或类似的东西.问题是我无法弄清楚如何使用变量名将公式传递给函数.
有没有人知道replicate()函数在R中是如何工作的以及它相对于使用for循环的效率如何?
例如,......之间是否存在效率差异?
means <- replicate(100000, mean(rnorm(50)))
Run Code Online (Sandbox Code Playgroud)
和...
means <- c()
for(i in 1:100000) {
means <- c(means, mean(rnorm(50)))
}
Run Code Online (Sandbox Code Playgroud)
(我可能在上面略微打了一些东西,但你明白了.)
如果您的数据集已经包含BRR权重,有人知道如何在Lumley的调查包中使用BRR权重来估计方差吗?
我正在使用PISA数据,并且它们的数据集中已经包含80个BRR复制。我怎样才能让as.svrepdesign使用它们,而不是尝试自己创建它们?我尝试了以下操作,并得到了随后的错误:
dstrat <- svydesign(id=~uniqueID,strata=~strataVar, weights=~studentWeight,
data=data, nest=TRUE)
dstrat <- as.svrepdesign(dstrat, type="BRR")
Error in brrweights(design$strata[, 1], design$cluster[, 1], ...,
fay.rho = fay.rho, : Can't split with odd numbers of PSUs in a stratum
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,谢谢。
我正在使用R中带有代码簿的数据集,它基本上告诉我我的因子变量的不同级别的标签应该是什么.例如,使用代码簿,我可以看到在我的"性别"变量中,0是"女性"而1是"男性".我正在使用此信息相应地标记变量中的值.
但是,我最近发现,令我沮丧的是,码本不完整.例如,它告诉我一个变量1表示"是",2表示"否",但不告诉我7s,8s和9是什么,我可以在数据中看到.我想做的是将此变量标记为如下(或类似的东西):
data$variable <- factor(data$variable,
levels=c(1, 2, 7, 8, 9),
labels=c("Yes", "No", "7", "8", "9"))
Run Code Online (Sandbox Code Playgroud)
基本上,我希望将代码簿中未指定的所有级别标记为自己.我遇到的问题是这个码本缺少其中的一些,我真的不必手动查看我的数据中的所有未定义值来构造上述代码以用于变量.另外,如果我只是遗漏那些缺失的等级,R会自动将它们标记为"NA",这是我不想要的.
简介:我试图弄清楚如何使用因子(),而不是将所有未指定的级别标记为"NA",它将它们标记为自己.
所以我使用Sweave创建pdf,其中包含一些有大量点的图形.我可以很好地获得pdf,但似乎已经创建了大量的图层,因此很难在Acrobat或Reader中打开文件.当我这样做时,我确实可以观察文档上的点数.
有没有办法在Sweave中展平pdf,这样它就不会那么笨重?
(请注意,我正在使用RStudio.我知道我应该使用其他东西,但我还没有找到任何能够顺利运行的东西.)
我一直在使用这些estout命令已经有一段时间了,但我现在正在处理一些未连接到互联网的计算机.我从esttab命令中收到以下错误:
current estimation results do not have e(b) and e(V)
为了用一个更简单的例子来测试这个,我尝试在这里复制这个例子:http://repec.org/bocode/e/estout/estpost.html#estpost101
我创建了一个示例数据集,如下所示:
price mpg rep78 foreign
1 3 1 1
2 3 1 1
3 3 1 2
4 3 2 3
5 3 2 5
6 3 2 8
7 3 3 13
8 3 3 21
9 3 3 34
Run Code Online (Sandbox Code Playgroud)
然后根据示例运行以下命令:
estpost summarize price mpg rep78 foreign, listwise
esttab, cells("mean sd min max") nomtitle nonumber
Run Code Online (Sandbox Code Playgroud)
我使用该estpost命令获得了预期的输出,但在运行时遇到了上述错误esttab.我已经多次卸载并重新安装此软件包,使用下载到另一台计算机上ssc …
我试图绘制一条由黄土平滑的线,但我试图找出如何包含由现有变量定义的阴影错误区域,但也进行了平滑。
此代码创建示例数据:
set.seed(12345)
data <- cbind(rep("A", 100), rnorm(100, 0, 1))
data <- rbind(data, cbind(rep("B", 100), rnorm(100, 5, 1)))
data <- rbind(data, cbind(rep("C", 100), rnorm(100, 10, 1)))
data <- rbind(data, cbind(rep("D", 100), rnorm(100, 15, 1)))
data <- cbind(rep(1:100, 4), data)
data <- data.frame(data)
names(data) <- c("num", "category", "value")
data$num <- as.numeric(data$num)
data$value <- as.numeric(data$value)
data$upper <- data$value+0.20
data$lower <- data$value-0.30
Run Code Online (Sandbox Code Playgroud)
绘制下面的数据,这就是我得到的:
ggplot(data, aes(x=num, y=value, colour=category)) +
stat_smooth(method="loess", se=F)
Run Code Online (Sandbox Code Playgroud)

我想要的是一个如下图所示的图,除了阴影区域的上限和下限由生成数据中的“上”和“下”变量的平滑线界定。

任何帮助将不胜感激。