<jupyter_start><jupyter_text>$$    f(p) = -\log_{10}(p)$$<jupyter_code># Pressuposto de linearidade

# Valor R de regressao linear simples
# a, b = colunas de um dataframe contendo os dados
funcLmR <- function(a, b)
{
    options(warn=-1) #desabilita avisos
    a = unlist(a)
    b = unlist(b)
    fit <- summary(lm(a ~ b))$r.squared
    fit = as.numeric(format(fit, digits=1, nsmall=2))
    options(warn=0) #re-abilita avisos
    fit
}

# Valor p de regressao linear simples
# a, b = colunas de um dataframe contendo os dados
funcLmPv <- function(a, b)
{
    options(warn=-1) #desabilita avisos
    a = unlist(a)
    b = unlist(b)
    fit <- summary(lm(a ~ b))$coefficients[2,4]
    options(warn=0) #habilita avisos
    ret <- as.numeric(format(-log(fit, 10), digits=1, nsmall=2))
    if(fit == 0)
        ret = sprintf("\u221E")
    ret
}  

# base = dataframe convertido do csv
geraHeatmapLinearidade <- function(base)
{
    df <- dfArrayCols(base)
    m = crossDataFrame(short_names, short_names, df, df, funcLmR, funcLmPv)
    heatMap(m,  "Valor R") 
}

geraHeatmapLinearidade(base)

base_2 = limpaOutlierSpecifico(base)
geraHeatmapLinearidade(base_2)
#plot(base[["Unidades_Vendidas"]], base[["Quantidade_de_Avaliações"]])
# Pressuposto de heteroscedasticidade.

# Valor BP do teste Breusch-Pagan sobre uma regressao linear simples
# a, b = colunas de um dataframe contendo os dados
funcLmBpBP <- function(a, b)
{
    options(warn=-1) #desabilita avisos
    a = unlist(a)
    b = unlist(b)
    fit <- bptest(lm(a ~ b))$statistic
    fit = as.numeric(format(fit, digits=1, nsmall=2))
    options(warn=0) #re-abilita avisos
    fit
}

# Valor p do teste Breusch-Pagan sobre uma regressao linear simples
# a, b = colunas de um dataframe contendo os dados
funcLmBpPv <- function(a, b)
{
    options(warn=-1) #desabilita avisos
    a = unlist(a)
    b = unlist(b)
    fit <- bptest(lm(a ~ b))$p.value
    options(warn=0) #habilita avisos
    ret <- as.numeric(format(-log(fit, 10), digits=1, nsmall=2))
    if(fit == 0)
        ret = sprintf("\u221E")
    ret
}  

geraHeatmapHeterosc <- function(base)
{
    df <- dfArrayCols(base)
    m = crossDataFrame(short_names, short_names, df, df, funcLmBpBP, funcLmBpPv)
    heatMap(m,  "Valor BP")  
}

#geraHeatmapHeterosc(base)
#geraScatterPlot(base, "Unidades_Vendidas", "Quantidade_de_Avaliações", "Gráfico de dispersão - Inspeção visual de heteroscedasticidade", "Unidades Vendidas", "Quantidade de Avaliações")
#geraScatterPlot(base, "Unidades_Vendidas", "Preço_de_Varejo", "Gráfico de dispersão - Inspeção visual de heteroscedasticidade", "Unidades Vendidas", "Preço de Varejo")

base_2 = limpaOutlierSpecifico(base)
geraHeatmapHeterosc(base_2)
geraScatterPlot(base_2, "Unidades_Vendidas", "Quantidade_de_Avaliações", "Gráfico de dispersão - Inspeção visual de heteroscedasticidade", "Unidades Vendidas", "Quantidade de Avaliações")
geraScatterPlot(base_2, "Unidades_Vendidas", "Preço_de_Varejo", "Gráfico de dispersão - Inspeção visual de heteroscedasticidade", "Unidades Vendidas", "Preço de Varejo")
# Pressuposto de normalidade

# Valor W do teste de shapiro-wilk,
# a = coluna de um dataframe contendo os dados
funcShapW <- function(a)
{
    a = unlist(a)
    w <- shapiro.test(a)$statistic
    w = as.numeric(format(w, digits=1, nsmall=2))
    w
}

# Valor p do teste de shapiro-wilk,
# a = coluna de um dataframe contendo os dados
funcShapPv <- function(a)
{
    a = unlist(a)
    p <- shapiro.test(a)$p.value
    ret <- as.numeric(format(-log(p, 10), digits=1, nsmall=2))
    if(p == 0)
        ret = 99 #sprintf("\u221E")
    ret
}

# Isso é uma doença, uma praga, nunca usar isso GG
funcKolmD <- function(a)
{
    a = unlist(a)
    options(warn=-1) #desabilita avisos
    d <- ks.test(a, "pnorm")$statistic
    options(warn=-0) #habilita avisos
    # isso n funciona n sei por que motivos, vsf
    d <- as.numeric(d, digits=1, nsmall=2)
    d
}

