今天发现一个非常有意思的东西,给定单变量因子的因子水平数,使用R语言aov()函数做方差分析,无论因子水平数为多少,最终得到的方差分析表里面因子的自由度始终为1。
但是根据方差分析定义自由度应该为因子水平数减1,假设变量有A、B、C三个水平,自由度应该是3-1=2。但是由aov()得到的自由度可能为1。
这是因为在数据中将因子水平定义为了数值型,比如将ABC导入的时候替换成了123,此时aov()函数会认为这个因子只有一个水平,即为连续型变量,此时的自由度就是1。
解决这种问题的方法也很简单,只需要使用as.factor()函数将因子列转化为因子型变量即可。