R:Winsorizing(健壮的HD)与NAs不兼容?
我想使用“robustHD”包中提供的winsorize函数,但从示例中可以看出,它似乎不适用于NAR:Winsorizing(健壮的HD)与NAs不兼容?,r,na,outliers,R,Na,Outliers,我想使用“robustHD”包中提供的winsorize函数,但从示例中可以看出,它似乎不适用于NA ## generate data set.seed(1234) # for reproducibility x <- rnorm(10) # standard normal x[1] <- x[1] * 10 # introduce outlier x[11]<- NA ## adding NA ## winsorize data x winsorize(
## generate data
set.seed(1234) # for reproducibility
x <- rnorm(10) # standard normal
x[1] <- x[1] * 10 # introduce outlier
x[11]<- NA ## adding NA
## winsorize data
x
winsorize(x)
##生成数据
设定种子(1234)#用于再现性
一些可能有用的想法:
Stack Overflow是一个编程板,在这里可以询问与编程相关的问题并给出答案。对于某些统计程序是否合适或是否被认为是“不好”的问题,您更有可能在交叉验证中找到知识渊博的人李>
统计方法和在特定软件环境中实现统计方法通常是相当独立的。也就是说,如果包的开发人员没有将某些特性(例如NA
handling)包含到包中,那么这对方法本身并没有多大意义。话虽如此,它当然可以。确定省略包特性是否是故意的唯一方法是询问包的开发人员。如果问题更倾向于统计和存在缺失值时方法的有效性,则交叉验证可能更有帮助李>
我不知道你为什么找不到关于这个话题的任何信息。我可以自信地说,这是我第一次听到“winsorized”这个词。事实上,我必须查找它,我可以肯定地说,我从未遇到过这种方法,我个人也不会使用它李>
从计算的角度来看,解决问题的一个简单方法是在开始使用函数之前忽略所有不完整的情况。它还可以直观地理解,缺少值的情况无法轻松地进行排序。首先,无论如何都必须在完整的情况下计算平均值和标准偏差,然后不清楚将哪个值分配给缺失值的情况,因为它们可能不一定是异常值,即使它们可能是
如果您不能选择省略不完整的案例,您可能需要寻找插补方法(在CV上)。如果您只有一个要winsorize的向量,则可以通过为代码中的中值和mad
函数设置na.rm=TRUE
来轻松修改定义的winsor2
函数。它提供了与winsorize{robustHD}相同的功能,但有一个区别:winsorize
调用robstandarding
,其中包括对非常小的值进行一些调整。我不明白它在做什么,所以,如果你放弃它,请注意清空
如果要对矩阵的各个列进行winsorize(与使用公差椭圆的多元winsorize相反,公差椭圆是winsorize
中的另一个选项),则应能够从winsorize.default
和standardize
中提取必要的代码。它们与winsor2做相同的事情,但是是矩阵形式的。同样,您需要根据需要将自己的na.rm=TRUE
设置添加到函数中。是的,我意识到这可能是错误的论坛。我正在尝试删除所有NA,然后使用winsorize函数。但我通常都在努力执行一项任务(即拆分数据帧-->执行所需任务(可能在子集上),然后按原来的顺序将所有内容重新组合在一起。我的大多数代码问题都在于“重新组合”,我想这可能是对编程语言不熟悉的人最常见的问题或者甚至是整个领域的新手。在你的情况下,你是否尝试过完成。案例
?否则,对于所谓的拆分应用组合
-例程,Hadley Wickham的包倾向于(以我的拙见)非常方便。例如,尝试plyr
。其他软件包,如dplyr
或data.table
稍快一些,但语法不太R-ish,因此需要更多时间来学习如何使用它们。再次感谢您的帮助。我正在尝试使用ddply函数的plyr,因为它看起来很直观,但我很难理解h语法。