Funções no R

Uma das coisas mais legais no R é você conseguir criar suas próprias funções.

É bem simples, veja a estrutura como funciona:

NomeDaFuncao = function(Argumento1,Argumento2,...) {
<comandos>
return(objeto)
}

Veja um exemplo de uma função que o usuário utiliza como input um número e a saída  dela é a soma desse número com 1:

SomaUm = function(x) {
y = x+1
return(y)
}

Bastaria o usuário declarar essa função, executá-la no R e em seguida ele poderia utilizá-la para obter a soma de um número qualquer com 1. Vejamos como ficaria essa execução:

SomaUm(10)
[1] 11
SomaUm(20)
[1] 21

Simples assim! Com isso você não precisará escrever os mesmos comandos repetidamente. E mais do que isso, você poderá usar essa função em diferentes códigos utilizando a função source(). Para utilizar a função SomaUm em um outro código qualquer, basta você chamar o código que contém essa função digitando o endereço e nome da função entre aspas.

No meu exemplo, eu salvei a função SomaUm com o nome Funcoes.r em uma pasta no meu desktop. Feito isso, abri um novo código e digitei o seguinte comando:

source("C:/Users/Yukio/Desktop/R/Codes/Funcoes.r")

Pronto! A partir de agora eu já posso utilizar a função SomaUm() nesse novo código assim como utilizava no meu exemplo. É assim que surgem os pacotes do R.

Pense agora na quantidade de tempo que você vai economizar utilizando funções.

Qualquer dúvida, comente abaixo.

Primeiros passos no R Studio

Para facilitar a vida dos interessados em programação, estatística e/ou econometria, resolvi fazer esse post um pouco mais completo para quem está iniciando no R. Sendo mais específico, no R Studio.

O QUE É O R?

Wikipedia: R é uma linguagem e também um ambiente de desenvolvimento integrado para cálculos estatísticos e gráficos.

Em outras palavras, R é uma linguagem de programação gratuita que cientistas de dados e estatísticos utilizam para manipular dados de diversas formas.

O R Studio é uma interface para o R, com diversas utilidades diferentes que a tornam uma ferramenta mais simples em comparação ao R. O R Studio possui diversas ferramentas como seus painéis que o tornam mais prático e, por esse motivo o utilizaremos aqui.

INSTALAÇÃO

  • Na tela inicial você já vai ver DOWNLOAD RSTUDIO, clique no link
  • Em seguida, vá em DOWNLOAD RSTUDIO DESKTOP
  • Depois de baixado é simples, é só clicar no instalador e ir clicando em próximo e/ou avançar, como a maioria dos programas, não tem erro.
  • Na tela inicial você vai ver que o RStudio tem 4 janelas, diferente do R.

LAYOUT

Com relação às 4 janelas do R Studio:

  • No topo a esquerda é onde você vai escrever seus códigos. Você pode ter várias janelas de códigos, para abrir mais uma basta ir no sinal ‘+’ logo abaixo de FILE. Depois que você escrever seu código, você deve selecionar a linha que gostaria de executar e clicar em RUN.
  • Assim que você executar seu código você vai ver alterações no CONSOLE, a tela abaixo à esquerda. Você também pode escrever o código nessa tela, porém, é muito mais complicado manusear e fazer alterações. Seu código ficará mais desorganizado.
  • Acima a direita você tem duas abas: Environment e History. Environment, eu recomendo que vocês não se preocupem muito. Basicamente, você vai ter seus objetos nessa aba, seus dados e variáveis criadas. Em History você terá o histórico de seu script, ou seja, todo o código que você for executando vai aparecer lá. Isso é útil, pois caso você feche o R Studio e escolha salvar seu workplace, ao abri-lo você não perderá o histórico. Você terá seu script lá, facilitando o entendimento do que você estava executando;
  • Abaixo a direita uma outra janela que vai facilitar muito sua vida, nela há 5 abas: FILES, PLOTS, PACKAGES, HELP e VIEWER.

Em Files você terá o endereço do seu working directory. Basta executar o código getwd() que você saberá que endereço é aquele na aba Files. No R Studio você pode mover, renomear e deletar arquivos no seu computador. Esse diretório é onde você salva seus scripts e output no R.

