Introdução Experimentos Cleidson de Souza LABES - DI - UFPA [email protected] Vantagens ! Ajudar a construir uma base de conhecimento confiável e reduzir assim incertezas sobre quais teorias, ferramentas e metodologias são mais adequadas para certos contextos; ! ! ! ! ! ! Exemplo ! ! Ex: o efeito de determinados medicamentos; Pode acelerar o processo de escolhas, eliminando abordagens inúteis e suposições errôneas; Devido às rápidas mudanças tecnológicas na computação, experimentos podem ajudar os pesquisadores a explorar a consequência destas mudanças; Os experimentos são provavelmente o método científico mais famoso. São baseados na mesma abordagem e tradição das ciências naturais como física e química; Eles oferecem um modo sistemático, disciplinado, e controlado de avaliação. Idealmente, novos métodos, técnicas, linguagens e ferramentas não deveriam ser sugeridos, publicados ou vendidos sem experimentação e validação. A produtividade dos programadores aumenta com a utilização de dois monitores? Projeto: ! ! ! ! ! 10 programadores usando 1 monitor 10 programadores usando 2 monitores Programar um problema de dificuldade média em 1 hora Análise dos programas ao final do prazo Controle: habilidade de programação, IDE, tarefa a ser executada, produtividade (qualidade do código / número de erros, etc etc etc. Componentes de um Experimento Componentes … ! ! Variáveis independentes referem-se à entrada do experimento e apresentam a causa que afeta o resultado do experimento. Também são chamados fatores; Os valores dos fatores são chamados tratamentos; ! ! ! Número de monitores usados; Nível de dificuldade do programa a ser escrito; Variáveis dependentes referem-se à saída do experimento e apresentam o efeito que é causado pelos fatores do experimento; ! “produtividade” dos programadores --> operacionalizando, uma função do tempo necessário para resolver a tarefa e da qualidade do código produzido; Um parênteses Operacionalização (importante!) ! ! Todos os conceitos considerados em um tratamento precisam ser “operacionalizados”, ou seja, convertidos em valores concretos que possam ser efetivamente medidos sem ambigüidade! produtividade” dos programadores --> uma função do tempo necessário para resolver a tarefa e da qualidade do código produzido; ! ! Tempo necessário para resolver a tarefa --> cronometrar cada indivíduo; Qualidade do código produzido --> número de bugs encontrados no código; ! Bugs --> não conformidade com o resultado do teste; ! E se eu não puder testar o código? Componentes … ! ! Durante a execução do experimento, os tratamentos são aplicados aos objetos e os resultados estão sendo avaliados. Os participantes ou sujeitos são os indivíduos que foram especialmente selecionados da população para conduzir o experimento; ! ! Os programadores; Para se generalizar os resultados do tratamento para uma população, o conjunto de participantes tem de ser representativo daquela população. ! Alunos do CBCC aumentaram a sua produtividade, então posso argumentar que 2 monitores aumentariam a produtividade de qualquer programador? Componentes … ! O contexto descreve as condições em que o experimento está sendo executado: ! In-vitro vs. In-vivo: laboratório sob condições controladas ou em uma situação real; ! ! Alunos vs. profissionais: os participantes do experimento; ! ! Ver classificação de [MacGrath, 2000]; Possibilidade de generalização? “Toy problem” vs. problema real: O tamanho e complexidade do problema sendo executado. ! Possibilidade de generalização? Terminologia ! Grupo de Controle ! ! ! ! Grupo de participantes que não recebe tratamento; O efeito do tratamento é calculado comparando o grupo tratado com o grupo de controle; ! Cegar (Blinding): ! Prevenir as pessoas envolvidas no tratamento de saber que participantes receberam qual tratamento ! Os participantes; As pessoas administrando o tratamento; ! As pessoas calculando os resultados; ! ! Placebo: Um tratamento sem resultado. ! Ex: Pílulas de farinha; Efeito Placebo: Resposta causada nas pessoas pela simples idéia de que foram tratados; Cegar Duplamente (Double blind); Princípio Fundamental Agrupar o que for possível e tornar aleatório o que não for possível (Block what you can and randomize what you cannot.) Projeto de Experimentos ! Agrupar para garantir comparações com respeito a fatores que são reconhecidamente importantes, ou seja, agrupar para fazer comparações entre grupos relativamente similares de pessoas ! Não se deve comparar excelentes programadores de um lado e péssimos programadores de outro; Projeto … ! Randomizar, ou tornar aleatório, outros fatores que não se sabe se podem ter efeito no resultado ! ! ! Conceituação Teórica Idade e sexo dos programadores; Randomizar também permite que se possa calcular a probabilidade dos resultados conterem erros; A aleatoriedade implica que a alocação dos objetos e dos participantes e a ordem da execução dos testes experimentais são aleatórias. Conceituação … ! ! ! Um experimento geralmente é formulado para testar uma hipótese; A hipótese principal se chama hipótese nula e declara que não há nenhum relacionamento estatisticamente significante entre a causa e o efeito; Estatisticamente significante - a probabilidade que o resultado de um experimento ocorreu por acaso (não por causa do tratamento); Conceituação … ! Em um experimento, definem-se: ! Hipótese nula (H0): não existe diferença na produtividade dos programadores; ! ! A hipótese nula mais comum é a que diz “que não existe diferença” entre duas abordagens, mas existem outras. Hipótese alternativa (H1): programadores que usam 2 monitores tem maior produtividade que programadores que usam 1 monitor; Conceituação … ! ! O objetivo do experimento é rejeitar a hipótese nula em favor das hipóteses alternativas (H1,H2, etc); A decisão sobre a rejeição da hipótese nula é tomada baseada nos resultados da sua verificação com um teste estatístico que calcula o “valor-p” (p-value); ! Chi-quadrado, Estudante t-teste (student’s ttest), Correlações, etc. Conceituação … ! ! ! Um alto valor de p não implica que a hipótese nula (H0) é verdadeira; Um valor-p pequeno é evidência de um efeito do tratamento, mas não diz nada sobre o tamanho deste efeito; Em resumo, você NUNCA pode afirmar com certeza absoluta que o tratamento é o fator de decisão; Conceituação … ! ! ! (p<.05), ou seja, existe 5% de probabilidade que a produtividade de programadores com 2 monitores seja maior que a produtividade de programadores com 1 monitor ocorra por acaso (ou por outros fatores); Quanto menor o valor-p, maior a evidência contra a hipótese nula (H0); Quanto menor for o p, maior certeza você pode ter que a diferença ocorreu devido ao “tratamento” e não por acaso; Conceituação … TABLE 9.3.2 Interpreting the S ize of a P -Value Approximate size of P -Value > 0.12 (12%) 0.10 (10%) 0.05 (5%) 0.01 (1%) 0.001 (0.1%) Translation No evidence against H0 Weak evidence against H0 S ome evidence against H0 S trong evidence against H0 Very S trong evidence against H0 These translations are the authors' and are not universally accepted. For further discussion, see the surrounding text. Testes Estatísticos ! Tipos de Variáveis A escolha do teste estatístico depende: ! ! ! Do tipo das variáveis (independentes e dependentes); Da distribuição destas variáveis (distribuição normal, gaussiana, etc); Etc. Types of Variables Quantitative (measurements and counts) Continuous Discrete (few repeated values) (many repeated values) Figure 2.1.1 Qualitative (define groups) Categorical (no idea of order) Ordinal (fall in natural order) Tree diagram of types of variable. From Chance Encounters by C.J. Wild and G.A.F. Seber, © John Wiley & Sons, 2000. Em resumo, os passos são: ! ! ! ! ! Definir objetivos do experimento; Definir hipóteses nula e alternativas; Operacionalizar as variáveis; Executar o experimento; Calcular resultados; ! ! ! Escolher testes estatísticos de acordo com as variáveis; Comparar com a hipótese Nula; Escrever; ! Não é uma boa prática criar hipóteses no decorrer do processo de análise ! Quando se testam diversas hipóteses, existe uma probabilidade de se encontrar valores estatisticamente significantes devido ao acaso… Conclusões ! ! ! Experimentos são, simplificadamente, o principal método de pesquisa científico adotado por diversas ciências; Porém, eles são usados raramente na computação. Acredita-se que com a utilização destes, a computação se torne mais próxima de uma ciência do que de uma engenharia; Entretanto, lembre-se que experimentos não provam o efeito de algo com absoluta certeza. Eles apenas nos oferecem a certeza de que outros fatores (tratados) não são responsáveis pelo efeito causado.