Função variância no R utilizando o pacote Leem
.
Perante o objetivo, ele será discutido nas subseções abaixo.
Dado um conjunto de dados, a variância é uma medida de dispersão que mostra o quão distante cada valor desse conjunto está do valor central (médio).”
Quanto menor é a variância, mais próximos os valores estão da média; mas quanto maior ela é, mais os valores estão distantes da média.
Considere que x1, x2, …, xn são os n elementos de uma amostra e que x é a média aritmética desses elementos. O cálculo da variância amostral é dado por:
\(VA= \frac {(x1 - x)^2 + (x2 - x)^2 + (x3 - x)^2 + ...+ (xn - x)} {n - 1}\)
\(σ^2=\frac {\sum (xi - x)^2}{n}\)
\(VP = \frac { (x1 - x)^2 + (x2 - x)^2 + (x3 - x)^2 + ...+ (xn - x)} {n}\)
\(s^2=\frac {\sum (xi - x)^2}{n-1}\)Essa fórmula representa a variância populacional e para encontrá-la:
Na criação da função devemos utilizar argumentos e alguns deles servem para protege - la. São elas:
details
: argumento utilizado para definir se há mais
dados nos resultados além da variância. Usaremos FALSE
quando queremos apenas a variância e TRUE
quando queremos
mostrar todos os dados da tabela tabfreq
;na.rm
: argumento utilizado para quando há resutados
inválidos. Usamos FALSE
indica que esses dados será evado
em consideração;rouding
: argumento núemrico que indicará a quantidade
de casas decimais;grouped
: argumento lógico utilizado em variáveis
contínuas.Dessa forma, a função variância utilizando o pacote leem
será:
variance (x, rounding = 2, na.rm = FALSE, details = FALSE, grouped = TRUE)
.
Abaixo será mostrado a função em detalhes:
<- function (x, rounding = 2, na.rm = FALSE, details = FALSE, grouped = TRUE) {
variance if (class(x) != "leem") #verificando se o objeto da função tem classse leem
stop("Use the 'new_leem()' function to create an object of class leem!",
call. = FALSE)
if (class(x) == "leem" & is.null(attr(x, "table"))) #determinando se a variável vem de tabfreq
<- tabfreq(x)
x
if (attr(x, "variable") == "discrete") { #veriifcando se a variável é discreta
<- is.numeric(x$estat$raw_data)
numchar if (numchar) {
<- round(var(x = x$estat$raw_data, na.rm = na.rm),
vari digits = rounding)
<- list(variance = vari, table = x$tabela,
resume rawdata = x$estat$raw_data)
if (details) { #analisando se há detalhes
return(resume)
}else {
return(vari)
}
}else {
stop("Measure not used for this data type!",
call. = FALSE, domain = "R-leem")
}
}if (attr(x, "variable") == "continuous") { #verificando se a variável é contínua
if (grouped == TRUE) { #verificando se grouped é lógico
<- sum((x$tabela$PM - mean(x))^2 * x$tabela$Fi)/(x$estat$Numero_amostra -
vari 1)
<- list(variance = vari, table = x$tabela, rawdata = x$estat$raw_data)
resume if (details) {
return(resume)
}else {
return(vari)
}else {
} <- round(var(x = x$estat$raw_data, na.rm = na.rm), #considera valores não disponíveis
vari digits = rounding)
<- list(variance = vari, table = x$tabela,
resume rawdata = x$estat$raw_data)
if (details) {
return(resume)
}else {
return(vari)
}
}
} }