Plots é onde você irá visualizar seus gráficos.

Packages possui uma lista de pacotes que você pode selecionar e instalar na hora.

Help é a aba de ajuda do R Studio. Se você é daqueles céticos do Help nos softwares, aqui no R Studio você vai mudar de opinião, realmente ajuda muito.

PACOTES

Os pacotes do R nada mais são do que conjunto de funções, dados e códigos compilados. Os pacotes fornecem funções que algum usuário já criou e você pode utilizá-las. Ou seja, para cada tema que você queira trabalhar, você pode buscar um pacote com funções que realizem todas as manipulações que você deseja.

Por exemplo, eu gostaria de trabalhar com séries temporais. Ao buscar “Time Series” dentre os pacotes existentes, eu vou encontrar alguns pacotes como AnalyzeTS, arfima, astsa, etc.

Você pode procurar os pacotes existentes através do próprio google, ou então ir direto no CRAN, onde os pacotes são mais confiáveis:

https://cran.r-project.org/web/packages/available_packages_by_name.html

Há mais de 100 pacotes com “Time Series” na descrição, como saber qual utilizar?

Ao clicar no nome de um dos pacotes você abrirá a seguinte página:

A página acima é idêntica para todos os pacotes. Todos os pacotes R terão o Reference Manual, com essa aparência:

Nesse manual você verá todas as funções que o pacote possui e uma breve explicação de cada uma. Com base nisso, você deve escolher qual pacote é mais apropriado para você. Ou então, o que eu costumo fazer sempre: GOOGLE!

PRIMEIRAS MANIPULAÇÕES

Conforme já disse acima, na primeira janela, no topo a esquerda, escreveremos nosso código. É lá então que vamos começar a brincar!

A partir daqui, vou tentar ser mais direto. O código que vou postar é exatamente a saída do Console, sendo que em azul teremos o código que escrevi e em vermelho o output do R. Você notará o símbolo “>” antes de cada linha de código escrita e o [1] antes do output do R.

Primeiramente, o R, assim como outras tantas linguagens, serve como uma calculadora. Afinal, muitas vezes você precisará manipular seus dados, fazer algumas alterações nos valores de tabelas, e para isso é importante saber os operadores aritméticos do R, que são: +, -, * e / para adição, subtração, multiplicação e divisão respectivamente. Veja abaixo exemplos com operações feitas no R:

> 2+2
[1] 4
> 10-2
[1] 8
> 2*5
[1] 10
> 10/2
[1] 5

Ao escrever o código na primeira janela, você precisa separar cada tarefa que você quer que o R execute pulando linhas ou então utilizando “;”. Eu prefiro pular linhas.

Além dos operadores, o R possui algumas funções básicas como o log, exponencial e raiz quadrada:

> log(100)
[1] 4.60517
> exp(10)
[1] 22026.47
> sqrt(10000)
[1] 100

O R também possui operadores lógicos:

> 10<2
[1] FALSE
> 10>=10
[1] TRUE

Resumo dos operadores:

CRIANDO VARIÁVEIS

Para criar novas variáveis, atribuindo algum valor que você deseja, basta utilizar o símbolo “=” ou “<-“:

> x <- 100
> y = 10
> x*y
[1] 1000

No caso de se atribuir diversos valores, ou seja, criar um vetor, você utiliza a função c(). Veja os exemplos abaixo com o comentário de cada comando utilizando ‘#’:

> #x recebe os números de 1 a 4
> x=c(1,2,3,4)
> x
[1] 1 2 3 4

Podemos gerar nossas próprias sequências no R, seja uma sequência simples, com intervalo entre os elementos ou com o comprimento que gostaríamos:

