简体   繁体   English

R 上的双向 ANOVA 中没有 P 或 F 值

[英]No P or F values in Two Way ANOVA on R

I'm doing an assignment for university and have copied and pasted the R code so I know it's right but I'm still not getting any P or F values from my data:我正在为大学做作业,并复制并粘贴了 R 代码,所以我知道这是对的,但我仍然没有从我的数据中获得任何 P 或 F 值:

Food    Temperature Area
50         11     820.2175
100        11     936.5437
50         14    1506.568
100        14    1288.053
50         17   1692.882
100        17   1792.54

This is the code I've used so far:这是我到目前为止使用的代码:

aovdata<-read.table("Condition by area.csv",sep=",",header=T)
attach(aovdata)
Food <- as.factor(Food) ; Temperature <- as.factor(Temperature)
summary(aov(Area ~ Temperature*Food))

but then this is the output:但这是 output:

                  Df Sum Sq Mean Sq
Temperature       2 757105  378552
Food              1      1       1
Temperature:Food   2  35605   17803

                                                                                   

Any help, especially the code I need to fix it, would be great.任何帮助,尤其是我需要修复它的代码,都会很棒。 I think there could be a problem with the data but I don't know what.我认为数据可能有问题,但我不知道是什么。

I would do this.我会这样做。 Be aware of difference between factor and continues predictors.注意因子和连续预测变量之间的差异。

library(tidyverse)

df <- sapply(strsplit(c("Food    Temperature Area", "50         11     820.2175", "100        11     936.5437", 
                  "50         14    1506.568", "100        14    1288.053", "50         17   1692.882", 
                  "100        17   1792.54")," +"), paste0, collapse=",") %>% 
  read_csv()

model <- lm(Area ~ Temperature * as.factor(Food),df)

summary(model)
#> 
#> Call:
#> lm(formula = Area ~ Temperature * as.factor(Food), data = df)
#> 
#> Residuals:
#>      1      2      3      4      5      6 
#> -83.34  25.50 166.68 -50.99 -83.34  25.50 
#> 
#> Coefficients:
#>                                Estimate Std. Error t value Pr(>|t|)  
#> (Intercept)                    -696.328    505.683  -1.377    0.302  
#> Temperature                     145.444     35.580   4.088    0.055 .
#> as.factor(Food)100               38.049    715.144   0.053    0.962  
#> Temperature:as.factor(Food)100   -2.778     50.317  -0.055    0.961  
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 151 on 2 degrees of freedom
#> Multiple R-squared:  0.9425, Adjusted R-squared:  0.8563 
#> F-statistic: 10.93 on 3 and 2 DF,  p-value: 0.08498

ggeffects::ggpredict(model,terms = c('Temperature','Food')) %>% plot()

Created on 2020-12-08 by the reprex package (v0.3.0)reprex package (v0.3.0) 于 2020 年 12 月 8 日创建

The actual problem with your example is not that you're using factors as predictor variables, but rather that you have fitted a 'saturated' linear model (as many parameters as observations), so there is no variation left to compute a residual SSQ, so the ANOVA doesn't include F/P values etc.您的示例的实际问题不是您使用因子作为预测变量,而是您已经拟合了一个“饱和”线性 model(与观察值一样多的参数),因此计算剩余 SSQ 时没有任何变化,所以方差分析不包括 F/P 值等。

It's fine for temperature and food to be categorical (factor) predictors, that's how they would be treated in a classic two-way ANOVA design.温度和食物可以作为分类(因子)预测因子,这就是它们在经典的双向 ANOVA 设计中的处理方式。 It's just that in order to analyze this design with the interaction you need more replication.只是为了分析这个设计与交互,你需要更多的复制。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM