Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据汇总到季度级保留指标变量,并在R中拟合线性模型_R_Dplyr_Aggregate_Linear Regression - Fatal编程技术网

将数据汇总到季度级保留指标变量,并在R中拟合线性模型

将数据汇总到季度级保留指标变量,并在R中拟合线性模型,r,dplyr,aggregate,linear-regression,R,Dplyr,Aggregate,Linear Regression,我的数据的结构是,对于每个季度,每个实体都有一个二进制结果y。实体由唯一的id值标识。每个id还有两个虚拟变量,d1和d2,它们表示实体的某些特征。示例数据如下所示: dat <- data.frame(rep(c(1, 2, 3), 4), c(1,1,0,0,1,0,0,0,1,1,1,1), c(rep('Q1', 3), rep('Q2', 3), rep('Q3', 3), rep('Q4', 3)), rep(c(1,0,1), 4), rep(c(1,1,0),4)) col

我的数据的结构是,对于每个
季度
,每个实体都有一个二进制结果
y
。实体由唯一的
id
值标识。每个
id
还有两个虚拟变量,
d1
d2
,它们表示实体的某些特征。示例数据如下所示:

dat <- data.frame(rep(c(1, 2, 3), 4), c(1,1,0,0,1,0,0,0,1,1,1,1), c(rep('Q1', 3), rep('Q2', 3), rep('Q3', 3), rep('Q4', 3)), rep(c(1,0,1), 4), rep(c(1,1,0),4))
colnames(dat) <- c('id', 'y', 'quarter', 'd1', 'd2')
然而,为了保留我的虚拟变量,我最终进行了多个季度观察。当(2)我试图通过虚拟变量检查比例差异时,这就引入了一些问题

使用上述聚合数据,
datq
,我可以适应模型:

lm_d1 <- lm(prop_y ~ d1, data = datq)

lm_d1如果要保留非聚合变量,则无需使用
summary
。按所需的分组变量分组后,所做的所有计算都将在这些组中执行。因此,简单地使用
mutate
就足够了

datq <- dat %>% 
  group_by(quarter) %>% 
  mutate(prop_y = sum(y) / n()) # n() gets the number of observations within each group
datq

# A tibble: 12 x 6
# Groups:   quarter [4]
      id     y quarter    d1    d2 prop_y
   <dbl> <dbl> <fct>   <dbl> <dbl>  <dbl>
 1  1.00  1.00 Q1       1.00  1.00  0.667
 2  2.00  1.00 Q1       0     1.00  0.667
 3  3.00  0    Q1       1.00  0     0.667
 4  1.00  0    Q2       1.00  1.00  0.333
 5  2.00  1.00 Q2       0     1.00  0.333
 6  3.00  0    Q2       1.00  0     0.333
 7  1.00  0    Q3       1.00  1.00  0.333
 8  2.00  0    Q3       0     1.00  0.333
 9  3.00  1.00 Q3       1.00  0     0.333
10  1.00  1.00 Q4       1.00  1.00  1.00 
11  2.00  1.00 Q4       0     1.00  1.00 
12  3.00  1.00 Q4       1.00  0     1.00 
datq%
集团单位(季度)%>%
mutate(prop_y=sum(y)/n())#n()获取每个组中的观察数
datq
#一个tibble:12x6
#组别:季[4]
id y季度d1 d2项目y
1 1.00 1.00第一季度1.00 1.00 0.667
2.00 1.00第一季度0 1.00 0.667
3.00第1季度1.00 0.667
4 1.00 0 Q2 1.00 1.00 0.333
5 2.00 1.00 Q2 0 1.00 0.333
63.00第二季度1.00 0.333
7 1.00 0第三季度1.00 1.00 0.333
8 2.00 0第三季度0 1.00 0.333
9 3.00 1.00第三季度1.00 0.333
10 1.00 1.00第四季度1.00 1.00 1.00
11 2.00 1.00第4季度0 1.00 1.00
12 3.00 1.00第四季度1.00 0 1.00
现在,就你正在做的建模而言,你的SEs是不同的,因为观察的数量不同。N用于计算SEs,因此如果它们不同,SEs也会不同。但这不一定会影响点估计

> datq <- dat %>% 
+   group_by(quarter, d1, d2) %>% 
+   summarise(n_y = n_distinct(id[y == 1]), n = n_distinct(id)) %>% 
+   mutate(prop_y = n_y / n)
> nrow(datq)
[1] 12
> summary(lm(prop_y ~ d1, data = datq))

Call:
lm(formula = prop_y ~ d1, data = datq)

Residuals:
   Min     1Q Median     3Q    Max 
 -0.75  -0.50   0.25   0.50   0.50 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   0.7500     0.2622   2.860   0.0169 *