> #y recebe a sequência de 1 a 10
> y=c(1:10)
> y
[1]  1  2  3  4  5  6  7  8  9 10
> #z recebe a sequência de 2 a 11
> z=c(2:11)
> z
[1]  2  3  4  5  6  7  8  9 10 11
> #s recebe a sequência de 1 a 10 com diferença de duas unidades
> s=seq(1,10, by=2)
> s
[1] 1 3 5 7 9
> #r recebe a sequência com 10 números, começando de -10 com diferença de 0.2 unidades
> r=seq(length=10,from=-5,by=.2)
> r
[1] -5.0 -4.8 -4.6 -4.4 -4.2 -4.0 -3.8 -3.6 -3.4 -3.2

Podemos realizar qualquer tipo de operação com os vetores. Se o multiplicarmos um número qualquer pelo vetor, ele irá multiplicar cada elemento do vetor por esse número. A mesma lógica vale para divisão, soma e subtração:

> 2*w
[1]  6 10 14 18 22 26 30 34 38 42
> w+1
[1]  4  6  8 10 12 14 16 18 20 22

Ao realizarmos uma soma (ou subtração) entre vetores, os elementos na mesma posição realizam a operação:

> y+z
[1]  3  5  7  9 11 13 15 17 19 21

Visualizando seus gráficos

Em outros sites, você veria muito mais explicações antes de entrar neste tópico. Faz sentido, afinal, ainda há muito o que se aprender no R. Eu sequer mencionei caracteres, lidar com textos, missing, etc. Entretanto, queria fornecer uma introdução rápida para o leitor e já deixar o básico para que ele possa dar sequência sozinho no aprendizado. Como postarei constantemente, o leitor aqui poderá também consultar os posts futuros. Aqui, no entanto, quero ser breve. Vamos aos gráficos!

HISTOGRAMA E GRÁFICO DE DISPERSÃO

Já falei sobre histograma nesse post, e não tem segredo no R, basta utilizar a função hist(). Apenas para deixar mais interessante, vou mostrar como importar um arquivo em .txt utilizando a função read.table().

O arquivo .txt aqui utilizado é o turma_1 já mencionado acima, dessa vez eu o salvei no meu desktop:

read.table("C:/Users/Yukio/Desktop/turma_1.txt",header=TRUE)

Veja que se você simplismente digitar a linha de código acima, o seu software vai demonstrar toda a tabela. Se ela for muito extensa, é uma péssima ideia. Para isso, eu acho bem mais sensato nós atribuírmos a tabela a um elemento:

turma_1 = read.table("C:/Users/Yukio/Desktop/turma_1.txt",header=TRUE)

Se você quiser visualizar sua tabela no R Studio, uma boa idéia é utilizar a função View():

View(turma_1)

Veja que na janela inicial acima a esquerda você terá uma nova aba com sua tabela, isso é bem prático.

Vamos finalmente ao histograma das notas dos alunos:

hist(turma_1$notas)

E o gráfico de dispersão:

plot(turma_1$notas)

Quer um título no gráfico? Incluir algo diferente no eixo x? Alterar as legendas?
Simples, para legenda utilize xlab e ylab, para o título principal utilize o main, e para escolher os eixos, basta pensar que o R está lendo a função da seguinte forma: plot(eixo x, eixo y). Sendo assim:

plot(turma_1$faltas,turma_1$notas,main="Gráfico de Dispersão",xlab="Faltas",ylab="Notas")


Por fim, e se quisermos comprovar a existência ou não de uma correlação?

> cor(turma_1$faltas,turma_1$notas)
[1] -0.9793377

Pois bem, assim termina os primeiros passos no R Studio. Acredito que passar por tudo isso leve menos de uma hora e acrescenta uma baita bagagem. Vou continuar postando códigos de R, gráficos mais coloridos, novas funções, pacotes, etc. Como eu disse, esse daqui é só para ser o começo da sua jornada no R. Qualquer dúvida, é só comentar aí embaixo.

Erros? Por favor, me avise também!

Criando variáveis dummy no SAS

Há algumas formas simples de criar uma variável dummy no SAS, vou demonstrar duas que eu utilizo constantemente.

Primeiramente, apenas para relembrar, uma variável dummy é um artifício criado para representar uma característica do indivíduo da amostra. Podemos criar uma variável dummy do sexo por exemplo, que receberá 1 se o indivíduo for mulher e 0 se for homem. Ou então criar uma dummy para reprovação, onde o aluno recebe 1 caso tenha sido reprovado e 0 caso tenha sido aprovado.

