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 的原假设。
再说一遍,我不是统计学家,所以这可能不是您问题的正确解决方案,但考虑到您提供的问题说明,这是我的最佳猜测。
我有一个 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 的原假设。
再说一遍,我不是统计学家,所以这可能不是您问题的正确解决方案,但考虑到您提供的问题说明,这是我的最佳猜测。