我有一个调查数据库,每个问题有一列,每个人回答一行.每个问题的答案值为1到3.
Id Quality? Speed?
-- ------- -----
1 3 1
2 2 1
3 2 3
4 3 2
Run Code Online (Sandbox Code Playgroud)
现在,我需要将结果显示为每个问题一行,每个响应编号都有一列,每列中的值是使用该答案的响应数.最后,我需要计算总分,即1的数量再加上2的数量加上三次数的三倍.
Question 1 2 3 Total
-------- -- -- -- -----
Quality? 0 2 2 10
Speed? 2 1 1 7
Run Code Online (Sandbox Code Playgroud)
有没有办法在基于集合的SQL中执行此操作?我知道如何使用C#中的循环或SQL中的游标,但我试图使它在不支持游标的报告工具中工作.
如果您的数据集已经包含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)
任何帮助将不胜感激,谢谢。
我的客户目前使用ASP.net应用程序,允许他根据30个问题进行用户调查并生成Excel报告.该过程耗时耗力,因为它包含5-6个步骤.
他想要一个可以生成报告的PHP解决方案,并且可以以PDF格式发送.
trciky部分是五角大楼图表/雷达图表 ..
Excel我猜有一组函数来生成这些图表,但我该如何使用PHP?
检查下面的URL ..
http://i.stack.imgur.com/Rpyiq.png
快速帮助高度赞赏!!!
我想知道使用svyglm
或加权之间的区别glm
.
例如:
M1 = glm(formula = yy ~ age + gender + country ,
family = binomial(link = "probit"),
data = P2013,
subset = (P2013$E27>=14 & P2013$E27<=17),
weights = P2013$PESOANO)
Run Code Online (Sandbox Code Playgroud)
或将样本设计定义为:
diseño = svydesign(id =~ NUMERO,
strata =~ ESTRATOGEO,
data = p2013,
weights = P2013$PESOANO)
diseño_per_1417 = subset(diseño, (P2013$E27>=14 & P2013$E27<=17))
Run Code Online (Sandbox Code Playgroud)
然后使用svyglm
:
M2 = svyglm(formula = yy ~ age + gender + country,
family = quasibinomial(link = "probit"),
data = P2013,
subset = (stratum=!0), …
Run Code Online (Sandbox Code Playgroud) 关于R中的调查包的问题.我知道这是非常基本但我什么也没找到.所以:
library(survey)
data(api)
dclus2 <- svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
summary(svyglm(api00 ~ ell + meals + mobility, design = dclus2))
Call:
svyglm(formula = api00 ~ ell + meals + mobility, design = dclus2)
Survey design:
svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 819.2791 21.3900 38.302 4.65e-13 ***
ell -0.5167 0.3240 -1.595 0.139
meals -3.1232 0.2781 -11.231 2.29e-07 ***
mobility -0.1689 0.4449 -0.380 0.711
---
Signif. codes: 0 ‘***’ …
Run Code Online (Sandbox Code Playgroud) 我通常使用mfx包和logitmfx函数生成logit模型边际效应.然而,我目前使用的调查具有权重(由于某些人群中的过采样,其对样本中DV的比例具有很大影响)并且logitmfx似乎没有任何方式来包括权重.
我用svyglm为模型拟合如下:
library(survey)
survey.design <- svydesign(ids = combined.survey$id,
weights = combined.survey$weight,
data = combined.survey)
vote.pred.1 <- svyglm(formula = turnout ~ gender + age.group +
education + income,
design = survey.design)
summary(vote.pred.1)
Run Code Online (Sandbox Code Playgroud)
如何从这些结果中产生边际效应?
我有一个大型数据集(超过2000万个障碍物),我用survey
包分析它,我花了很多时间来运行简单的查询.我试图找到一种方法来加快我的代码,但我想知道是否有更好的方法来提高效率.
在我的基准测试中,我使用svyby
/来比较三个命令的速度svytotal
:
svyby
/svytotal
foreach
dopar
使用7个内核进行并行计算Spoiler:选项3的速度是第一个选项的两倍多但是它不适合大型数据集,因为它依赖于并行计算,并且在处理大型数据集时会快速达到内存限制.尽管我有16GB的RAM,但我也遇到了这个问题.这种内存限制有一些解决方案,但它们都不适用于调查设计对象.
有关如何使其更快而不因内存限制而崩溃的任何想法?
# Load Packages
library(survey)
library(data.table)
library(compiler)
library(foreach)
library(doParallel)
options(digits=3)
# Load Data
data(api)
# Convert data to data.table format (mostly to increase speed of the process)
apiclus1 <- as.data.table(apiclus1)
# Multiplicate data observations by 1000
apiclus1 <- apiclus1[rep(seq_len(nrow(apiclus1)), 1000), ]
# create a count variable
apiclus1[, Vcount := 1]
# create survey design
dclus1 <- svydesign(id=~dnum, …
Run Code Online (Sandbox Code Playgroud) 我使用 R 中的 svydesign 包来运行调查加权 logit 回归,如下所示:
sdobj <- svydesign(id = ~0, weights = ~chweight, strata = ~strata, data = svdat)
model1 <- svyglm(formula=formula1,design=sdobj,family = quasibinomial)
Run Code Online (Sandbox Code Playgroud)
但是,该文档对未指定有限总体修正 (FPC) 的回归提出了警告:
If fpc is not specified then sampling is assumed to be
with replacement at the top level and only the first stage of
cluster is used in computing variances.
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有足够的信息来指定每个级别的人口(我对其中的抽样很少)。任何关于如何在没有 FPC 信息的情况下指定调查权重的信息都会非常有帮助。
能够在 Windows 上多线程会很棒,但也许这个问题比我想象的要难.. :(
里面survey:::svyby.default
有一个块,lapply
或者mclapply
取决于multicore=TRUE
你的操作系统。lapply
无论如何,Windows 用户都会被迫进入循环,我想知道是否有任何方法可以mclapply
代替……加快计算速度。
我不太了解并行处理的内部结构,但我做了一些实验,看看是否有任何 Windows 可接受的替代方案可行。首先我尝试覆盖 mclapply
mclapply <-
function( X , FUN , ... ){
clusterApply(
x = X ,
fun = FUN ,
cl = makeCluster( detectCores() ) , ... )
}
Run Code Online (Sandbox Code Playgroud)
接下来我用来fixInNamespace( svyby.default , "survey" )
删除该行
if (multicore) parallel:::closeAll()
但这只是让我达到了
> svyby(~api99, ~stype, dclus1, svymean , multicore=TRUE )
Error in checkForRemoteErrors(val) :
3 nodes produced errors; first error: object 'svymean' …
Run Code Online (Sandbox Code Playgroud) 我正在病例对照研究中用权重来估计生存率。因此,所有案例的权重都等于 1。在绘制估计曲线并将其与未加权估计进行比较时,我注意到案例的 KM 曲线不重叠。
这是“survival”包中的数据代码。
library(dplyr)
library(tidyverse)
library(survival)
library(broom)
library(WeightIt)
library(survey)
a <- survival::ovarian
#Calculation of weghts:
weights <- WeightIt::weightit(rx ~ age + ecog.ps + resid.ds, int = T, estimand = "ATT", data = a, method = "glm" , stabilize = F, missing = "saem")
a$weights <- weights$weights
a$ps <- weights$ps
design <- svydesign(ids = ~ 1, data = a, weights = ~weights)
KM_PFS <- survfit(Surv(futime, fustat > 0)~rx, a) # KM naive
KM_PFS_w_TT <- survfit(Surv(futime, fustat > 0)~rx, a, …
Run Code Online (Sandbox Code Playgroud)