Dummy Dataset — Logaritmico

look darling it’s johnny ringo

Resumo

Muitas vezes precisamos gerar dados similares sem expor original, para isso é interessante gerar dados análogos — Dummy Datset

Abaixo trechos de código em R demonstrando como gerar uma massa de dados com base no dataset original.

Dataset

O dataset é utilizado é o Communities and Crime Unnormalized, agrega dados socio-econômicos relacionados a dados criminais de 1990 nos Estados Unidos.

dat <- read.table('http://archive.ics.uci.edu/ml/machine-learning-databases/00211/CommViolPredUnnormalizedData.txt', sep=',', header=F)
dat[dat == "?"] <- NA

Conversão para numérico

rmvNonNum <- function(x){
x <- gsub('[^0-9\\.]', '', as.character(x))
x <- as.numeric(x)
x
}
cols <- c('V140')
dat[cols] <- lapply(dat[cols], rmvNonNum)

Número de furtos

#furtos para o estado NJ
larcenies <- dat[dat$V2 %in% c('NJ'), ]$V140

Densidade

fill <- '#4271AE'
ggplot(as.data.frame(larcenies), aes(x=larcenies)) +
theme_minimal() +
scale_y_continuous(name = "Densidade") +
scale_x_continuous(name = "Furtos",limits = c(0,max(larcenies))) +
ggtitle("Densidade Datset Real") +
geom_density(position="identity",color=line, fill=fill,alpha=0.6, size = 0.7) +
theme(axis.line = element_line(size=0, colour = "white"),
panel.grid.major = element_blank())
Densidade para furtos em NJ

Média e Desvio Padrão

O Dummy dataset será gerado a partir da média e do desvio padrão do dataset original

Cálculo por US State a partir do dataset original

df <- dat %>%
group_by(V2) %>%
summarize(
larcenies.mn = mean(V140, na.rm = TRUE),
larcenies.sd = sd(V140, na.rm = TRUE),
larcenies.len = sum(!is.na(V140), na.rm = TRUE))
df <- as.data.frame(df)

Específico do estado de NJ

m <- df[df$V2 == 'NJ',]$larcenies.mn
s <- df[df$V2 == 'NJ',]$larcenies.sd
df.len <- df[df$V2 == 'NJ',]$larcenies.len

Distribuição Logarítmica

mlog <- log(m^2 / sqrt(s^2 + m^2))
slog <- sqrt(log(1 + (s^2 / m^2)))

Geração dos Dados

larceniesNorm <- rlnorm(df.len,mlog,slog)
larceniesNorm <- round(larceniesNorm,2)

Dummy Data — Distribuição Log-Normal

larceniesNorm <- rlnorm(df.len,mlog,slog)
larceniesNorm <- round(larceniesNorm,2)
fill <- '#4271AE'
ggplot(as.data.frame(larceniesNorm), aes(x=larceniesNorm)) +
theme_minimal() +
scale_y_continuous(name = "Densidade") +
scale_x_continuous(name = "Furtos",limits = c(0,max(larcenies))) +
ggtitle("Densidade Datset Real") +
geom_density(position="identity",color=line, fill=fill,alpha=0.6, size = 0.7) +
theme(axis.line = element_line(size=0, colour = "white"),
panel.grid.major = element_blank())
Densidade para furtos em NJ pela variavel larceniesNorm

Conclusão

Para um pipeline de dataset análagos tem-se um “passport” para construção de algoritmos sem expor o dataset original.

Links

http://archive.ics.uci.edu/ml/datasets/communities+and+crime+unnormalized

https://stats.stackexchange.com/questions/191492/how-does-saddlepoint-approximation-work