R:hypothesis 面板数据测试

R:hypothesis testing for panel data

我有一个 panel(5x5) 有 5 年 5 个人每天消耗的冰淇淋的平均值。我想对该小组进行 mean=50 的假设检验。请帮助在 R 中执行此操作。我不知道如何进行,所以我没有示例代码。以下是我的数据:

# dput(Sample)

structure(list(Year = c(2011, 2011, 2011, 2011, 2011, 2012, 2012, 
2012, 2012, 2012, 2013, 2013, 2013, 2013, 2013, 2014, 2014, 2014, 
2014, 2014, 2015, 2015, 2015, 2015, 2015), Person = c("A", "B", 
"C", "D", "E", "A", "B", "C", "D", "E", "A", "B", "C", "D", "E", 
"A", "B", "C", "D", "E", "A", "B", "C", "D", "E"), 
'Mean of Ice-cream units per day' = c(45, 
40, 35, 55, 65, 57, 49, 45, 32, 27, 85, 79, 85, 48, 35, 15, 6, 
99, 45, 47, 49, 85, 35, 66, 99)), class = c("tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -25L), .Names = c("Year", "Person", 
"Mean of Ice-cream units per day"))

好的,我会尝试(尽管说实话,我认为你的问题更多的是不真正理解统计而不是不理解 R,因此这可能不是你真正需要的,因为我不是统计学家)。您可以使用方差分析(使用 aov 函数或等效地使用 lm 的线性回归)轻松检验每年均值不相等的假设。我将使用后者,因为它稍后会有用. 作为第一步,这是值得做的,因为从逻辑上讲,如果你可以拒绝它们都相等的原假设,你也可以拒绝它们都等于任何特定值的原假设。

> l1 <- lm(X ~ Year, dta)
> summary(l1)

Call:
lm(formula = X ~ Year, data = dta)

Residuals:
   Min     1Q Median     3Q    Max 
 -36.4  -15.0    2.6   15.0   56.6 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)    48.00      10.66   4.502 0.000218 ***
Year2012       -6.00      15.08  -0.398 0.694896    
Year2013       18.40      15.08   1.220 0.236535    
Year2014       -5.60      15.08  -0.371 0.714242    
Year2015       18.80      15.08   1.247 0.226856    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 23.84 on 20 degrees of freedom
Multiple R-squared:  0.2165,    Adjusted R-squared:  0.05983 
F-statistic: 1.382 on 4 and 20 DF,  p-value: 0.2758

这就是您的操作方式,以及您应该得到的输出。您可能需要注意,这些估计值等同于每年的均值。因此,2011 年的平均值等于截距 (48),2012 年的平均值为 48 - 6 = 42,依此类推。因此,要使每年的均值相等,所有年份虚拟变量的估计值必须为零。

就您的目的而言,您感兴趣的是最后一行。这显示了此回归是否是对仅包含截距的模型的显着改进的测试。仅截距模型相当于说所有虚拟变量的估计值为零。因此,如果您可以拒绝原假设(如果最后一行中的 p 值 < 0.05),您就可以完成,因为它会告诉您至少有一年的平均值与其他年份有显着差异。通常,大多数此类数据的分析都会在此处停止。不幸的是,您的情况并非如此,因为您需要进一步检验均值 = 50,因为到目前为止我们一直在检验每年的均值等于 'grand mean' 的假设,即53.12。这就是可以使用 linearHypothesis 函数的地方。

> library(car)
> linearHypothesis(l1, c("(Intercept) = 50", "Year2012 = 0", "Year2013 = 0", "Year2014 = 0", "Year2015 = 0"))
Linear hypothesis test

Hypothesis:
(Intercept) = 50
Year2012 = 0
Year2013 = 0
Year2014 = 0
Year2015 = 0

Model 1: restricted model
Model 2: X ~ Year

  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     25 14752                           
2     20 11367  5    3384.8 1.1911 0.3487

此模型将每年的均值估计值限制为 50(即截距),并将其与每年均值允许不同的值进行比较。您可以看到它的 p 值也不 < 0.05,因此您的结论是您无法拒绝每年均值为 50 的原假设。

再说一遍,我不是统计学家,所以这可能不是您问题的正确解决方案,但考虑到您提供的问题说明,这是我的最佳猜测。