首页 > 解决方案 > 创建一个确定异常值影响的函数

问题描述

我的总体目标是展示异常值对数据集平均值的影响。我正在尝试创建一个使用异常值“k”的大小作为输入并输出平均值的函数。基本上,如果 x 的第一个值被 k 替换,该函数需要采用任何值“k”(即异常值)并返回向量 x 的平均值。例如,假设数据集是一群学生的身高。第一个值应该是 71.3 厘米,但孩子不小心放了 713 厘米。在这种情况下,我希望我的函数告诉我,如果存在值 713 (k = 713) 的异常值,我的向量的平均值是多少。到目前为止,我有以下内容,其中 x 是高度数据集的名称。

average_err <- function(k) {
x[1] <- k
mean(x[1])
}

如果存在异常值 713,则计算平均值

average_err(713)

但是,我的输出总是与我的输入相同。有人会帮我吗?

标签: rfunction

解决方案


我会建议:

average_err <- function(x,k) {
mean(c(x,k))
}

在上面,不是用异常值替换其中一个 x 值,而是向现有 x-vactor 添加异常值。正如@SteveM 建议的那样,您还应该让函数将 x 作为参数

x <- rnorm(25)
average_err(x, 100)
# [1] 3.627824

您还可以构建它来打印原始 x、x 和 k 的平均值和差值:

average_err <- function(x,k) {
  m1 <- mean(x)
  m2 <- mean(c(x,k))
  d <- m2-m1
  out <- data.frame(mean = c(m1, m2, d))
  rownames(out) = c("x", "x,k", "difference")
  out
}
average_err(x,100)
#                  mean
# x          -0.2270631
# x,k         3.6278239
# difference  3.8548870

推荐阅读