【问题标题】:R:hypothesis testing for panel dataR:面板数据的假设检验
【发布时间】:2016-10-01 18:49:56
【问题描述】:

我有一个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"))

【问题讨论】:

  • 您提供的数据表明每年有相同的五个人在吃冰淇淋,但您链接到的示例表明每年有五个人独立抽样。哪个是对的?如果是后者,那么(重命名数据 X 中的第三个变量以使其简单并调用数据框 dt):aov(X ~ factor(Year), data = dt) 应该可以工作。此返回的 F 值应与您链接到的帖子中提到的相同。
  • 我的意思是同样的五个人每年都在吃冰淇淋。我链接到它是因为它建议我使用似然比。也欢迎任何其他方式。
  • 亲爱的@David_B 你能帮我解决这个问题吗?
  • 这意味着您链接到的答案中的建议是错误的,因为它基于每年抽取独立样本的假设。你必须做aov(X ~ factor(Year) + Person, data = dt)。严格来说,这是对所有均值等于 X 的样本均值 (53.12) 而不是均值 = 50 的零假设的检验。如果您想对此进行测试,请查看 car 包中的 linearHypothesis 函数。
  • @PolarBear 抱歉,我似乎误解了您的要求。查看 David_B 提出的建议

标签: r panel-data hypothesis-test


【解决方案1】:

好的,我会尝试(尽管说实话,我认为您的问题更多的是不了解统计数据而不是不了解 R,因此这可能不是您真正需要的,因为我不是统计学家)。您可以使用 ANOVA(使用 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 值 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 值也不

重复一遍,我不是统计学家,所以这可能不是解决您问题的正确方法,但鉴于您提供的问题规范,这是我的最佳猜测。

【讨论】:

    猜你喜欢
    • 2020-06-30
    • 2020-10-23
    • 2018-02-09
    • 2015-01-21
    • 2018-08-10
    • 1970-01-01
    • 2021-12-31
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多