Isso serve para incluir informações não numéricas nas regressões, ou informações numéricas que não representam quantidades. Por exemplo, se eu tiver sala 1 e sala 2 de aula em uma regressão, qualquer operação aritmética com os números da sala não vai fazer sentido. Seria idêntico ter sala A e B.

No post Como calcular a diferença entre duas datas no SAS? criei a tabela turma_1. Vamos utilizá-la para criar duas novas variáveis, aprovacao_1 e aprovacao_2. Essas variáveis vão atribuir 1 ao aluno aprovado, no caso, a aprovação ocorre caso o aluno tenha nota maior ou igual a 6. Caso o aluno não tenha nota suficiente para aprovação, a dummy criada receberá 0:

data turma_1_1;
    set turma_1;
    aprovacao_1 = notas >= 6;
    if notas >= 6 then aprovacao_2 = 1;
    else aprovacao_2 = 0;
run;

Veja que com essa nova variável poderíamos fazer regressões para estudar o que afeta a reprovação de um aluno, ou até mesmo se a reprovação afeta algo.

Simples, não?

Qualquer dúvida, sugestão ou crítica é só comentar abaixo!

Criando classes / categorias no SAS

Já expliquei no post Percentil – Conceito e Código SAS o que é percentil e como obtê-lo no SAS. Agora, uma coisa que é interessante, e eu precisei usar recentemente, é criar classes no SAS. Há uma forma bem direta de fazer isso através do proc rank. Porém, já havia um código mais “roots” para fazer isso e acho legal compartilhar. É interessante ver alternativas ao que já está preparado (outros softwares podem não ter o comando).

Para demonstrar melhor como criar classes, eu aumentei minha base de dados contendo as alturas dos indivíduos de uma amostra. Para não confundir com a tabela AMOSTRA, eu criei uma nova tabela chamada POPULACAO, contendo 60 alturas. O que vamos fazer no exemplo é criar uma coluna adicional na tabela com as letras de A a J indicando a qual percentil a altura do indivíduo pertence. Isso pode ser útil para obter dummies para regressões e até mesmo para tomar estatística descritiva dos indivíduos, e desse jeito é mais fácil do que utilizando o IF.

Para obter as classes, há dois passos:

  • Primeiro você deve obter o valor de cada percentil, nesse exemplo, comecei do 10° percentil e utilizei intervalos de 10 em 10, mas você pode dividir como for melhor para sua análise:
proc univariate data= work.populacao;
    var altura; output OUT=work.altura 
       pctlpre=p_altura_ pctlpts= 10 to 100 by 10;
run;
  • Agora, vou utilizar o CASE WHEN, que é uma função para lidar com condições no SAS. Veja abaixo que a gente inicia o código com o proc sql seguido de ponto e vírgula como sempre, até aí nenhuma novidade. Em seguida ‘dizemos’ para o SAS criar uma tabela (create table) com o nome populacao_classes na nossa work. Como nós queremos gerar essa nossa nova base a partir da base populacao criada anteriormente, é preciso dizer ao SAS quais campos ele deve trazer da base original. O asterisco após o select indica que o SAS vai trazer todos os campos da base de origem, que no caso é a tabela populacao que está na work. Em seguida vem o case when, que dá o comando ao SAS para atribuir uma letra caso a altura do indivíduo esteja no percentil em questão:
proc sql;
    create table populacao_classes as select *,

      case
      when altura <= (select p_altura_10 from work.altura) then 'A'
      when altura <= (select p_altura_20 from work.altura) then 'B'
      when altura <= (select p_altura_30 from work.altura) then 'C'
      when altura <= (select p_altura_40 from work.altura) then 'D'
      when altura <= (select p_altura_50 from work.altura) then 'E'
      when altura <= (select p_altura_60 from work.altura) then 'F'
      when altura <= (select p_altura_70 from work.altura) then 'G'
      when altura <= (select p_altura_80 from work.altura) then 'H'
      when altura <= (select p_altura_90 from work.altura) then 'I'
      when altura <= (select p_altura_100 from work.altura) then 'J'
      else 'outros'
    end AS classe_altura

    from work.populacao;