d1           -0.2500     0.3211  -0.778   0.4543  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5244 on 10 degrees of freedom
Multiple R-squared:  0.05714,   Adjusted R-squared:  -0.03714 
F-statistic: 0.6061 on 1 and 10 DF,  p-value: 0.4543

> 
> datq2 <- dat %>% 
+   group_by(quarter, d1) %>% 
+   summarise(n_y = n_distinct(id[y == 1]), n = n_distinct(id)) %>% 
+   mutate(prop_y = n_y / n)
> nrow(datq2)
[1] 8
> summary(lm(prop_y ~ d1, data = datq2))

Call:
lm(formula = prop_y ~ d1, data = datq2)

Residuals:
   Min     1Q Median     3Q    Max 
-0.750 -0.125  0.125  0.250  0.500 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   0.7500     0.2282   3.286   0.0167 *
d1           -0.2500     0.3227  -0.775   0.4680  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4564 on 6 degrees of freedom
Multiple R-squared:  0.09091,   Adjusted R-squared:  -0.06061 
F-statistic:   0.6 on 1 and 6 DF,  p-value: 0.468
>datq%
+分组(季度、首被告、次被告)%>%
+总结(n_y=n_distinct(id[y==1]),n=n_distinct(id))%>%
+变异(prop_y=n_y/n)
>nrow(datq)
[1] 12
>汇总(lm(项目y~d1,数据=datq))
电话:
lm(公式=prop_y~d1,数据=datq)
残差:
最小1季度中值3季度最大值
-0.75  -0.50   0.25   0.50   0.50 
系数:
估计标准误差t值Pr(>t)
(截距)0.7500.2622.860 0.0169*
d1-0.2500 0.3211-0.778 0.4543
---
签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
剩余标准误差:10个自由度上的0.5244
多重R平方:0.05714,调整后的R平方:-0.03714
F统计量:1和10 DF上的0.6061,p值:0.4543
> 
>datq2%
+第二组(第一季度)%>%
+总结(n_y=n_distinct(id[y==1]),n=n_distinct(id))%>%
+变异(prop_y=n_y/n)
>nrow(datq2)
[1] 8
>汇总(lm(项目y~d1,数据=datq2))
电话:
lm(公式=prop_y~d1,数据=datq2)
残差:
最小1季度中值3季度最大值
-0.750 -0.125  0.125  0.250  0.500 
系数:
估计标准误差t值Pr(>t)
(截距)0.7500.2282 3.286 0.0167*
d1-0.2500 0.3227-0.775 0.4680
---
签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
剩余标准误差:6个自由度上的0.4564
多重R平方:0.09091,调整后的R平方:-0.06061
F-统计量:1和6 DF上的0.6,p-值:0.468

谢谢您的留言!这真的很有帮助。在我上面的版本中没有重新创建,但我的点估计值在实际数据中确实有所不同。你知道为什么会这样吗?如果数据改变,点估计值会改变,所以我猜在你做的不同聚合中,数据是不同的。他们在这种情况下匹配真是奇怪的巧合。
> datq <- dat %>% 
+   group_by(quarter, d1, d2) %>% 
+   summarise(n_y = n_distinct(id[y == 1]), n = n_distinct(id)) %>% 
+   mutate(prop_y = n_y / n)
> nrow(datq)
[1] 12
> summary(lm(prop_y ~ d1, data = datq))

Call:
lm(formula = prop_y ~ d1, data = datq)

Residuals:
   Min     1Q Median     3Q    Max 
 -0.75  -0.50   0.25   0.50   0.50 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   0.7500     0.2622   2.860   0.0169 *
d1           -0.2500     0.3211  -0.778   0.4543  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5244 on 10 degrees of freedom
Multiple R-squared:  0.05714,   Adjusted R-squared:  -0.03714 
F-statistic: 0.6061 on 1 and 10 DF,  p-value: 0.4543

> 
> datq2 <- dat %>% 
+   group_by(quarter, d1) %>% 
+   summarise(n_y = n_distinct(id[y == 1]), n = n_distinct(id)) %>% 
+   mutate(prop_y = n_y / n)
> nrow(datq2)
[1] 8
> summary(lm(prop_y ~ d1, data = datq2))

Call:
lm(formula = prop_y ~ d1, data = datq2)

Residuals:
   Min     1Q Median     3Q    Max 
-0.750 -0.125  0.125  0.250  0.500 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   0.7500     0.2282   3.286   0.0167 *
d1           -0.2500     0.3227  -0.775   0.4680  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4564 on 6 degrees of freedom
Multiple R-squared:  0.09091,   Adjusted R-squared:  -0.06061 
F-statistic:   0.6 on 1 and 6 DF,  p-value: 0.468