R 有序因素与水平

R 有序因素与水平,r,R,有人能解释一下R中“ordered”参数的用法吗 R说: 有序的 确定级别是否应被视为有序(按给定顺序)的逻辑标志 因此,如果我有一个名为names的因子,并设置ordered=TRUE names<- factor(c("fred","bob","john"), ordered = TRUE) names 好像是我点的。那么为什么我需要“ordered”参数呢 我不知道“有序”和“级别”是如何使用的。让我们读一读 从?系数: 级别x可能采用的值的可选向量。这个 默认值是as.chara

有人能解释一下R中“ordered”参数的用法吗

R说:

有序的
确定级别是否应被视为有序(按给定顺序)的逻辑标志

因此,如果我有一个名为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