# Maior gambiarra da historia da programacao parte 2, eu culpo o proprio R
formatNum <- function(n)
{
    as.double(as.integer(((as.numeric(n, digits=1, nsmall=2)*10000000))/100000))/100
}

funcKolmPv <- function(a)
{
    a = unlist(a)
    options(warn=-1) #desabilita avisos
    p <- ks.test(a, "pnorm")$p.value
    options(warn=-0) #habilita avisos
    ret <- as.numeric(format(-log(p, 10), digits=1, nsmall=2))
    if(p == 0)
        ret = 99 #sprintf("\u221E")
    ret
}

geraBarplotNormalidadeShap <- function(base, col_names=0)
{   
    df <- dfArrayCols(base)
    m = linearDataFrame(col_names, df, funcShapPv, funcShapW)
    pvaluePlot(m, "Estatística W Shapiro-Wilk", "Variáveis", "-Log(p-value)")
}

geraBarplotNormalidadeKolm <- function(base, col_names=0)
{ 
    df <- dfArrayCols(base)
    m = linearDataFrame(col_names, df, funcKolmPv, funcKolmD)
    # Maior gambiarra da historia da programacao parte 1, eu culpo o proprio R
    m$z = unlist(lapply(m$z, formatNum))
    pvaluePlot(m, "Estatística D Kolmogorov-Smirnov", "Variáveis", "-Log(p-value)")
}

geraBarplotNormalidadeShap(base, short_names)
geraBarplotNormalidadeKolm(base, short_names)

base_2 = limpaOutlierSpecifico(base)
geraBarplotNormalidadeShap(base_2, short_names)
geraBarplotNormalidadeKolm(base_2, short_names)
##### Exemplos #####

# Matriz qualquer
func <- function(a, b)
{
   a - b #+ max(a,b) + min(a,b) + runif(1, min(a,b) , max(a,b))
}
m = crossDataFrame(1:ncol(base), 1:ncol(base), 1:ncol(base), 1:ncol(base), func, voidFunc)
heatMap(m) 
    
# Linearidade
df <- dfArrayCols(base)
m = crossDataFrame(short_names, short_names, df, df, funcLmR, funcLmPv)
#heatMap(m,  "Valor R")

# Normalidade
df <- dfArrayCols(base)
m = linearDataFrame(1:ncol(base), df, funcShapPv, funcShapW)
#pvaluePlot(m, "Estatística W Shapiro-Wilk", "Variáveis", "-Log(p-value)")

# Exemplo de barras p-value
base_2 = data.frame(a=rnorm(30, sd=1, mean=1), 
                    b=rnorm(30, sd=1, mean=1), 
                    c=rnorm(30, sd=1, mean=1),
                    d=rnorm(30, sd=1, mean=1),
                    e=rnorm(30, sd=1, mean=1), 
                    f=rnorm(30, sd=1, mean=1), 
                    g=rnorm(30, sd=1, mean=1),
                    h=rnorm(30, sd=1, mean=1))

m = linearDataFrame(1:ncol(base_2), base_2, funcShapPv, funcShapW)
pvaluePlot(m, "Estatística W Shapiro-Wilk", "Variáveis", "-Log(p-value)")

base_2 = data.frame(a=rnorm(5000, sd=1, mean=1), 
                    b=rnorm(5000, sd=1, mean=1), 
                    c=rnorm(5000, sd=1, mean=1),
                    d=rnorm(5000, sd=1, mean=1),
                    e=rnorm(5000, sd=1, mean=1), 
                    f=rnorm(5000, sd=1, mean=1), 
                    g=rnorm(5000, sd=1, mean=1),
                    h=rnorm(5000, sd=1, mean=1))

m = linearDataFrame(1:ncol(base_2), base_2, funcKolmPv, funcKolmD)
m$z = unlist(lapply(m$z, formatNum))
pvaluePlot(m, "Estatística D Kolmogorov-Smirnov", "Variáveis", "-Log(p-value)")

##### Debug #####
# Valor limite da mlog no qual mlog > rejeita a hipotese
-log(0.05, 10)
# Gerador de nomes de variaveis, gg Regis, gg
replicate(1, paste(sample(LETTERS, 8, replace=TRUE), collapse=""))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14462403373155305, 'fraction_numerical': 0.027125790583274773, 'mean_word_length': 3.675427069645204, 'pattern_counts': {'":': 0, '<': 38, '<?xml version=': 0, '>': 6, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '372893', 'license': 'MIT', 'n_tokens_mistral': 3045, 'n_tokens_neox': 2844, 'n_words': 623, 'path': 'Anova/Pressupostos.ipynb', 'repo_name': 'Lucas-MDC/MetodosQuantitativos', 'size': '7115'}