proc print;
run;

Para os que ainda estão com dúvidas, segue uma imagem para facilitar o entendimento (veja que as bases na imagem abaixo vão até a linha 25, e não até a linha 60 que é a última linha):

Intervalo de Confiança: o que é e como estimar no SAS?

Intervalo de confiança nada mais é do que uma estimativa de um parâmetro de uma população.

Lembra de quando falamos de inferência estatística no post Estatística, Estatística Descritiva, Inferência Estatística?

Você tem uma amostra de uma população (um subgrupo) e a partir dela faz inferências a respeito da população. Os intervalos de confiança fazem isso para os parâmetros dessa população, eles inferem os valores reais e consideram um determinado grau de incerteza. Você vai conseguir, a partir de um parâmetro do seu subgrupo, estimar um parâmetro da população inteira.

Por exemplo, vamos supor que você tenha uma população de 100 milhões de pessoas e quer saber a altura média dessa população. Porém, para saber com certeza qual é a altura média da população inteira, você teria que medir todas as 100 milhões de pessoas, o que é praticamente impossível. Então, o que você faz?

Você pega uma amostra dessa população, de por exemplo 1.000 habitantes e calcula a altura delas. Você vai querer inferir a partir da altura média desses 1.000 habitantes, a altura média da sua população. Ou seja, você quer pegar essas 1.000 pessoas e com base nas informações delas, descobrir uma informação da população inteira de 100 milhões de pessoas.

Mas você sabe que a altura média das pessoas da amostra não vai ser exatamente a altura média da população, mas provavelmente algum valor próximo disso. Aí que entra o intervalo de confiança, ele é o intervalo no qual a altura da sua população estará contida, dado um grau de incerteza.

Se você chegar a conclusão que a altura da sua população está no intervalo de 1,70m a 1,75m com 95% de confiança, você quer dizer que se você coletar 100 amostras dessa população, 95 delas terão altura média no intervalo de 1,70m a 1,75m.

Simples, não?

E como calcular o intervalo de confiança no SAS?

Vejamos a amostra a seguir de uma população:

data amostra;
input altura;
cards;
1.70
1.68
1.80
1.72
1.55
1.66
1.78
1.90
2.00
1.57
2.70
1.78
1.59
1.54
1.53
1.70
;

proc print;
    var altura;
run;

Para calcular a média dessa população basta utilizar o proc summary com os parâmetros alpha, que será 1-nível de confiança, clm (confidence limits on the mean) e var seguido da variável em questão:

proc summary data=amostra print alpha=0.05 clm;
    var altura;
run;

Aqui temos um outro método que produz os mesmos resultados, porém com outros resultados que falaremos em futuros posts:

proc ttest data=amostra alpha=0.05; var altura; run;
Veja que o nosso exemplo o intervalo de confiança é relativamente amplo, ele é de 1,61 a 1,91. Isso parece bem intuitivo, afinal, temos poucas pessoas na amostra e um nível de confiança alto, seria como se nós estivéssemos querendo ter bastante certeza de que a média da população vai estar nesse intervalo. Parece razoável pensar que com poucas pessoas fica mais difícil ser preciso e como queremos ser bastante precisos (95%), só com um intervalo grande para “acertar” a média.

Acompanhando o processo no SAS utilizando o Sysecho

Algumas pessoas escrevem programas grandes, ou demorados, no SAS e colocam para rodar tudo que está dentro de uma vez só. Esses programas podem ter vários data step ou ‘procs’, e é sempre interessante saber em qual etapa exatamente o SAS está. Para isso nós temos o sysecho.

É bem simples, após escrever seu data step ou proc, você inclui o sysecho seguido por um texto (a sua escolha) entre aspas descrevendo o que está sendo executado. Veja o exemplo abaixo:

data base_1;
    sysecho "Cria a variavel coluna_nova";
    set base_de_dados;
    coluna_nova = coluna_1 + coluna_2;
run;

