R 有序因素与水平
有人能解释一下R中“ordered”参数的用法吗 R说: 有序的R 有序因素与水平,r,R,有人能解释一下R中“ordered”参数的用法吗 R说: 有序的 确定级别是否应被视为有序(按给定顺序)的逻辑标志 因此,如果我有一个名为names的因子,并设置ordered=TRUE names<- factor(c("fred","bob","john"), ordered = TRUE) names 好像是我点的。那么为什么我需要“ordered”参数呢 我不知道“有序”和“级别”是如何使用的。让我们读一读 从?系数: 级别x可能采用的值的可选向量。这个 默认值是as.chara
确定级别是否应被视为有序(按给定顺序)的逻辑标志 因此,如果我有一个名为names的因子,并设置ordered=TRUE
names<- factor(c("fred","bob","john"), ordered = TRUE)
names
好像是我点的。那么为什么我需要“ordered”参数呢
我不知道“有序”和“级别”是如何使用的。让我们读一读
从?系数:
级别x可能采用的值的可选向量。这个
默认值是as.character(x)采用的唯一值集,已排序
变成x的递增顺序。请注意,此集合可以指定为
小于排序(唯一(x))
因此,如果未指定,它将为您排序唯一值,并将其视为顺序
正如本所提到的,有序因素和无序因素在实践中如何不同的问题要复杂得多,并且通常依赖于一个假设,即你知道合理数量的统计数据。文件仅说明:
有序因子与因子的区别仅在于它们的类,而在于它们的方法
模型拟合函数对这两类问题处理得相当好
不一样
同样,正如Ben提到的,许多模型拟合程序将以非常不同的方式处理有序和无序因素,因为它们具有非常不同的统计意义和解释。统计差异的详细总结可能远远超出了StackOverflow答案的范围。我将用更直观的因素替换名称向量,顺序更合理:
heights <- c("low","medium","high")
heights1 <- factor(heights, ordered = TRUE)
heights1
# [1] low medium high
# Levels: high < low < medium
heights2 <- factor(heights) # ordered = FALSE by default
heights2
# [1] low medium high
# Levels: high low medium
由于无序因素,我们无法汇总:
# aggregate(height ~ id,df1,max)
# Error in Summary.factor(c(2L, 2L), na.rm = FALSE) :
# ‘max’ not meaningful for factors
有了有序的因素,我们可以
# aggregate(height ~ id,df1,max)
# id height
# 1 1 high
# 2 2 medium
# 3 3 medium
# 4 4 low
# 5 5 medium
通过阅读文档,特别是关于levels
参数的部分,可以简单地回答问题的第一部分。这一点并不明显,但R中因子和无序因子之间唯一的主要区别是线性(广义线性等)模型中使用的默认对比度——常规模型的默认对比度(无序)因子是处理(?控制处理
),有序因子的默认值是多项式(?控制多边形
)--请参见选项(“对比”)
。另一个区别是,您可以使用不等式运算符(
等)来比较有序因子的级别。
heights <- c("low","medium","high")
heights1 <- factor(heights, ordered = TRUE)
heights1
# [1] low medium high
# Levels: high < low < medium
heights2 <- factor(heights) # ordered = FALSE by default
heights2
# [1] low medium high
# Levels: high low medium
heights1<- factor(heights, levels = heights, ordered = TRUE)
heights1
# [1] low medium high
# Levels: low < medium < high
heights2<- factor(heights, levels = heights)
heights2
# [1] low medium high
# Levels: low medium high
# > df1
# id height
# 1 1 low
# 2 1 high
# 3 2 medium
# 4 2 low
# 5 3 medium
# 6 3 medium
# 7 4 low
# 8 4 low
# 9 5 medium
# 10 5 medium
# aggregate(height ~ id,df1,max)
# Error in Summary.factor(c(2L, 2L), na.rm = FALSE) :
# ‘max’ not meaningful for factors
# aggregate(height ~ id,df1,max)
# id height
# 1 1 high
# 2 2 medium
# 3 3 medium
# 4 4 low
# 5 5 medium