有人可以解释R中"有序"参数的用途是什么?
R说:
有序
逻辑标志,用于确定是否应将级别视为有序(按给定顺序).
所以如果我有一个名为names的因子并且设置ordered = TRUE
names<- factor(c("fred","bob","john"), ordered = TRUE)
names
Run Code Online (Sandbox Code Playgroud)
为什么打印出来:
[1] fred bob john
Levels: bob < fred < john
Run Code Online (Sandbox Code Playgroud)
这似乎没有使用我给它的顺序.我开始用fred从Bob开始?
此外,有序参数的使用方式与使用"级别"参数的方式不同,这些参数将对因子进行排序:
names<- factor(c("fred","bob","john"), levels= c("john","fred","bob"))
names
Run Code Online (Sandbox Code Playgroud)
这回来了
[1] fred bob john
Levels: john fred bob
Run Code Online (Sandbox Code Playgroud)
这似乎遵循我的订购.那为什么我需要"有序"参数?
我对如何使用"有序"和"等级"感到困惑.
我认为这可以使用更完善的答案。
我将用更直观的因素替换您的名称向量,从这些因素来看,顺序更有意义:
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
Run Code Online (Sandbox Code Playgroud)
级别的顺序可能不是您期望的顺序,但是当您未设置明确的级别时,级别将按字母顺序排序。
要设置明确的顺序,我们可以执行以下操作:
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
Run Code Online (Sandbox Code Playgroud)
有时您可能想使用factor(x, levels = unique(x))无法重复的关卡,在这种情况下,关卡将按照其初次出现进行排序。
所以现在它在两侧都进行了排序,但是等等,一个应该是“无序的”。由于可能对无序因素进行排序,因此该词汇表具有误导性,例如,如果您要使用来调整布局,该词汇表甚至很有用ggplot2。
但是,如@joran和@thomas所述,统计模型将根据分类变量是否有序来不同地考虑分类变量。
但是,导致我在这里使用的有序因素是max和min函数的使用,特别是在聚合函数内部。
请参阅此问题以及在有必要将因子定义为有序的情况下接受的答案:与max和factor汇总
我们有这个:
# > 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
Run Code Online (Sandbox Code Playgroud)
由于无序因素,我们无法汇总:
# aggregate(height ~ id,df1,max)
# Error in Summary.factor(c(2L, 2L), na.rm = FALSE) :
# ‘max’ not meaningful for factors
Run Code Online (Sandbox Code Playgroud)
有了有序的因素,我们可以!
# aggregate(height ~ id,df1,max)
# id height
# 1 1 high
# 2 2 medium
# 3 3 medium
# 4 4 low
# 5 5 medium
Run Code Online (Sandbox Code Playgroud)
让我们来阅读。
来自?factor:
水平 值的一个可选的向量X可能采取。默认值是as.character(x)所采用的唯一值集,并按x的升序排序。请注意,可以将此集合指定为小于sort(unique(x))。
因此,如果未指定,它将为您排序唯一值并将其视为顺序。
正如Ben所提到的,有序和无序因素在实践中如何不同的问题要复杂得多,并且通常依赖于您知道合理数量的统计量的假设。该文档只说:
有序因子仅在其类中与因子不同,但是方法和模型拟合函数对这两个类的处理却大不相同。
再次,如Ben所提到的,许多模型拟合例程将对有序和无序因子的处理方式非常不同,因为它们具有非常不同的统计含义和解释。统计差异的详细摘要可能超出了StackOverflow答案的范围。
| 归档时间: |
|
| 查看次数: |
4003 次 |
| 最近记录: |