proc sql;
    sysecho "Une com a base 2";
    create table base_2 as
    select a.*,b.*
    from base_1 as a
    left join base_nova as b
    on a.coluna_1 = b.coluna_1;
run;

data base_3;
    sysecho "Cria variavel coluna_x";
    set base_2;
    if coluna_1 > 0 then coluna_x = 'positivo';
    else if coluna_1 = 0 then coluna_x = 'nulo';
    else if coluna_1 < 0 then coluna_x = 'negativ;
    else coluna_x = 'missing';
run;

Veja que fácil agora. Quando você apertar o F3 e deixar esse código rodando, você saberá exatamente em que trecho do programa o SAS está, basta olhar no canto inferior esquerdo que você verá o nome que está ao lado do sysecho do data ou proc em execução!

Como calcular a diferença entre duas datas no SAS?

Novamente vou falar de datas no SAS. É sempre mais difícil trabalhar com datas em qualquer linguagem de programação. Por isso sempre que eu lembro de algo a respeito disso eu trato de escrever aqui porque acho que pode ajudar alguém. Dessa vez vamos aprender como descobrir a distância entre duas datas de algumas formas diferentes.

Voltando ao nosso exemplo dos alunos, nós já tínhamos suas notas e número de faltas, agora vamos acrescentar a data de nascimento deles:

data turma_1;
 input notas faltas dt_nasc ddmmyy10.; 
 format dt_nasc date9.; 
 datalines;
 3.6 13 20/02/1999
 3.6 15 15/04/1999
 5 9 02/10/1999
 6.4 8 01/05/1999
 6.6 7 10/03/1999
 6.6 8 12/11/1998
 6.8 8 14/08/1999
 7.5 5 23/02/1999
 8 4 30/07/1999
 8.7 3 08/03/1999
 9 1 24/02/1999
 9.5 1 15/11/1999
 ;
 proc print;
 run;

Veja como calcular a diferença entre as datas, primeiro de uma forma bem intuitiva apenas com a subtração entre a data de hoje e a do nascimento. Em seguida com as funções datdif e yrdif.

/*Acrescentando as colunas com diferença entre as datas*/
data Turma_1_v1;
    set Turma_1;
    dif_Dias=today()-dt_nasc;
    dif_Dias_2=datdif(dt_nasc,today(),'act/act');
    dif_Dias_3=datdif(dt_nasc,today(),'30/360');
    idade=yrdif(dt_nasc,TODAY());
run;

Como vocês podem ver, foram criados 3 campos utilizando fórmulas diferentes:

  1. Dif_Dias = Diferença entre o dia de hoje e a data de nascimento em dias;
  2. Dif_Dias2 = Diferença entre o dia de hoje e a data de nascimento em dias, utilizando o parâmetro ‘act/act’ para que o SAS entenda que a gente quer que o cálculo considere os dias reais entre as duas datas, considerando o número de dias que cada mês tem de acordo com o calendário;
  3. Dif_Dias3 = Diferença entre o dia de hoje e a data de nascimento em dias, utilizando como padrão que cada mês tem 30 dias e cada ano 360 dias. Isso pode ser útil para pessoas da área de finanças que precisam calcular retorno de alguns títulos;
  4. Idade = Diferença entre o dia de hoje e a data de nascimento em anos. Como não especificamos nada no terceiro parâmetro, o SAS nos traz a diferença considerando o calendário. O mesmo método utilizado em dif_dias poderia ter sido utilizado aqui.

Agora, ficou bem ruim essa idade com várias casas decimais. Eu recomendo trocar aquela linha por esse código com a função round:

idade=round(yrdif(dt_nasc,today()));

Função INTCK

Essa é mais uma função do SAS para lidar com datas, veja só como é intuitiva:

data Turma_1_v2;
set Turma_1;
    dif_meses=intck('month',dt_nasc,today());
    dif_anos=intck('year',dt_nasc,today());
    dif_dias=intck('day',dt_nasc,today());
    dif_semestres=intck('semiyear',dt_nasc,today());
    dif_trimestres=intck('qtr',dt_nasc,today());
run;

Nota: Se você estiver comparando duas datas do mesmo ano, dif_anos retornará zero. O mesmo vale para os demais. Caso você se confunda e coloque a data mais recente antes da data mais antiga, você receberá valores negativos (o que é intuitivo mas vale lembrar).

Gostou do post? Por favor, não vá embora sem deixar uma curtida ou um comentário. Parece algo bobo, mas é um feedback bastante importante para este trabalho. Se encontrou algum erro ou tem alguma sugestão, dúvida, elogio ou crítica, pode escrever nos comentários ou me enviar uma mensagem diretamente em Sobre o Estatsite. E visite também a conta do Twitter @EstatSite.

Forte abraço e bons estudos!

Reforçando o uso do R-quadrado: por que o autor usou um R-quadrado baixo?

Já falei sobre o R-quadrado no post Regressão Linear Simples – Parte 3. Ainda assim, o r-quadrado é uma medida que pode ter algumas pegadinhas.

Você verá em muitos artigos científicos os autores buscando algum efeito causal, rodando uma regressão e tirando alguma conclusão mesmo que no output da regressão tenha saído um r-quadrado baixo. Pode isso Arnaldo?

De forma rápida, a regra é clara, pode sim!

De forma mais demorada: O r-quadrado é uma medida de dependência linear entre as variáveis, ele vai te ajudar a entender o quanto seu modelo vai explicar a variável dependente. Você deve interpretá-lo como sendo o percentual da variação da variável resposta que é explicada por um modelo linear.

Você foi lá, fez seu experimento, aleatorização certinha, fez os testes legais, a variável independente tem lá um p-valor legalzinho na regressão, de forma intuitiva faz sentido a causalidade dela, mas chegou em um r-quadrado baixo. E aí, deu ruim?

Não, o r-quadrado vai te ajudar a encontrar um bom modelo, um modelo mais robusto em comparação com um modelo mais simples. Mas ele não vai anular o efeito causal que você obteve, por isso você vai sim encontrar regressões em diversos papers renomados explicando alguma causalidade utilizando regressões com baixo r-quadrado.

Para os que falam inglês, leia também: http://blog.minitab.com/blog/adventures-in-statistics/how-high-should-r-squared-be-in-regression-analysis

Visualizando seus dados: Gráficos de Dispersão

Outra forma de fazer uma primeira análise dos seus dados é plotar um gráfico de dispersão.

Um gráfico de dispersão é uma representação dos seus dados em eixos onde um valor está em função de outro. Normalmente, esses gráficos possuem dois eixos, um eixo horizontal (eixo x) e um eixo vertical (eixo y) onde cada eixo serve como referência para cada um dos valores do seu par.

Vamos ver na prática como funciona!

Tomando os mesmos dados que tínhamos das notas dos alunos utilizadas no post sobre histogramas, vamos agora verificar a relação entre o número de faltas dos alunos e suas notas:

Agora, queremos ter uma ideia de como essas variáveis se relacionam. Talvez a gente consiga ter uma ideia do comportamento, afinal, é provável que quem falte mais tenha piores notas. Poderemos ver isso com o gráfico de dispersão. Vejamos as diferentes formas de se gerar esse tipo de gráfico utilizando o SAS:

SYMBOL1 V=circle C=black I=none;
TITLE 'Notas x Faltas 1';
PROC GPLOT DATA=auto;
 PLOT Notas*Faltas;
RUN;

 

SYMBOL1 V=circle C=blue I=r;
TITLE 'Notas x Faltas 2';
PROC GPLOT DATA=auto;
 PLOT Notas*Faltas;
RUN;
QUIT;

Como vocês podem notar, SYMBOL é responsável por especificar as características do seu gráfico, sendo que V define o formato, no meu caso usei círculos, mas poderia ser Plus (+), Dot (•), dentre muitos outros. C define a cor e I o que chamamos de interpol nos traz a reta da regressão. Experimente modificar essas características no seu gráfico!

Quando se trabalha com gráfico de dispersão, fica mais claro a correlação entre as duas variáveis em questão. Você vai ver que por si só, esse gráfico já será muito útil na vida profissional e acadêmica. E claro, se você quiser ir além, esse gráfico é um começo para suas análises e regressões!