diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/.DS_Store differ diff --git a/0-pre-requisitos/1-python/Aula_01.ipynb b/0-pre-requisitos/1-python/Aula_01.ipynb index f21b5d7..7ab6a72 100644 --- a/0-pre-requisitos/1-python/Aula_01.ipynb +++ b/0-pre-requisitos/1-python/Aula_01.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Aula 1: Data Types\n", + "# Aula 1: Data Types - Tipos de Dados\n", "**02/08/2017**" ] }, @@ -12,19 +12,37 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Objects in Python, like in many other languages, are organized in types, called __classes__. By belonging to a class, objects can be modified by functions (called __methods__) that are defined for objetcs of that class. Later in the course we will learn how to create our own classes and define methods that apply to objetcs that belong to them. For the time being, let us go through some standard classes that will already take us a long way towards solving problems." + "Objetivos:\n", + "- Tipos de dados e operações com os dados.\n", + "- Números (int/float/complex).\n", + "- Textos (list)\n", + "- Tuplas (tuple)\n", + "- Dicionários (dict)\n", + "- Conjuntos set loops\n", + "- Conversão de tipos" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Objetos em Python, assim como em várias outras linguagens de programação, são organizados em tipos, chamados __classes__. Pertencendo a uma classe esses objetos podem ser modificados por funções (chamadas __métodos__) definidas para cada classe.\n", + "Mais tarde neste curso vamos aprender como criar suas próprias classes e definir métodos que podem ser aplicados aos objetos que pertencem a essa nova classe.\n", + "Enquanto isso vamos passar por algumas classes padrão que já nos ajudarão a resolver vários problemas.\n", + "\n", + "" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Python 3.5.4 :: Anaconda custom (64-bit)\r\n" + "Python 3.6.8 :: Anaconda, Inc.\n" ] } ], @@ -36,19 +54,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Numbers" + "# Numbers - Números" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "There are three basic types of numeric objects in Python. One of then is int (for integers), such as -1, 0, 1, 2, and so on." + "Existem três tipos básicos de objetos numéricos no Python.\n", + "O primeiro deles é o int (para inteiros), como -1, 0, 1, 2 e assim por diante.\n", + "\n", + "" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -57,7 +78,7 @@ "int" ] }, - "execution_count": 2, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -71,13 +92,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The other type of numeric object is float, that stores real numbers.\n", - "For more information on how Python handles floating point arithmetic, see [this](https://docs.python.org/3/tutorial/floatingpoint.html)." + "Outro tipo é o float, que guarda números reais.\n", + "Você consegue encontrar mais informações sobre como o Python trata o número de casas decimais na [documentação do Python](https://docs.python.org/3/tutorial/floatingpoint.html) (em Inglês).\n", + "\n", + "" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -86,7 +110,7 @@ "53" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -98,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -107,7 +131,7 @@ "float" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -120,12 +144,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "One can also represent complex numbers (complex). A quick refresher on complex numbers can be found [here](https://en.wikipedia.org/wiki/Complex_number) and [here](http://mathworld.wolfram.com/ComplexNumber.html)." + "E por último complex que representa os números complexos. Entenda os números complexos e suas opeções nesta sequencia de vídeos: [Números complexos em pt_br](https://youtu.be/nprqf6DKeyI)\n", + "\n", + "" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -134,7 +160,7 @@ "complex" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -145,7 +171,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -154,7 +180,7 @@ "complex" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -167,21 +193,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Notice that although the int 3, the float 3.0, and the complex 3.0+0j represent the same quantity, Python will treat them as different objetcs." + "Note que mesmo int 3, float 3.0, e complex 3.0+0j representem a mesma quantidade, o Python vai tratá-los como objetos diferente.\n", + "\n", + "" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "94708970930304\n", - "139738084184280\n", - "139738084123920\n" + "4402206192\n", + "4440060840\n", + "4440441680\n" ] } ], @@ -196,12 +224,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Some operations that we can perform with numbers:" + "Algumas operações que podemos fazer com números:\n", + "\n", + "" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -225,12 +255,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Notice that adding two ints will return an int. But adding an int to a float will return a float (even though the float has no decimals). Finally, adding an int or a float to a complex will result in a complex object. This rule applies to other operations in Python involving numbers." + "Note que adicionar dois int vai retornar um int, mas adicionar um int e um float vai retornar um float mesmo que o float não tenha casas decimais.\n", + "Finalmente, adicionar um int ou float a um complex vai resultar sempre em um objeto complex. Essas mesmas regras se aplicam a outras operações envolvendo núnmeros no Python.\n", + "\n", + "" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -252,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -272,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -281,7 +314,7 @@ "2" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -293,7 +326,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -302,7 +335,7 @@ "1" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -314,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -340,12 +373,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Sometimes it is convenient to assign an object to a **variable**. The variable inherits several properties of the object itself, but can have its values changed later on. In several programming languages, the variable and the type of data it can store have to be declared at the outset. Python does not require such declaration, and the type of variable can change throughout the code." + "Algumas vezes é conveniente colocar um objeto dentro de uma **variável** que herda várias propriedades do objeto, mas pode ter seu valor alterado posteriormente.\n", + "Em várias linguagens de programação, a variável e o tipo de objeto devem ser declarados no início, mas o Python não requer esse tipo de declaração. Além disso o tipo da variável pode alterar ao longo do seu código.\n", + "\n", + "" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -354,7 +390,7 @@ "8" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -368,15 +404,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Variables naming rules**\n", + "**Regras para nomes de variáveis**\n", + "\n", + "* Os nomes das variáveis devem começar com um letra ou \"_\" (*underscore*).\n", + "* O restante do nome pode conter letras, números e underscores.\n", + "* Nomes de variáveis no Python são diferentes se escritas em caixa alta ou baixa.\n", + "\n", + "" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -397,7 +439,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -422,12 +464,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Another way to perform basic arithmetic operations:" + "Outra forma de utilizar operações aritiméticas:\n", + "" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -447,7 +490,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -469,12 +512,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Other useful functions (methods) that apply to numbers:" + "Outras funções (métodos) úteis que se aplicam a números:\n", + "" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -496,7 +540,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -514,7 +558,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -532,7 +576,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -553,19 +597,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "What are the methods in a numerical object?" + "Quais são os métodos em um objeto numérico?\n", + "" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['__abs__', '__add__', '__bool__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__int__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', 'conjugate', 'imag', 'real']\n" + "['__abs__', '__add__', '__bool__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__int__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', 'conjugate', 'imag', 'real']\n" ] } ], @@ -576,7 +621,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -597,12 +642,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A rule about assignment to a number:" + "Uma regra sobre atribuição a um número:\n", + "" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -623,7 +669,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -645,19 +691,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Strings" + "# Strings - Textos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "A string (str) is Pyhton is a sequence of characters." + "Um texto ou *string* (str) em Python é uma sequência de caracteres.\n", + "" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -666,7 +713,7 @@ "str" ] }, - "execution_count": 27, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -679,20 +726,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Strings can be created by enclosing a sequence of characters in single or double quotes.\n", - "'string\" is NOT valid! 'string'=\"string\"." + "Textos podem ser criados colocando a sequência de caracteres dentro de aspas simples ou duplas.\n", + "'texto\" não é válido! 'texto\" = \"texto\".\n", + "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "What is the size of a string?" + "Qual o tamanho de um texto?\n", + "" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -701,7 +751,7 @@ "9" ] }, - "execution_count": 28, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -712,7 +762,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -733,7 +783,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -754,12 +804,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Numbers cannot be merged to strings on the fly. To do so, one has to convert the number to a string before." + "Números não podem ser fundidos/adicionados com textos em tempo de execução. Para fazer isso, antes é necessário converter o número para texto.\n", + "" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -768,7 +819,7 @@ "'number two: 2'" ] }, - "execution_count": 31, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -782,12 +833,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There are methods to extract only a portion of a string." + "Existem métodos para extrair apenas parte de um texto.\n", + "" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -818,19 +870,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Although one can access the element in position *i* this way, it is not possible to modify the string directly. s[3] = \"v\" would return an error." + "Mesmo sendo possível acessar o caracter na posição *i*, não é possível alterá-lo diretamente no texto. s[3] = \"v\" vai retornar um erro.\n", + "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Triple quotes (''') interprets literally whatever is between then, including line brakes. " + "Aspas triplas (''') fazem o Python interpretar literlamente qualquer coisa que estiver entre as aspas triplas. Isso incluí quebras de linhas.\n", + "" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -851,12 +905,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There are more elegant ways to insert line breaks and other control characters." + "Existem formas mais elegantes de se adicionar quebras de linha e outros caracteres de controle.\n", + "" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -876,12 +931,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Expressions inside a string that are preceeded by a backslash (\\) are referred to as escape sequences, and are used - among other things - to insert non-printable and especial characters, such as linebreak (\\n), tab (\\t), or a single space (\\s). " + "Expressões dentro de um texto que tenham o prefixo de uma barra invertida \\ são utilizadas para imprimir sequências, caracteres especiais entre outras coisas. Para inserir um caracter especial ou de controle como uma quebra de linha \\n, espaçamentos \\t, ou um espaço \\s.\n", + "" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -900,12 +956,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Strings can be 'multiplied' too." + "Textos também podem ser multiplicados.\n", + "" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -927,12 +984,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here is a safer, more flexible way to merge strings, using the format method." + "Aqui um exemplo mais seguro e flexível para fundir textos usando o método format.\n", + "" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -941,7 +999,7 @@ "'Corinthias é campeão'" ] }, - "execution_count": 37, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -959,7 +1017,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -982,7 +1040,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1005,7 +1063,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -1014,7 +1072,7 @@ "'TIMAO, EO! '" ] }, - "execution_count": 40, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1025,7 +1083,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -1034,7 +1092,7 @@ "'timao, eo! '" ] }, - "execution_count": 41, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1045,7 +1103,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -1054,7 +1112,7 @@ "'(6+9j)'" ] }, - "execution_count": 42, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -1065,7 +1123,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1074,7 +1132,7 @@ "['Timao,', 'eo!']" ] }, - "execution_count": 43, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1085,7 +1143,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -1104,7 +1162,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -1121,7 +1179,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 47, "metadata": { "scrolled": true }, @@ -1132,7 +1190,7 @@ "2" ] }, - "execution_count": 46, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1143,7 +1201,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -1152,7 +1210,7 @@ "-1" ] }, - "execution_count": 47, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -1163,7 +1221,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -1172,7 +1230,7 @@ "2" ] }, - "execution_count": 48, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1185,19 +1243,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Other string methods:" + "Outros métodos para textos (string):\n", + "" ] }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']\n" + "['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']\n" ] } ], @@ -1208,7 +1267,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 51, "metadata": { "scrolled": true }, @@ -1232,7 +1291,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -1253,23 +1312,22 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ - "# Lists" + "# Lists - Listas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "A list is an ordered collection of elements. Each element has two attributes: index (the position it is in, *starting from zero*) and value." + "Uma lista (list) é uma coleção ordenada de elementos. Cada elemento tem 2 atributos: index (a posição em que ele se encontra, começão do 0) e o valor.\n", + "" ] }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -1291,12 +1349,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The element of a list can be accessed by calling its index." + "O elemento da lista pode ser acessado chamando o *index* dele.\n", + "" ] }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 54, "metadata": {}, "outputs": [ { @@ -1305,7 +1364,7 @@ "'Fernando'" ] }, - "execution_count": 53, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -1316,7 +1375,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -1343,12 +1402,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "What is the size of our list?" + "Qual é o tamanho da nossa lista?\n", + "" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -1357,7 +1417,7 @@ "5" ] }, - "execution_count": 55, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -1371,12 +1431,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The list can be sorted (if all elements can be compared! More about this later in this section). Notice that the indexes associated with each element will change." + "Uma lista pode ser ordenada (se todos os elementos puderem ser comparados! Vamos ver mais sobre isso nessa sessão. Note que o *index* associado com cada elemento vai ser alterado.\n", + "" ] }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 57, "metadata": {}, "outputs": [ { @@ -1402,12 +1463,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The order of the elements can also be reversed.\n" + "A ordem dos elementos também pode ser revertida.\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -1429,12 +1491,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There are two ways to add an element to a list. The method append will add the element to the last position." + "Existem duas formas de adicionar um elemnto a uma lista. O método append que vai adicionar o elemento na última posição da lista.\n", + "" ] }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -1456,12 +1519,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A value can also be added in a specific position. In this scenario, the other indexes may also change." + "Ou adicionar o elemento em uma posição especifica na lista. Neste caso os outros inedx também podem ser alterados.\n", + "" ] }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -1481,16 +1545,15 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ - "Elements of a list can be modified." + "Elementos de uma lista também podem ser modificados.\n", + "" ] }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 61, "metadata": {}, "outputs": [ { @@ -1512,12 +1575,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Elements can be removed from the list depende on the value they have. The method p.remove(v) will remove all the elements whose value is v. Indexes will change." + "Elementos podem ser removidos da lista dependendo do valor ques eles possuem. O método p.remove(v) vai remover todos os elementos da lista que tiverem o valor igual a v. Os indexes serão alterados nos elementos remanecentes.\n", + "" ] }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 62, "metadata": {}, "outputs": [ { @@ -1543,12 +1607,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "What is the index of \"Luis\"?" + "Qual o index do elemento \"Luis\"?\n", + "" ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 63, "metadata": {}, "outputs": [ { @@ -1557,7 +1622,7 @@ "3" ] }, - "execution_count": 62, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } @@ -1570,12 +1635,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Also possible to remove element according to its index. Remember that the index is the position of the element in the list." + "Também é possível remover um elemento de acordo com seu index. Lembre-se o index é a posição do elemento na lista e ao removê-lo, você pode alterar a posição de outros elementos.\n", + "" ] }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -1600,26 +1666,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "list.pop() removes the last element of a list (the one with the highest index)." + "O método list.pop() remove o último elemento da lista (o que tiver o maior index).\n", + "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Other list methods:" + "Outros métodos das listas (list):\n", + "" ] }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']\n" + "['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']\n" ] } ], @@ -1631,12 +1699,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A trick that you should remember. It is true for lists and for other **mutable** objetcs." + "Um truque que você deve se lembrar e que é verdade para listas e outros objetos **mutáveis**.\n", + "" ] }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 66, "metadata": {}, "outputs": [], "source": [ @@ -1645,7 +1714,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -1667,20 +1736,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "a and b are pointing to the same object in memory." + "a e b estão apontando para o mesmo objeto na memória, se um muda o outro também vai ser alterado.\n", + "" ] }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 68, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "id(a) = 139738083628936\n", - "id(b) = 139738083628936\n" + "id(a) = 4441100744\n", + "id(b) = 4441100744\n" ] } ], @@ -1691,16 +1761,15 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ - "Let us modify b" + "Vamos modificar b\n", + "" ] }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -1720,12 +1789,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "a was also modified." + "a também foi alterado.\n", + "" ] }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -1742,7 +1812,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 71, "metadata": {}, "outputs": [], "source": [ @@ -1751,15 +1821,15 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "id(a) = 139738083628936\n", - "id(b) = 139738083627208\n" + "id(a) = 4441100744\n", + "id(b) = 4441102408\n" ] } ], @@ -1772,12 +1842,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Lists can store more than one type of data." + "Listas podem guardar mais do que um tipo de dados.\n", + "" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 73, "metadata": {}, "outputs": [ { @@ -1797,12 +1868,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "How to merge/combine lists?" + "Como fundir/juntar/combinar listas?\n", + "" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 74, "metadata": {}, "outputs": [ { @@ -1829,16 +1901,23 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['Ulisses', 'Roberto', 'Luis', 'Fernando', 'Leonel']" + "['Ulisses',\n", + " 'Roberto',\n", + " 'Luis',\n", + " 'Fernando',\n", + " 'Leonel',\n", + " 'Eneas',\n", + " 'Marronzinho',\n", + " 'Correa']" ] }, - "execution_count": 72, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } @@ -1856,7 +1935,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "['Ulisses', 'Roberto', 'Luis', 'Leonel', 'Fernando']\n" + "['Ulisses', 'Roberto', 'Marronzinho', 'Luis', 'Leonel', 'Fernando', 'Eneas', 'Correa']\n" ] } ], @@ -1866,7 +1945,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 77, "metadata": {}, "outputs": [], "source": [ @@ -1875,16 +1954,23 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['Fernando', 'Leonel', 'Luis', 'Roberto', 'Ulisses']" + "['Correa',\n", + " 'Eneas',\n", + " 'Fernando',\n", + " 'Leonel',\n", + " 'Luis',\n", + " 'Marronzinho',\n", + " 'Roberto',\n", + " 'Ulisses']" ] }, - "execution_count": 81, + "execution_count": 78, "metadata": {}, "output_type": "execute_result" } @@ -1895,7 +1981,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 79, "metadata": {}, "outputs": [], "source": [ @@ -1904,16 +1990,23 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['Fernando', 'Mário', 'Luis', 'Roberto', 'Ulisses']" + "['Correa',\n", + " 'Mário',\n", + " 'Fernando',\n", + " 'Leonel',\n", + " 'Luis',\n", + " 'Marronzinho',\n", + " 'Roberto',\n", + " 'Ulisses']" ] }, - "execution_count": 83, + "execution_count": 80, "metadata": {}, "output_type": "execute_result" } @@ -1926,19 +2019,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Tuples" + "# Tuples - Tuplas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "A tuple is a sequence of **immutable** Python objects. Unlike lists, once are created, they cannot be modified." + "Uma tupla nada mais é do que uma sequência de objetos em Python que são **imutáveis**. Diferente das listas, assim que criados, não modem ser modificados.\n", + "" ] }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 81, "metadata": {}, "outputs": [ { @@ -1958,12 +2052,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Since tuples are immutable, they have only a subset of the methods available for strings." + "Como as tuplas são imutáveis, elas tem apenas um pequeno set de métodos disponíveis para strings.\n", + "" ] }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 82, "metadata": {}, "outputs": [ { @@ -1973,7 +2068,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"rugby\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"rugby\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" ] } @@ -1984,14 +2079,14 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 83, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']\n" + "['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']\n" ] } ], @@ -2001,7 +2096,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 84, "metadata": {}, "outputs": [ { @@ -2010,7 +2105,7 @@ "3" ] }, - "execution_count": 86, + "execution_count": 84, "metadata": {}, "output_type": "execute_result" } @@ -2021,7 +2116,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 85, "metadata": {}, "outputs": [ { @@ -2030,7 +2125,7 @@ "1" ] }, - "execution_count": 88, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -2044,19 +2139,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Dictionaries" + "# Dictionaries - Dicionários" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Dictionaries (or hashes) are associative tables, in which indexes are associated with values." + "Dicionários (ou hashes) são tabelas associativas, nas quais indexes são associados com valores.\n", + "" ] }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -2074,16 +2170,15 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": true - }, + "metadata": {}, "source": [ - "Dictionary elements can be accessed like we do with lists and tuples. The keys must be unique and immutable. strings, numbers or tuples will work as dictionary keys." + "Elementos em Dicionários, podem ser acessados da mesma forma que fazemos com listas e tuplas. A chave (key) deve ser única e imutável. Chaves podem ser textos, tuplas ou números.\n", + "" ] }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -2092,7 +2187,7 @@ "'Maluf'" ] }, - "execution_count": 98, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -2103,7 +2198,7 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 88, "metadata": {}, "outputs": [], "source": [ @@ -2112,21 +2207,21 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{11: 'Maluf',\n", - " 12: 'Brizola',\n", - " 13: 'Lula',\n", + "{13: 'Lula',\n", " 15: 'Ulisses',\n", - " 18: 'Afif',\n", - " 20: 'Collor'}" + " 11: 'Maluf',\n", + " 12: 'Brizola',\n", + " 20: 'Collor',\n", + " 18: 'Afif'}" ] }, - "execution_count": 102, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -2137,7 +2232,7 @@ }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 90, "metadata": {}, "outputs": [], "source": [ @@ -2146,7 +2241,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 91, "metadata": {}, "outputs": [], "source": [ @@ -2155,21 +2250,21 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{11: ' Afif',\n", - " 12: 'Brizola',\n", - " 13: 'Lula',\n", + "{13: 'Lula',\n", " 15: 'Ulisses',\n", - " 18: 'Afif',\n", - " 20: 'Collor'}" + " 11: ' Afif',\n", + " 12: 'Brizola',\n", + " 20: 'Collor',\n", + " 18: 'Afif'}" ] }, - "execution_count": 104, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" } @@ -2182,12 +2277,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There are dict methods that allow us to access the keys and values of the dictionary." + "Existem métodos dict que permitem acessar as chaves e valores do dicionário.\n", + "" ] }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 93, "metadata": {}, "outputs": [], "source": [ @@ -2196,7 +2292,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 94, "metadata": {}, "outputs": [], "source": [ @@ -2205,7 +2301,7 @@ }, { "cell_type": "code", - "execution_count": 109, + "execution_count": 95, "metadata": {}, "outputs": [], "source": [ @@ -2214,17 +2310,17 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{9321936: {'esporte': 'volei', 'idade': 21, 'nome': 'João'},\n", - " 9625728: {'esporte': 'Sporti', 'idade': 22, 'nome': 'Gabriel'}}" + "{9321936: {'nome': 'João', 'idade': 21, 'esporte': 'volei'},\n", + " 9625728: {'nome': 'Gabriel', 'idade': 22, 'esporte': 'Sporti'}}" ] }, - "execution_count": 110, + "execution_count": 96, "metadata": {}, "output_type": "execute_result" } @@ -2235,7 +2331,7 @@ }, { "cell_type": "code", - "execution_count": 111, + "execution_count": 97, "metadata": {}, "outputs": [ { @@ -2244,7 +2340,7 @@ "43" ] }, - "execution_count": 111, + "execution_count": 97, "metadata": {}, "output_type": "execute_result" } @@ -2255,7 +2351,7 @@ }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 98, "metadata": {}, "outputs": [ { @@ -2263,7 +2359,7 @@ "output_type": "stream", "text": [ "keys: dict_keys([9321936, 9625728])\n", - "values: dict_values([{'idade': 21, 'esporte': 'volei', 'nome': 'João'}, {'idade': 22, 'esporte': 'Sporti', 'nome': 'Gabriel'}])\n" + "values: dict_values([{'nome': 'João', 'idade': 21, 'esporte': 'volei'}, {'nome': 'Gabriel', 'idade': 22, 'esporte': 'Sporti'}])\n" ] } ], @@ -2274,7 +2370,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 99, "metadata": {}, "outputs": [ { @@ -2291,14 +2387,14 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 100, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "dict_items([(20, 'Collor'), (12, 'Brizola'), (13, 'Lula'), (15, 'Ulisses')])\n" + "dict_items([(13, 'Lula'), (15, 'Ulisses'), (11, ' Afif'), (12, 'Brizola'), (20, 'Collor'), (18, 'Afif')])\n" ] } ], @@ -2308,14 +2404,14 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 101, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']\n" + "['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']\n" ] } ], @@ -2327,26 +2423,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Dictionaries are mutable, and can be modified pretty much the same we did for lists. This is not true for strings and tuples, which are immutable." + "Dicionários, são mutáveis e podem ser alterados basicamente da mesma forma que fizemos com as listas. Isso não se aplica a strings e tuples que são imutáveis.\n", + "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "How to delete one of the entries?" + "Como deletar entradas no dicionário?\n", + "" ] }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 102, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{20: 'Collor', 12: 'Brizola', 13: 'Lula', 15: 'Ulisses'}\n" + "{13: 'Lula', 15: 'Ulisses', 12: 'Brizola', 20: 'Collor', 18: 'Afif'}\n" ] } ], @@ -2359,19 +2457,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Combining two dictionaries:" + "Combinando dois dicionários:\n", + "" ] }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 103, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{33: 'Brant', 20: 'Collor', 22: 'Afif', 43: 'Gabeira', 12: 'Brizola', 13: 'Lula', 15: 'Ulisses'}\n" + "{13: 'Lula', 15: 'Ulisses', 12: 'Brizola', 20: 'Collor', 18: 'Afif', 43: 'Gabeira', 33: 'Brant', 22: 'Afif'}\n" ] } ], @@ -2385,12 +2484,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "What if one tries to access an index that does not exist?" + "E se tentarmos acessar um index que não existe?\n", + "" ] }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 104, "metadata": {}, "outputs": [ { @@ -2411,12 +2511,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Sets" + "# Sets - Conjuntos" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 117, "metadata": {}, "outputs": [ { @@ -2424,7 +2524,8 @@ "output_type": "stream", "text": [ "list l = [1, 2, 3, 1, 3, 3, 2]\n", - "set(l) = {1, 2, 3}\n" + "set(l) = {1, 2, 3}\n", + "\n" ] } ], @@ -2432,12 +2533,13 @@ "l = [1, 2, 3, 1, 3, 3, 2]\n", "print(\"list l = \" + str(l))\n", "sl = set(l)\n", - "print(\"set(l) = \" + str(sl))" + "print(\"set(l) = \" + str(sl))\n", + "print(type(sl))" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 106, "metadata": {}, "outputs": [ { @@ -2457,6 +2559,7 @@ " '__hash__',\n", " '__iand__',\n", " '__init__',\n", + " '__init_subclass__',\n", " '__ior__',\n", " '__isub__',\n", " '__iter__',\n", @@ -2499,7 +2602,7 @@ " 'update']" ] }, - "execution_count": 36, + "execution_count": 106, "metadata": {}, "output_type": "execute_result" } @@ -2512,12 +2615,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Converting between types" + "# Converting between types - Convertendo entre os tipos de dados" ] }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 107, "metadata": {}, "outputs": [ { @@ -2526,7 +2629,7 @@ "tuple" ] }, - "execution_count": 114, + "execution_count": 107, "metadata": {}, "output_type": "execute_result" } @@ -2538,7 +2641,7 @@ }, { "cell_type": "code", - "execution_count": 115, + "execution_count": 108, "metadata": {}, "outputs": [], "source": [ @@ -2547,7 +2650,7 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 109, "metadata": {}, "outputs": [ { @@ -2564,7 +2667,7 @@ }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 110, "metadata": {}, "outputs": [ { @@ -2582,7 +2685,7 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 111, "metadata": {}, "outputs": [ { @@ -2591,7 +2694,7 @@ "['a', 'b', 'c', 'd', 'e']" ] }, - "execution_count": 118, + "execution_count": 111, "metadata": {}, "output_type": "execute_result" } @@ -2602,7 +2705,7 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 112, "metadata": {}, "outputs": [ { @@ -2611,7 +2714,7 @@ "[1, 2, 3]" ] }, - "execution_count": 119, + "execution_count": 112, "metadata": {}, "output_type": "execute_result" } @@ -2622,7 +2725,7 @@ }, { "cell_type": "code", - "execution_count": 121, + "execution_count": 113, "metadata": {}, "outputs": [], "source": [ @@ -2631,7 +2734,7 @@ }, { "cell_type": "code", - "execution_count": 122, + "execution_count": 114, "metadata": {}, "outputs": [ { @@ -2640,7 +2743,7 @@ "[1, 2, 3]" ] }, - "execution_count": 122, + "execution_count": 114, "metadata": {}, "output_type": "execute_result" } @@ -2651,7 +2754,7 @@ }, { "cell_type": "code", - "execution_count": 123, + "execution_count": 115, "metadata": {}, "outputs": [ { @@ -2669,7 +2772,7 @@ }, { "cell_type": "code", - "execution_count": 124, + "execution_count": 116, "metadata": {}, "outputs": [ { @@ -2678,7 +2781,7 @@ "[1, 2, 3]" ] }, - "execution_count": 124, + "execution_count": 116, "metadata": {}, "output_type": "execute_result" } @@ -2704,7 +2807,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.4" + "version": "3.6.8" } }, "nbformat": 4, diff --git a/0-pre-requisitos/1-python/Aula_02.ipynb b/0-pre-requisitos/1-python/Aula_02.ipynb index 082c74e..a82842d 100644 --- a/0-pre-requisitos/1-python/Aula_02.ipynb +++ b/0-pre-requisitos/1-python/Aula_02.ipynb @@ -1,882 +1,1365 @@ { - "cells": [ - { - "metadata": { - "collapsed": true - }, - "cell_type": "markdown", - "source": "# Aula 2: Program Flow and Control Structures\n**06/08/2017**\n" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "Objectives:\n- Conditional (if/else) statements\n- for loops\n- while loops\n- functions" - }, - { - "metadata": { - "collapsed": true - }, - "cell_type": "markdown", - "source": "# Conditional" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "A boolean variable stores True or False." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "type(True)", - "execution_count": 1, - "outputs": [ - { - "data": { - "text/plain": "bool" - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x = (4>3)\nprint(\"x = {0}\".format(x))", - "execution_count": 2, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "x = True\n" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "y = 2==4\nprint(\"y = {0}\".format(y))", - "execution_count": 3, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "y = False\n" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x or y", - "execution_count": 4, - "outputs": [ - { - "data": { - "text/plain": "True" - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x and y", - "execution_count": 5, - "outputs": [ - { - "data": { - "text/plain": "False" - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "not x", - "execution_count": 6, - "outputs": [ - { - "data": { - "text/plain": "False" - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "True and False behave like 1 and 0, respectively." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x+y", - "execution_count": 7, - "outputs": [ - { - "data": { - "text/plain": "1" - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x*y", - "execution_count": 8, - "outputs": [ - { - "data": { - "text/plain": "0" - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "The example below shows the most basic sintax of a decision structure:" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x = 5\ny = 4\nt = x>y\nif t:\n print(\"{0} is greater than {1}\".format(x, y))", - "execution_count": 9, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "5 is greater than 4\n" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "If the condition (or set of conditions) is satisfied, the indented code below is executed. Indentation in Python is made up of four simple spaces, and is used to determine the end of the structure. Python is very strict about indentation, and programmers should be too.\n\nNotice that something happens (code is execute) only if the condition is True. In some scenarios, one wants something to happen if the condition is False. The else clauses comes in handy in this case." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x = 4\ny = 5\nif (x>y):\n print(\"{0} is greater than {1}\".format(x, y))\nelse:\n print(\"{0} is *NOT* greater than {1}\".format(x, y))", - "execution_count": 10, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "4 is *NOT* greater than 5\n" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "The elif allows to test multiple conditions." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x = 5\ny = 4\nif (x>y):\n print(\"{0} is greater than {1}\".format(x, y))\nelif (x==y):\n print(\"{0} is equal to {1}\".format(x, y))\nelse:\n print(\"{0} is smaller than {1}\".format(x, y))", - "execution_count": 11, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "5 is greater than 4\n" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "Python will execute the instruction *first* condition that is true." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x = 5\ny = 5\nif (x>=y):\n print(\"{0} is greater than or equal to {1}\".format(x, y))\nelif (x==y):\n print(\"{0} is equal to {1}\".format(x, y))\nelse:\n print(\"{0} is smaller than {1}\".format(x, y))", - "execution_count": 12, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "5 is greater than or equal to 5\n" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "colors = {0: 'green', 1: 'violet', 2: 'blue', 3: ' yellow'}", - "execution_count": 13, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "c = 0\nif c == 0:\n print(colors[0])\nelif c == 0:\n print(colors[1])\nelif c == 2:\n print(colors[2])\nelif c == 3:\n print(colors[3])\nelse:\n print('I dont know.')", - "execution_count": 14, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "green\n" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "if conditions can be nested within each other." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x = 7\ny = 5\nif (x>y):\n if abs(x-y)<1:\n print(\"{0} is greater than {1}\".format(x, y))\n else:\n print(\"{0} is MUCH greater than {1}\".format(x, y))\nelif (x==y):\n print(\"{0} is equal to {1}\".format(x, y))\nelse:\n print(\"{0} is smaller than {1}\".format(x, y))", - "execution_count": 15, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "7 is MUCH greater than 5\n" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "# `for` loops" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "Loops in Python, as in other programming languages, allows on to perform operations multiple times." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "print(list(range(10)))", - "execution_count": 16, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "# sum of the first 10 whole numbers\n\ngauss = 0 # the scalar 'gauss' will store the value of the running sum\nparcelas = [] # the list parcelas will store the value of the running sum at each step\n\nfor i in range(11):\n\n gauss += i\nprint(gauss)\n \nprint(\"1+2+3+...+10 = \" + str(gauss))", - "execution_count": 19, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "55\n1+2+3+...+10 = 55\n" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "# parsing a list\nl = [\"Macro\", \"Micro\", \"Econometria\", 537]\nfor i, v in enumerate(l):\n # the index at each step is assigned to 'i' \n # the value at each stpe is assigned to 'v'\n # both 'i' and 'v' are local, and cannot be accessed outside of the loop\n print(\"{0}: {1}\".format(i, v))\n print(\"---\")", - "execution_count": 28, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "0: Macro\n---\n1: Micro\n---\n2: Econometria\n---\n3: 537\n---\n" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "# if you want to access only the values\nfor v in l:\n print(v)", - "execution_count": 24, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "Macro\nMicro\nEconometria\n537\n" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "# parsing a list\nd = { \"Macro\": [\"eae302\",20], \"Micro\": [\"eae301\",25], \"Econometria\": [\"eae303\",40] }\nfor key, value in d.items():\n print(\"{0}: {1} alunos\".format(key, value[1]))", - "execution_count": 31, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "Macro: 20 alunos\nEconometria: 40 alunos\nMicro: 25 alunos\n" - } - ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "# parsing a string\ns = \"Barcelona\"\nfor x in s:\n print(x)", - "execution_count": 33, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "B\na\nr\nc\ne\nl\no\nn\na\n" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "# while loops" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "Similar to for. Executes a chunck of code until a certain condition is met." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "gauss = 0\ni = 1\n\nwhile i<=100:\n gauss += i\n i += 1\n\nprint(gauss)", - "execution_count": 34, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "5050\n" - } - ] - }, - { - "metadata": { - "collapsed": true - }, - "cell_type": "markdown", - "source": "We know that $lim_{n\\rightarrow +\\infty} \\sum_{i=1}^{n}{\\frac{1}{i}} = +\\infty$. That means that for any positive real $S$, one can find an integer $n$ such that $\\sum_{i=1}^{n}{\\frac{1}{i}} > n$. In the code below, we will find one such $n$ for $S=10$." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "S = 15 # target value for the sum\ns = 0 # variable that will store the value of the running (partial) sum\ni = 1\n\nwhile (sif/else) statements\n", + "- for loops\n", + "- while loops\n", + "- functions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Assim como em outras linguagens de programação o Python tem várias funções de controle de fluxo e estruturas para os programas/scripts desenvolvidos." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Conditional - Condicional" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Uma variável boleana (bool) guarda valores Verdadeiro (True) ou Falso (False).\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bool" ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "# Example 3: sum of infinite series (see problem above)\ndef limit(S):\n\n s = 0\n i = 0\n\n while (s3)\n", + "print(\"x = {0}\".format(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "y = False\n" + ] + } + ], + "source": [ + "y = 2==4\n", + "print(\"y = {0}\".format(y))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "# Example 4: evaluating a polynomial\ndef p(x, coef):\n return sum([c * x**i for i, c in enumerate(coef)])\n\nprint(p(2,(2,1,3)))", - "execution_count": 64, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": "16\n" - } + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x or y" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "coef = (2, 1, 3)\nx = 2", - "execution_count": 56, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "parcelas = [jp*(x**i) for i, jp in enumerate(coef)]\nparcelas", - "execution_count": 60, - "outputs": [ - { - "data": { - "text/plain": "[2, 2, 12]" - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x and y" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" ] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "sum(parcelas)", - "execution_count": 61, - "outputs": [ - { - "data": { - "text/plain": "16" - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "not x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Verdadeiro (True) e Falso (False) se comportam como 1 e 0 respectivamente.\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "n! = n * (n-1)!, if n > 1 and f(1) = 1 " - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "# Example 5: Recursion\ndef factorial(n):\n if n == 1:\n return 1\n else:\n return n * factorial(n-1)", - "execution_count": 34, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "factorial(4)", - "execution_count": 29, - "outputs": [ - { - "data": { - "text/plain": "24" - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x+y" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "https://realpython.com/python-thinking-recursively/" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Exercícios" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "**1.** Da coluna de Marcelo Viana (IMPA) na Falha de São Paulo em 12/08/2018:
\n*Funciona assim: considere um inteiro positivo N qualquer. Se for par, divida por 2. Se for ímpar, multiplique por 3 e some 1. Substitua N pelo resultado obtido e siga repetindo esse procedimento. Por exemplo, se começar com N=7 obterá, sucessivamente, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 e, a partir daí, a sequência só repete os números 4, 2, 1, ciclicamente.*" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def par(x):\n if (x%2 == 0):\n return True\n else:\n return False", - "execution_count": 1, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def Marcelo_Viana(x):\n c = 0\n while x != 1:\n if par(x):\n x = x/2\n else:\n x = 3*x+1\n c += 1\n \n return c", - "execution_count": 7, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "for x in range(1, 15):\n print(\"{0}: {1}\".format(x, Marcelo_Viana(x)))", - "execution_count": 8, - "outputs": [ - { - "output_type": "stream", - "text": "1: 0\n2: 1\n3: 7\n4: 2\n5: 5\n6: 8\n7: 16\n8: 3\n9: 19\n10: 6\n11: 14\n12: 9\n13: 9\n14: 17\n", - "name": "stdout" - } + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x*y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "O exemplo abaixo mostra a sintaxe mais básica de uma estrutura de decisão:\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5 is greater than 4\n" + ] + } + ], + "source": [ + "x = 5\n", + "y = 4\n", + "t = x>y\n", + "if t:\n", + " print(\"{0} is greater than {1}\".format(x, y))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Se a condição ou uma série de condições for satisfeita, o códico identado abaixo é executado, caso contrário não. A identação no Python é feita com quatro (4) espaços simples, e utilizada para determinar o fim da estrutura. O Python é bem rigido com relação a identação do código e os programadores deveriam ser também (LEMBRE-SE: além de um código funcional somos responsáveis por comunicar descobertas e um código limpo e explicado ajuda a comunicação e trabalho em equipe).\n", + "\n", + "Note que algo acontece (o código é executado) somente se a condição for True. Em alguns casos, queremos que outra coisa acontece se a condição for False, nestes casos usamos as cláusulas \"se não\" (else) ou \"então se\" (elif).\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4 is *NOT* greater than 5\n" + ] + } + ], + "source": [ + "x = 4\n", + "y = 5\n", + "if (x>y):\n", + " print(\"{0} is greater than {1}\".format(x, y))\n", + "else:\n", + " print(\"{0} is *NOT* greater than {1}\".format(x, y))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "O elif permite o teste de multiplas condições.\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5 is greater than 4\n" + ] + } + ], + "source": [ + "x = 5\n", + "y = 4\n", + "if (x>y):\n", + " print(\"{0} is greater than {1}\".format(x, y))\n", + "elif (x==y):\n", + " print(\"{0} is equal to {1}\".format(x, y))\n", + "else:\n", + " print(\"{0} is smaller than {1}\".format(x, y))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "O Python vai sempre executar as instruções apenas da **primeira** condição que for verdadeira.\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5 is greater than or equal to 5\n" + ] + } + ], + "source": [ + "x = 5\n", + "y = 5\n", + "if (x>=y):\n", + " print(\"{0} is greater than or equal to {1}\".format(x, y))\n", + "elif (x==y):\n", + " print(\"{0} is equal to {1}\".format(x, y))\n", + "else:\n", + " print(\"{0} is smaller than {1}\".format(x, y))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "colors = {0: 'green', 1: 'violet', 2: 'blue', 3: ' yellow'}" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "green\n" + ] + } + ], + "source": [ + "c = 0\n", + "if c == 0:\n", + " print(colors[0])\n", + "elif c == 0:\n", + " print(colors[1])\n", + "elif c == 2:\n", + " print(colors[2])\n", + "elif c == 3:\n", + " print(colors[3])\n", + "else:\n", + " print('I dont know.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As condições if, podem ser agrupadas uma dentro da outra.\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7 is MUCH greater than 5\n" + ] + } + ], + "source": [ + "x = 7\n", + "y = 5\n", + "if (x>y):\n", + " if abs(x-y)<1:\n", + " print(\"{0} is greater than {1}\".format(x, y))\n", + " else:\n", + " print(\"{0} is MUCH greater than {1}\".format(x, y))\n", + "elif (x==y):\n", + " print(\"{0} is equal to {1}\".format(x, y))\n", + "else:\n", + " print(\"{0} is smaller than {1}\".format(x, y))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# `for` loops - Ciclos condicionais `for`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Loops in Python, as in other programming languages, allows on to perform operations multiple times." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" + ] + } + ], + "source": [ + "print(list(range(10)))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "55\n", + "1+2+3+...+10 = 55\n" + ] + } + ], + "source": [ + "# sum of the first 10 whole numbers\n", + "\n", + "gauss = 0 # the scalar 'gauss' will store the value of the running sum\n", + "parcelas = [] # the list parcelas will store the value of the running sum at each step\n", + "\n", + "for i in range(11):\n", + "\n", + " gauss += i\n", + "print(gauss)\n", + " \n", + "print(\"1+2+3+...+10 = \" + str(gauss))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0: Macro\n", + "---\n", + "1: Micro\n", + "---\n", + "2: Econometria\n", + "---\n", + "3: 537\n", + "---\n" + ] + } + ], + "source": [ + "# parsing a list\n", + "l = [\"Macro\", \"Micro\", \"Econometria\", 537]\n", + "for i, v in enumerate(l):\n", + " # the index at each step is assigned to 'i' \n", + " # the value at each stpe is assigned to 'v'\n", + " # both 'i' and 'v' are local, and cannot be accessed outside of the loop\n", + " print(\"{0}: {1}\".format(i, v))\n", + " print(\"---\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Macro\n", + "Micro\n", + "Econometria\n", + "537\n" + ] + } + ], + "source": [ + "# if you want to access only the values\n", + "for v in l:\n", + " print(v)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Macro: 20 alunos\n", + "Micro: 25 alunos\n", + "Econometria: 40 alunos\n" + ] + } + ], + "source": [ + "# parsing a list\n", + "d = { \"Macro\": [\"eae302\",20], \"Micro\": [\"eae301\",25], \"Econometria\": [\"eae303\",40] }\n", + "for key, value in d.items():\n", + " print(\"{0}: {1} alunos\".format(key, value[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "B\n", + "a\n", + "r\n", + "c\n", + "e\n", + "l\n", + "o\n", + "n\n", + "a\n" + ] + } + ], + "source": [ + "# parsing a string\n", + "s = \"Barcelona\"\n", + "for x in s:\n", + " print(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# `while` loops - Ciclos condicionais `while`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "De forma parecida com o for, o while executa o código enquanto uma condição for atendida.\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5050\n" + ] + } + ], + "source": [ + "gauss = 0\n", + "i = 1\n", + "\n", + "while i<=100:\n", + " gauss += i\n", + " i += 1\n", + "\n", + "print(gauss)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nós sabemos que $lim_{n\\rightarrow +\\infty} \\sum_{i=1}^{n}{\\frac{1}{i}} = +\\infty$. Que significa que para qualquer positivo real $S$, podemos encontrar um inteiro $n$ de tal modo que $\\sum_{i=1}^{n}{\\frac{1}{i}} > n$. No código abaixo, vamos encontrar um tal $n$ para $S=10$.\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n = 1835422\n" + ] + } + ], + "source": [ + "S = 15 # target value for the sum\n", + "s = 0 # variable that will store the value of the running (partial) sum\n", + "i = 1\n", + "\n", + "while (s" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "# Example 1 (trivial): a function that takes as arguments two real numbers and returns their sum\n", + "def my_sum(x, y):\n", + " return x+y" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n" + ] + } + ], + "source": [ + "# testing my_sum\n", + "print(my_sum(2, 1))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "# Example 2: improving my_sum\n", + "def my_sum(x, y=0):\n", + " \"\"\"\n", + " my_sum(x, y=0): takes two integers (x and y) and returns their sum\n", + " \"\"\"\n", + " \n", + " if isinstance(x, (int, float)) and isinstance(y, (int, float)):\n", + " return (x+y, \"{0} + {1} = {2}\".format(x, y, x+y))" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2, '2 + 0 = 2')\n" + ] + } + ], + "source": [ + "# testing my_sum\n", + "s = my_sum(1, 2)\n", + "#print(type(s))\n", + "#print(s[0])\n", + "#print(s[1])\n", + "\n", + "#print(my_sum.__doc__)\n", + "print(my_sum(2))\n", + "#print(my_sum(2, \"Egídio\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'1 + 2 = 3'" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "**2.** Write a Python program to find those numbers which are divisible by 7 and multiple of 5, between 1500 and 2700 (both included)." - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def div7(x):\n if (x%7 == 0):\n return True\n else:\n return False\n \ndef div5(x):\n if (x%5 == 0):\n return True\n else:\n return False\n\nJ = []\nfor x in range(1500, 2700+1):\n if div7(x) and div5(x):\n print(x)\n J.append(x)", - "execution_count": 9, - "outputs": [ - { - "output_type": "stream", - "text": "1505\n1540\n1575\n1610\n1645\n1680\n1715\n1750\n1785\n1820\n1855\n1890\n1925\n1960\n1995\n2030\n2065\n2100\n2135\n2170\n2205\n2240\n2275\n2310\n2345\n2380\n2415\n2450\n2485\n2520\n2555\n2590\n2625\n2660\n2695\n", - "name": "stdout" - } + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "# Example 3: sum of infinite series (see problem above)\n", + "def limit(S):\n", + "\n", + " s = 0\n", + " i = 0\n", + "\n", + " while (s 1 and f(1) = 1 " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "# Example 5: Recursion\n", + "def factorial(n):\n", + " if n == 1:\n", + " return 1\n", + " else:\n", + " return n * factorial(n-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "24" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "**6.** Write a Python program to construct the following pattern, using a nested loop number:
\n1
\n22
\n333
\n4444
\n55555
\n666666
\n7777777
\n88888888
\n999999999" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# Jeito errado\nfor i in range(1, 10):\n print(str(i)*i)", - "execution_count": 30, - "outputs": [ - { - "output_type": "stream", - "text": "1\n22\n333\n4444\n55555\n666666\n7777777\n88888888\n999999999\n", - "name": "stdout" - } + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "factorial(4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Veja esse exemplo (artigo em inglês) de como pensar de forma recursiva usando Python.\n", + "Nele o autor Abhirag Awasthi, mostra como o Papai Noel programaria seus elfos para entregar os presentes de natal em cada casa sem ter de passar as instruções novamente para cada uma das casas ao redor do mundo.\n", + "https://realpython.com/python-thinking-recursively/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercícios" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**1.** Da coluna de Marcelo Viana (IMPA) na Folha de São Paulo em 12/08/2018:
\n", + "*Funciona assim: considere um inteiro positivo N qualquer.*\n", + "- Se for par, divida por 2.\n", + "- Se for ímpar, multiplique por 3 e some 1.\n", + "- Substitua N pelo resultado obtido e siga repetindo esse procedimento.\n", + "\n", + "*Por exemplo, se começar com N=7 obterá, sucessivamente, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 e, a partir daí, a sequência só repete os números 4, 2, 1, ciclicamente.*" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "def par(x):\n", + " if (x%2 == 0):\n", + " return True\n", + " else:\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "def Marcelo_Viana(x):\n", + " c = 0\n", + " while x != 1:\n", + " if par(x):\n", + " x = x/2\n", + " else:\n", + " x = 3*x+1\n", + " c += 1\n", + " \n", + " return c" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1: 0\n", + "2: 1\n", + "3: 7\n", + "4: 2\n", + "5: 5\n", + "6: 8\n", + "7: 16\n", + "8: 3\n", + "9: 19\n", + "10: 6\n", + "11: 14\n", + "12: 9\n", + "13: 9\n", + "14: 17\n" + ] + } + ], + "source": [ + "for x in range(1, 15):\n", + " print(\"{0}: {1}\".format(x, Marcelo_Viana(x)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**2.** Escreva um script em Python para encontrar os números divisíveis por 7 e multiplos de 5, estes devem estar entre 1500 e 2700 (incluindo os dois).\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1505\n", + "1540\n", + "1575\n", + "1610\n", + "1645\n", + "1680\n", + "1715\n", + "1750\n", + "1785\n", + "1820\n", + "1855\n", + "1890\n", + "1925\n", + "1960\n", + "1995\n", + "2030\n", + "2065\n", + "2100\n", + "2135\n", + "2170\n", + "2205\n", + "2240\n", + "2275\n", + "2310\n", + "2345\n", + "2380\n", + "2415\n", + "2450\n", + "2485\n", + "2520\n", + "2555\n", + "2590\n", + "2625\n", + "2660\n", + "2695\n" + ] + } + ], + "source": [ + "def div7(x):\n", + " if (x%7 == 0):\n", + " return True\n", + " else:\n", + " return False\n", + " \n", + "def div5(x):\n", + " if (x%5 == 0):\n", + " return True\n", + " else:\n", + " return False\n", + "\n", + "J = []\n", + "for x in range(1500, 2700+1):\n", + " if div7(x) and div5(x):\n", + " print(x)\n", + " J.append(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**3.** Escreva um código em Python para checar se um triângulo é equilátero, isósceles ou escaleno.\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**4.** Escreva um programa em Python para encontrar a mediana dos valores 3,2 e 1.\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "def mediana(x, y, z):\n", + " l = [x, y, z]\n", + " l.sort()\n", + " return l[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# Jeito certo\nfor i in range(1, 10):\n for j in range(i):\n print(i, end=\"\")\n print(\"\\n\", end=\"\")", - "execution_count": 36, - "outputs": [ - { - "output_type": "stream", - "text": "1\n22\n333\n4444\n55555\n666666\n7777777\n88888888\n999999999\n", - "name": "stdout" - } + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mediana(3, 1, 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**5.** Escreva um programa em Python para calcular a soma e a média de números inteiros (input do usuário). Se o usuário digitar 0, termine o programa.\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "def sumario():\n", + " \n", + " n = int(input(\"digite um número natural: \"))\n", + "\n", + " s = 0\n", + " for i in range(n):\n", + " x = float(input(\"digite um número: \"))\n", + " s += x\n", + " \n", + " return (s, s/n)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "digite um número natural: 2\n", + "digite um número: 53\n", + "digite um número: 22\n" + ] + }, + { + "data": { + "text/plain": [ + "(75.0, 37.5)" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "**7.** Write a Python program to check the validity of password input by users.

\nValidation :

\n\nAt least 1 letter between [a-z] and 1 letter between [A-Z].
\nAt least 1 number between [0-9].
\nAt least 1 character from [$#@].
\nMinimum length 6 characters.
\nMaximum length 16 characters." - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# At least 1 character from [$#@]. \ndef cond_0(s):\n r = {\"$\", \"#\", \"@\"}\n if r.intersection(set(s)) == set():\n return False\n else:\n return True", - "execution_count": 51, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# Minimum length 6 characters & Maximum length 16 characters.\ndef cond_1(s):\n if len(s) >= 6 and len(s) <= 16:\n return True\n else:\n return False", - "execution_count": 57, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# At least 1 letter between [a-z] and 1 letter between [A-Z]. \ndef cond_2(s):\n if s.lower() == s:\n return False\n elif s.upper() == s:\n return False\n else:\n return True", - "execution_count": 3, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# At least 1 number between [0-9]\ndef cond_3(s):\n for i in range(0, 10):\n if str(i) in s:\n return True\n return False", - "execution_count": 19, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def password(s):\n if cond_0(s) and cond_1(s) and cond_2(s) and cond_3(s):\n return True\n else:\n return False", - "execution_count": 23, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "name": "python3", - "display_name": "Python 3", - "language": "python" - }, - "language_info": { - "mimetype": "text/x-python", - "nbconvert_exporter": "python", - "name": "python", - "pygments_lexer": "ipython3", - "version": "3.5.4", - "file_extension": ".py", - "codemirror_mode": { - "version": 3, - "name": "ipython" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} \ No newline at end of file + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sumario()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**6.** Escreva um programa em Python que construa o resultado abaixo, usando ciclos condicionais agrupados:
\n", + "1
\n", + "22
\n", + "333
\n", + "4444
\n", + "55555
\n", + "666666
\n", + "7777777
\n", + "88888888
\n", + "999999999" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "22\n", + "333\n", + "4444\n", + "55555\n", + "666666\n", + "7777777\n", + "88888888\n", + "999999999\n" + ] + } + ], + "source": [ + "# Jeito errado\n", + "for i in range(1, 10):\n", + " print(str(i)*i)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "22\n", + "333\n", + "4444\n", + "55555\n", + "666666\n", + "7777777\n", + "88888888\n", + "999999999\n" + ] + } + ], + "source": [ + "# Jeito certo\n", + "for i in range(1, 10):\n", + " for j in range(i):\n", + " print(i, end=\"\")\n", + " print(\"\\n\", end=\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**7.** Escreva um programa em Python para validar uma senha inserida pelo usuário.

\n", + "A senha deve conter:
\n", + "\n", + "Pelo menos 1 letra entre [a-z] e 1 letra entre [A-Z].
\n", + "Pelo menos 1 número entre [0-9].
\n", + "Pelo menos 1 destes caracteres especiais [$#@].
\n", + "Mínimo de 6 caracters.
\n", + "Máximo de 16 caracters.\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "# At least 1 character from [$#@]. \n", + "def cond_0(s):\n", + " r = {\"$\", \"#\", \"@\"}\n", + " if r.intersection(set(s)) == set():\n", + " return False\n", + " else:\n", + " return True" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "# Minimum length 6 characters & Maximum length 16 characters.\n", + "def cond_1(s):\n", + " if len(s) >= 6 and len(s) <= 16:\n", + " return True\n", + " else:\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "# At least 1 letter between [a-z] and 1 letter between [A-Z]. \n", + "def cond_2(s):\n", + " if s.lower() == s:\n", + " return False\n", + " elif s.upper() == s:\n", + " return False\n", + " else:\n", + " return True" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "# At least 1 number between [0-9]\n", + "def cond_3(s):\n", + " for i in range(0, 10):\n", + " if str(i) in s:\n", + " return True\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "def password(s):\n", + " if cond_0(s) and cond_1(s) and cond_2(s) and cond_3(s):\n", + " return True\n", + " else:\n", + " return False" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/0-pre-requisitos/2-math/algebra_linear_com_numpy.ipynb b/0-pre-requisitos/2-math/algebra_linear_com_numpy.ipynb old mode 100644 new mode 100755 index 4d8eb7c..54dc2d4 --- a/0-pre-requisitos/2-math/algebra_linear_com_numpy.ipynb +++ b/0-pre-requisitos/2-math/algebra_linear_com_numpy.ipynb @@ -1,1945 +1,3546 @@ { - "cells": [ - { - "metadata": {}, - "cell_type": "markdown", - "source": "# Numpy" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import numpy as np", - "execution_count": 33, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Why `numpy`?" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import timeit", - "execution_count": 2, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "l = range(1000)\n%timeit [i**2 for i in l]", - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "text": "311 µs ± 6.69 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", - "name": "stdout" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Algebra Linear" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Conceitos de algebra linear https://youtu.be/Y0ZyUhi0khY ou https://youtu.be/D4ewzYFM8LY" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Biblioteca Numpy" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Porque usar `numpy`? \n", + "\n", + "Utilizando a biblioteca timeit conseguimos ver o tempo de processamento para o código Python criado e isso deixa claro o aumento de performance quando estamos usando a biblioteca Numpy." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import timeit" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "379 µs ± 4.87 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" + ] + } + ], + "source": [ + "l = range(1000)\n", + "%timeit [i**2 for i in l]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.69 µs ± 37.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n" + ] + } + ], + "source": [ + "a = np.arange(1000)\n", + "%timeit a**2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Arrays - Matrizes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Um `ndarray` é um contêiner multidimensional (geralmente de tamanho fixo) de itens do mesmo tipo e tamanho. O número de dimensões e itens em uma matriz é definido por sua forma, que é uma tupla de N inteiros positivos que especificam os tamanhos de cada dimensão. O tipo de itens na matriz é especificado por um objeto de tipo de dados separado (`dtype`), um dos quais está associado a cada ndarray.\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "a = np.arange(1000)\n%timeit a**2", - "execution_count": 4, - "outputs": [ - { - "output_type": "stream", - "text": "1.66 µs ± 47.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n", - "name": "stdout" - } + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y = np.ndarray(shape = (1, 4))\n", + "type(y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Criando uma matriz a partir de uma lista:\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6]])" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Arrays" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "An `ndarray` is a (usually fixed-size) multidimensional container of items of the same type and size. The number of dimensions and items in an array is defined by its `shape`, which is a tuple of N positive integers that specify the sizes of each dimension. The type of items in the array is specified by a separate data-type object (`dtype`), one of which is associated with each ndarray." - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "y = np.ndarray(shape = (1, 4))\ntype(y)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "Creating an array from a list:" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x = np.array([[1, 2, 3], [4, 5, 6]], np.int)\nx", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "type(x)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x.shape", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x.ndim", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x.dtype", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "Example of a 3-dimensional array" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "z = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]], np.int)\nz", - "execution_count": 5, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 5, - "data": { - "text/plain": "array([[[ 1, 2, 3],\n [ 4, 5, 6]],\n\n [[ 7, 8, 9],\n [10, 11, 12]]])" - }, - "metadata": {} - } + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = np.array([[1, 2, 3], [4, 5, 6]], np.int)\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "print(\"Array has {0} dimensions:\".format(z.ndim))\nfor d, s in enumerate(z.shape):\n print(\"-dimension {0} has size {1}.\".format(d, s))", - "execution_count": 6, - "outputs": [ - { - "output_type": "stream", - "text": "Array has 3 dimensions:\n-dimension 0 has size 2.\n-dimension 1 has size 2.\n-dimension 2 has size 3.\n", - "name": "stdout" - } + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2, 3)" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Changing size (or shape)" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x.reshape(3, 2)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x.resize(3, 2)\nx", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "type(x.shape)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z = np.array([1, 2, 3, 4, 5, 6]).reshape((2, 3))\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Creating arrays" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### `np.empty`" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x = np.empty(5)\nx", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x.shape", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x.resize((5, 1))\nprint(x.shape)\nx", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "y = np.empty((5, 1))\ny", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### `np.linspace`\n" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x = np.linspace(2, 10, 3)\nx", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "x.shape", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### `np.identity`" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z = np.identity(3)\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "`np.eye(3)` would produce the same outcome." - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### `np.ones`" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z = np.ones(3)\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.shape", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z = np.ones(3, dtype=int)\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "d = np.array([0, 1, 1, 0, 0], dtype=bool)\nd", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Accessing elements of an array" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z = np.linspace(1, 9, 9)\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.shape", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z[0]", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z[-1]", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z[2:6]", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z = z.reshape(3, 3)\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.shape", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z[0:1, :]", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z[0:1]", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z[1:, 1:]", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "rows = [0, 1]\nz[rows, :]", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z[:] = 10\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Array Methods" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z = np.array([2, 1, 4, 3], dtype=float)\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "print(dir(z))", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.clip(1, 2)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a = np.array([[1, 2], [3, 4], [5, 6]])", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "a.compress([False, True, True], axis=0)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "help(np.where)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "help(np.size)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### sorting" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.argsort()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.sort()\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### statistics" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.sum()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.mean()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.var()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.std()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "z.max()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z.argmax()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z.cumsum()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z.cumprod()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z.shape = (2, 2)\nz", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z.T", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "np.searchsorted([2,3,1,4,5], 2.5)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "np.searchsorted([1,2,3,4,5], 3, side='right')", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "np.searchsorted([1,2,3,4,5], [-10, 10, 2, 3])", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a = np.array([1, 2, 3, 4])\nb = np.array([5, 6, 7, 8])\na + b", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a * b", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a + 10", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a * 10", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "A = np.ones((2, 2))\nB = np.ones((2, 2))\nA + B", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "A + 10", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "A", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "B", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "A * B", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "A @ B", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "A = np.array((1, 2))\nA", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "A.shape", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "B = np.array((10, 20))\nA @ B", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "A = np.array(((1, 2), (3, 4)))\nA", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "A @ (0, 1)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "np.dot(a, b)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a = np.array([42, 44])\na", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a[-1] = 0\na", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### *Broadcasting*" - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]]) \na", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "b = np.array([1.0,2.0,3.0])\nb", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a+b", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "* Arrays have exactly the same shape.\n\n* Arrays have the same number of dimensions and the length of each dimension is either a common length or 1.\n\n* Array having too few dimensions can have its shape prepended with a dimension of length 1, so that the above stated property is true." - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a = np.random.randn(3)\na", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "b = a", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "b", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "b[0] = 0.0\na", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a = np.random.randn(3)\na", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "b = np.copy(a)\nb", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "b[:] = 1\nb", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "a", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z = np.array([1, 2, 3])\nnp.sin(z)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "n = len(z)\ny = np.empty(n)\nfor i in range(n):\n y[i] = np.sin(z[i])", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "y", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "(1 / np.sqrt(2 * np.pi)) * np.exp(- 0.5 * z**2)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "x = np.random.randn(4)\nx", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "np.where(x > 0, 1, 0)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "def f(x): return 1 if x > 0 else 0\n\nf = np.vectorize(f)\nf(x)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z = np.array([2, 3])\ny = np.array([2, 3])\nz == y", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "y[0] = 5\nz == y", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z != y", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "z > 3", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true, - "trusted": false - }, - "cell_type": "code", - "source": "b = z > 3\nb", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Matrix Algebra ( `linalg`)" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "from numpy import linalg as lg", - "execution_count": 8, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "A = np.array([[1, 2], [3, 4]])", - "execution_count": 9, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "a = np.array([[1,2],[3,4]]) \nb = np.array([[5,6],[7,8]])", - "execution_count": 10, - "outputs": [] - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "print(a)\nprint(b)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "np.concatenate((a,b))", - "execution_count": 11, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 11, - "data": { - "text/plain": "array([[1, 2],\n [3, 4],\n [5, 6],\n [7, 8]])" - }, - "metadata": {} - } + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('int64')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.dtype" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exemplo de uma matriz tridimencional:\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[ 1, 2, 3],\n", + " [ 4, 5, 6]],\n", + "\n", + " [[ 7, 8, 9],\n", + " [10, 11, 12]]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]], np.int)\n", + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Array has 3 dimensions:\n", + "-dimension 0 has size 2.\n", + "-dimension 1 has size 2.\n", + "-dimension 2 has size 3.\n" + ] + } + ], + "source": [ + "print(\"Array has {0} dimensions:\".format(z.ndim))\n", + "for d, s in enumerate(z.shape):\n", + " print(\"-dimension {0} has size {1}.\".format(d, s))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Changing size (or shape) - Mudando o tamanho ou forma da matriz" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6]])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2],\n", + " [3, 4],\n", + " [5, 6]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.reshape(3, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6]])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2],\n", + " [3, 4],\n", + " [5, 6]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.resize(3, 2)\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tuple" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(x.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6]])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.array([1, 2, 3, 4, 5, 6]).reshape((2, 3))\n", + "z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating arrays - Criando Matrizes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `np.empty`" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0., 0., 0., 0., 0.])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = np.empty(5)\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5,)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(5, 1)\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[0.],\n", + " [0.],\n", + " [0.],\n", + " [0.],\n", + " [0.]])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.resize((5, 1))\n", + "print(x.shape)\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.],\n", + " [0.],\n", + " [0.],\n", + " [0.],\n", + " [0.]])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y = np.empty((5, 1))\n", + "y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `np.linspace`\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 2., 6., 10.])" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = np.linspace(2, 10, 3)\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3,)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `np.identity`" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0., 0.],\n", + " [0., 1., 0.],\n", + " [0., 0., 1.]])" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.identity(3)\n", + "z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`np.eye(3)` would produce the same outcome." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `np.ones`" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1., 1., 1.])" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.ones(3)\n", + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3,)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 1, 1])" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.ones(3, dtype=int)\n", + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False, True, True, False, False])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d = np.array([0, 1, 1, 0, 0], dtype=bool)\n", + "d" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Accessing elements of an array - Acessando elementos da matriz" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1., 2., 3., 4., 5., 6., 7., 8., 9.])" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.linspace(1, 9, 9)\n", + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(9,)" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9.0" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z[-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3., 4., 5., 6.])" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z[2:6]" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 2., 3.],\n", + " [4., 5., 6.],\n", + " [7., 8., 9.]])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = z.reshape(3, 3)\n", + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3, 3)" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 2., 3.]])" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z[0:1, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 2., 3.]])" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z[0:1]" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[5., 6.],\n", + " [8., 9.]])" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z[1:, 1:]" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 2., 3.],\n", + " [4., 5., 6.]])" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rows = [0, 1]\n", + "z[rows, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[10., 10., 10.],\n", + " [10., 10., 10.],\n", + " [10., 10., 10.]])" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z[:] = 10\n", + "z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Array Methods - Métodos para Matrizes" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2., 1., 4., 3.])" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.array([2, 1, 4, 3], dtype=float)\n", + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['T', '__abs__', '__add__', '__and__', '__array__', '__array_finalize__', '__array_interface__', '__array_prepare__', '__array_priority__', '__array_struct__', '__array_ufunc__', '__array_wrap__', '__bool__', '__class__', '__complex__', '__contains__', '__copy__', '__deepcopy__', '__delattr__', '__delitem__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__iand__', '__ifloordiv__', '__ilshift__', '__imatmul__', '__imod__', '__imul__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__ior__', '__ipow__', '__irshift__', '__isub__', '__iter__', '__itruediv__', '__ixor__', '__le__', '__len__', '__lshift__', '__lt__', '__matmul__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmatmul__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__setitem__', '__setstate__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__xor__', 'all', 'any', 'argmax', 'argmin', 'argpartition', 'argsort', 'astype', 'base', 'byteswap', 'choose', 'clip', 'compress', 'conj', 'conjugate', 'copy', 'ctypes', 'cumprod', 'cumsum', 'data', 'diagonal', 'dot', 'dtype', 'dump', 'dumps', 'fill', 'flags', 'flat', 'flatten', 'getfield', 'imag', 'item', 'itemset', 'itemsize', 'max', 'mean', 'min', 'nbytes', 'ndim', 'newbyteorder', 'nonzero', 'partition', 'prod', 'ptp', 'put', 'ravel', 'real', 'repeat', 'reshape', 'resize', 'round', 'searchsorted', 'setfield', 'setflags', 'shape', 'size', 'sort', 'squeeze', 'std', 'strides', 'sum', 'swapaxes', 'take', 'tobytes', 'tofile', 'tolist', 'tostring', 'trace', 'transpose', 'var', 'view']\n" + ] + } + ], + "source": [ + "print(dir(z))" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2., 1., 2., 2.])" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.clip(1, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "a = np.array([[1, 2], [3, 4], [5, 6]])" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[3, 4],\n", + " [5, 6]])" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.compress([False, True, True], axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on built-in function where in module numpy.core.multiarray:\n", + "\n", + "where(...)\n", + " where(condition, [x, y])\n", + " \n", + " Return elements, either from `x` or `y`, depending on `condition`.\n", + " \n", + " If only `condition` is given, return ``condition.nonzero()``.\n", + " \n", + " Parameters\n", + " ----------\n", + " condition : array_like, bool\n", + " When True, yield `x`, otherwise yield `y`.\n", + " x, y : array_like, optional\n", + " Values from which to choose. `x`, `y` and `condition` need to be\n", + " broadcastable to some shape.\n", + " \n", + " Returns\n", + " -------\n", + " out : ndarray or tuple of ndarrays\n", + " If both `x` and `y` are specified, the output array contains\n", + " elements of `x` where `condition` is True, and elements from\n", + " `y` elsewhere.\n", + " \n", + " If only `condition` is given, return the tuple\n", + " ``condition.nonzero()``, the indices where `condition` is True.\n", + " \n", + " See Also\n", + " --------\n", + " nonzero, choose\n", + " \n", + " Notes\n", + " -----\n", + " If `x` and `y` are given and input arrays are 1-D, `where` is\n", + " equivalent to::\n", + " \n", + " [xv if c else yv for (c,xv,yv) in zip(condition,x,y)]\n", + " \n", + " Examples\n", + " --------\n", + " >>> np.where([[True, False], [True, True]],\n", + " ... [[1, 2], [3, 4]],\n", + " ... [[9, 8], [7, 6]])\n", + " array([[1, 8],\n", + " [3, 4]])\n", + " \n", + " >>> np.where([[0, 1], [1, 0]])\n", + " (array([0, 1]), array([1, 0]))\n", + " \n", + " >>> x = np.arange(9.).reshape(3, 3)\n", + " >>> np.where( x > 5 )\n", + " (array([2, 2, 2]), array([0, 1, 2]))\n", + " >>> x[np.where( x > 3.0 )] # Note: result is 1D.\n", + " array([ 4., 5., 6., 7., 8.])\n", + " >>> np.where(x < 5, x, -1) # Note: broadcasting.\n", + " array([[ 0., 1., 2.],\n", + " [ 3., 4., -1.],\n", + " [-1., -1., -1.]])\n", + " \n", + " Find the indices of elements of `x` that are in `goodvalues`.\n", + " \n", + " >>> goodvalues = [3, 4, 7]\n", + " >>> ix = np.isin(x, goodvalues)\n", + " >>> ix\n", + " array([[False, False, False],\n", + " [ True, True, False],\n", + " [False, True, False]])\n", + " >>> np.where(ix)\n", + " (array([1, 1, 2]), array([0, 1, 1]))\n", + "\n" + ] + } + ], + "source": [ + "help(np.where)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function size in module numpy.core.fromnumeric:\n", + "\n", + "size(a, axis=None)\n", + " Return the number of elements along a given axis.\n", + " \n", + " Parameters\n", + " ----------\n", + " a : array_like\n", + " Input data.\n", + " axis : int, optional\n", + " Axis along which the elements are counted. By default, give\n", + " the total number of elements.\n", + " \n", + " Returns\n", + " -------\n", + " element_count : int\n", + " Number of elements along the specified axis.\n", + " \n", + " See Also\n", + " --------\n", + " shape : dimensions of array\n", + " ndarray.shape : dimensions of array\n", + " ndarray.size : number of elements in array\n", + " \n", + " Examples\n", + " --------\n", + " >>> a = np.array([[1,2,3],[4,5,6]])\n", + " >>> np.size(a)\n", + " 6\n", + " >>> np.size(a,1)\n", + " 3\n", + " >>> np.size(a,0)\n", + " 2\n", + "\n" + ] + } + ], + "source": [ + "help(np.size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### sorting - ordenação" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 0, 3, 2])" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.argsort()" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1., 2., 3., 4.])" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.sort()\n", + "z" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### statistics - estatísticos" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10.0" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.5" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.25" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.var()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.118033988749895" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.std()" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4.0" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.max()" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1., 2., 3., 4.])" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.argmax()" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1., 3., 6., 10.])" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.cumsum()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1., 2., 6., 24.])" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.cumprod()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 2.],\n", + " [3., 4.]])" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.shape = (2, 2)\n", + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 3.],\n", + " [2., 4.]])" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z.T" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.searchsorted([2,3,1,4,5], 2.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.searchsorted([1,2,3,4,5], 3, side='right')" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 5, 1, 2])" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.searchsorted([1,2,3,4,5], [-10, 10, 2, 3])" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 6, 8, 10, 12])" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.array([1, 2, 3, 4])\n", + "b = np.array([5, 6, 7, 8])\n", + "a + b" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 5, 12, 21, 32])" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a * b" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([11, 12, 13, 14])" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a + 10" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([10, 20, 30, 40])" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a * 10" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2., 2.],\n", + " [2., 2.]])" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = np.ones((2, 2))\n", + "B = np.ones((2, 2))\n", + "A + B" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[11., 11.],\n", + " [11., 11.]])" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A + 10" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 1.],\n", + " [1., 1.]])" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 1.],\n", + " [1., 1.]])" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 1.],\n", + " [1., 1.]])" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A * B" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2., 2.],\n", + " [2., 2.]])" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A @ B" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 2])" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = np.array((1, 2))\n", + "A" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2,)" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "50" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B = np.array((10, 20))\n", + "A @ B" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2],\n", + " [3, 4]])" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = np.array(((1, 2), (3, 4)))\n", + "A" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 4])" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A @ (0, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.dot(a, b)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([42, 44])" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.array([42, 44])\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([42, 0])" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a[-1] = 0\n", + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### *Broadcasting*" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0., 0., 0.],\n", + " [10., 10., 10.],\n", + " [20., 20., 20.],\n", + " [30., 30., 30.]])" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]]) \n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1., 2., 3.])" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = np.array([1.0,2.0,3.0])\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1., 2., 3.],\n", + " [11., 12., 13.],\n", + " [21., 22., 23.],\n", + " [31., 32., 33.]])" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a+b" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Matrizes têm exatamente a mesma forma.\n", + "\n", + "* Matrizes têm o mesmo número de dimensões e o comprimento de cada dimensão é um comprimento comum ou 1.\n", + "\n", + "* Matriz com poucas dimensões pode ter sua forma prefixada com uma dimensão de comprimento 1, de modo que a propriedade declarada acima seja verdadeira.\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.20676523, -0.33305647, -1.72249529])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "np.concatenate((a,b), axis = 1)", - "execution_count": 12, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 12, - "data": { - "text/plain": "array([[1, 2, 5, 6],\n [3, 4, 7, 8]])" - }, - "metadata": {} - } + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.random.randn(3)\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [], + "source": [ + "b = a" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.20676523, -0.33305647, -1.72249529])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "lg.det(A)", - "execution_count": 13, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 13, - "data": { - "text/plain": "-2.0000000000000004" - }, - "metadata": {} - } + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0. , -0.33305647, -1.72249529])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "lg.inv(A)", - "execution_count": 14, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 14, - "data": { - "text/plain": "array([[-2. , 1. ],\n [ 1.5, -0.5]])" - }, - "metadata": {} - } + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b[0] = 0.0\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.2052576 , 0.5882943 , -0.94636507])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "lg.matrix_rank(A)", - "execution_count": 15, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 15, - "data": { - "text/plain": "2" - }, - "metadata": {} - } + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.random.randn(3)\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.2052576 , 0.5882943 , -0.94636507])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "B = np.array([[1, 2, 3], [4, 5, 6]])\nB", - "execution_count": 19, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 19, - "data": { - "text/plain": "array([[1, 2, 3],\n [4, 5, 6]])" - }, - "metadata": {} - } + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = np.copy(a)\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1., 1., 1.])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "lg.matrix_rank(B)", - "execution_count": 21, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 21, - "data": { - "text/plain": "2" - }, - "metadata": {} - } + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b[:] = 1\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.2052576 , 0.5882943 , -0.94636507])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "A = np.array([1, 2, 4, 5]).reshape(2, 2)\nb = np.array([3, 6]).reshape(2, 1)\nlg.inv(A) @ b", - "execution_count": 26, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 26, - "data": { - "text/plain": "array([[-1.],\n [ 2.]])" - }, - "metadata": {} - } + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.84147098, 0.90929743, 0.14112001])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "lg.solve(A, b)", - "execution_count": 33, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 33, - "data": { - "text/plain": "array([[-1.],\n [ 2.]])" - }, - "metadata": {} - } + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.array([1, 2, 3])\n", + "np.sin(z)" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [], + "source": [ + "n = len(z)\n", + "y = np.empty(n)\n", + "for i in range(n):\n", + " y[i] = np.sin(z[i])" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.84147098, 0.90929743, 0.14112001])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "print(dir(lg))", - "execution_count": 31, - "outputs": [ - { - "output_type": "stream", - "text": "['LinAlgError', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_umath_linalg', 'absolute_import', 'cholesky', 'cond', 'det', 'division', 'eig', 'eigh', 'eigvals', 'eigvalsh', 'info', 'inv', 'lapack_lite', 'linalg', 'lstsq', 'matrix_power', 'matrix_rank', 'multi_dot', 'norm', 'pinv', 'print_function', 'qr', 'slogdet', 'solve', 'svd', 'tensorinv', 'tensorsolve', 'test']\n", - "name": "stdout" - } + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 2, 3])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "lg.norm(A)", - "execution_count": 34, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 34, - "data": { - "text/plain": "6.782329983125268" - }, - "metadata": {} - } + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.24197072, 0.05399097, 0.00443185])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "lg.norm((3, 4))", - "execution_count": 35, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 35, - "data": { - "text/plain": "5.0" - }, - "metadata": {} - } + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(1 / np.sqrt(2 * np.pi)) * np.exp(- 0.5 * z**2)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-1.27999742, -0.18235141, 0.66829548, 0.41627219])" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### Exercício 0: Input-Output Matrix" - }, - { - "metadata": { - "trusted": true, - "scrolled": true - }, - "cell_type": "code", - "source": "ls /home/nbuser/library", - "execution_count": 19, - "outputs": [ - { - "output_type": "stream", - "text": "Aula_01.ipynb Aula_03.ipynb \u001b[0m\u001b[01;34mdata\u001b[0m/\r\nAula_02.ipynb Aula_04.ipynb sorteio.ipynb\r\n", - "name": "stdout" - } + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = np.random.randn(4)\n", + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 0, 1, 1])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "ls /home/nbuser/library/data", - "execution_count": 20, - "outputs": [ - { - "output_type": "stream", - "text": "alunos.csv tech_coef.csv\r\n", - "name": "stdout" - } + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.where(x > 0, 1, 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 0, 1, 1])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "A = np.loadtxt('/home/nbuser/library/data/tech_coef.csv')", - "execution_count": 21, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "A.shape", - "execution_count": 22, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 22, - "data": { - "text/plain": "(12, 12)" - }, - "metadata": {} - } + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def f(x): return 1 if x > 0 else 0\n", + "\n", + "f = np.vectorize(f)\n", + "f(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ True, True])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "sectors = { \"Agropecuária\": 0,\n \"Indústria extrativa\": 1,\n \"Indústria de transformação\": 2,\n \"Utilidades\": 3,\n \"Construção civil\": 4,\n \"Comércio\": 5,\n \"Transporte\": 6,\n \"Serviços de informação\": 7,\n \"Intermediação financeira\": 8,\n \"Atividades imobiliárias\": 9,\n \"Outros serviços\": 10,\n \"Administração pública\": 11 }", - "execution_count": 27, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "impact = []\nsec = []\nfor sector, id in sectors.items():\n i = \"{0:0.4f}\".format(A[:,id].sum())\n print(sector, \": \", i, sep='')\n impact.append(i)\n sec.append(sector)", - "execution_count": 26, - "outputs": [ - { - "output_type": "stream", - "text": "Indústria de transformação: 0.6058\nComércio: 0.3078\nAtividades imobiliárias: 0.0580\nServiços de informação: 0.4191\nUtilidades: 0.4452\nTransporte: 0.4553\nOutros serviços: 0.3284\nConstrução civil: 0.4399\nAgropecuária: 0.3520\nAdministração pública: 0.2490\nIndústria extrativa: 0.3419\nIntermediação financeira: 0.3296\n", - "name": "stdout" - } + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z = np.array([2, 3])\n", + "y = np.array([2, 3])\n", + "z == y" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False, True])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\npos = np.arange(12)\n\nplt.barh(pos, impact, align='center', height=.8, color='r')\nplt.yticks(pos, sec)\nplt.xlim((0, .7))\nfor i, v in enumerate(impact):\n l = \"{0:.2f}\".format(float(v))\n plt.text(float(v)+.01, i-.25, \"{0:.2f}\".format(float(v)), color='black', fontweight='bold')\nplt.show()", - "execution_count": 32, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": "" - }, - "metadata": {} - } + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y[0] = 5\n", + "z == y" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ True, False])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "L = np.linalg.inv(np.eye(len(sectors))-A)\nd = np.zeros(12).reshape(12, 1)\nd[2, 0] = 1\n\nimpact = L@d\npos = np.arange(12)\n\nplt.barh(pos, impact, align='center', height=.8, color='r')\nplt.yticks(pos, sec)\nplt.xlim((0,1.7))\nfor i, v in enumerate(impact):\n l = \"{0:.2f}\".format(float(v))\n plt.text(float(v)+.01, i-.25, \"{0:.2f}\".format(float(v)), color='black', fontweight='bold')\nplt.show()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "impact = []\nsec = []\nfor sector, id in sectors.items():\n i = \"{0:0.4f}\".format(L[:,id].sum())\n print(sector, \": \", i, sep='')\n impact.append(i)\n sec.append(sector)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "pos = np.arange(12)\n\nplt.barh(pos, impact, align='center', height=.8, color='r')\nplt.yticks(pos, sec)\nplt.xlim((0,2.3))\nfor i, v in enumerate(impact):\n l = \"{0:.2f}\".format(float(v))\n plt.text(float(v)+.01, i-.25, \"{0:.2f}\".format(float(v)), color='black', fontweight='bold')\nplt.show()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Random arrays (`random`)" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "from numpy import random as rd", - "execution_count": 34, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "rd.rand(3, 2)", - "execution_count": 37, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 37, - "data": { - "text/plain": "array([[0.41275145, 0.92513523],\n [0.147698 , 0.79403711],\n [0.86205034, 0.75643253]])" - }, - "metadata": {} - } + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z != y" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False, False])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "np.random.rand(3, 2)", - "execution_count": 38, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 38, - "data": { - "text/plain": "array([[0.42902137, 0.17576067],\n [0.5861823 , 0.55467978],\n [0.14108171, 0.39161468]])" - }, - "metadata": {} - } + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z > 3" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False, False])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "rd.seed(1910)\nnp.random.rand(3, 2)", - "execution_count": 39, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 39, - "data": { - "text/plain": "array([[0.0504399 , 0.21857161],\n [0.18244948, 0.23708749],\n [0.2995859 , 0.56284799]])" - }, - "metadata": {} - } + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b = z > 3\n", + "b" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Matrix Algebra ( `linalg`) - Algebra Matricial" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy import linalg as lg" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [], + "source": [ + "A = np.array([[1, 2], [3, 4]])" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [], + "source": [ + "a = np.array([[1,2],[3,4]]) \n", + "b = np.array([[5,6],[7,8]])" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1 2]\n", + " [3 4]]\n", + "[[5 6]\n", + " [7 8]]\n" + ] + } + ], + "source": [ + "print(a)\n", + "print(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2],\n", + " [3, 4],\n", + " [5, 6],\n", + " [7, 8]])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "rd.seed(1910)\nnp.random.rand(3, 2)", - "execution_count": 40, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 40, - "data": { - "text/plain": "array([[0.0504399 , 0.21857161],\n [0.18244948, 0.23708749],\n [0.2995859 , 0.56284799]])" - }, - "metadata": {} - } + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.concatenate((a,b))" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 5, 6],\n", + " [3, 4, 7, 8]])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "rd.randn(2, 1)", - "execution_count": 41, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 41, - "data": { - "text/plain": "array([[ 1.54773602],\n [-2.05072622]])" - }, - "metadata": {} - } + }, + "execution_count": 113, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.concatenate((a,b), axis = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-2.0000000000000004" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "rd.randint(10, 20, size=5, dtype=np.int)", - "execution_count": 42, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 42, - "data": { - "text/plain": "array([15, 19, 18, 16, 12])" - }, - "metadata": {} - } + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lg.det(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-2. , 1. ],\n", + " [ 1.5, -0.5]])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "pop = np.linspace(0, 99, 100)", - "execution_count": 44, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "pop", - "execution_count": 45, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 45, - "data": { - "text/plain": "array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,\n 13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 25.,\n 26., 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38.,\n 39., 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., 50., 51.,\n 52., 53., 54., 55., 56., 57., 58., 59., 60., 61., 62., 63., 64.,\n 65., 66., 67., 68., 69., 70., 71., 72., 73., 74., 75., 76., 77.,\n 78., 79., 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90.,\n 91., 92., 93., 94., 95., 96., 97., 98., 99.])" - }, - "metadata": {} - } + }, + "execution_count": 115, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lg.inv(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "np.arange(100)", - "execution_count": 46, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 46, - "data": { - "text/plain": "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,\n 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,\n 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,\n 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])" - }, - "metadata": {} - } + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lg.matrix_rank(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6]])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "rd.choice(pop, size=(10, 1), replace=False)", - "execution_count": 48, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 48, - "data": { - "text/plain": "array([[42.],\n [53.],\n [68.],\n [82.],\n [45.],\n [27.],\n [79.],\n [56.],\n [52.],\n [31.]])" - }, - "metadata": {} - } + }, + "execution_count": 117, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "B = np.array([[1, 2, 3], [4, 5, 6]])\n", + "B" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "rd.shuffle(pop)\npop", - "execution_count": 49, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 49, - "data": { - "text/plain": "array([75., 66., 17., 56., 11., 54., 63., 40., 35., 36., 20., 48., 21.,\n 42., 84., 72., 14., 67., 65., 94., 26., 80., 13., 3., 73., 88.,\n 9., 85., 96., 77., 62., 24., 70., 61., 33., 43., 23., 38., 31.,\n 59., 4., 60., 78., 7., 15., 30., 82., 37., 90., 34., 76., 41.,\n 81., 58., 87., 32., 5., 74., 92., 64., 45., 25., 6., 69., 91.,\n 46., 51., 86., 55., 95., 47., 28., 12., 19., 83., 93., 10., 44.,\n 29., 39., 52., 89., 53., 2., 18., 79., 16., 1., 49., 27., 71.,\n 57., 0., 98., 22., 50., 68., 97., 99., 8.])" - }, - "metadata": {} - } + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lg.matrix_rank(B)" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.],\n", + " [ 2.]])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "rd.permutation(pop)", - "execution_count": 50, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 50, - "data": { - "text/plain": "array([71., 8., 43., 70., 64., 4., 16., 67., 13., 79., 41., 86., 5.,\n 73., 27., 60., 39., 40., 65., 1., 35., 51., 45., 80., 7., 26.,\n 81., 33., 63., 38., 28., 74., 76., 94., 50., 99., 59., 69., 34.,\n 25., 62., 15., 31., 19., 78., 95., 84., 44., 96., 91., 85., 23.,\n 83., 36., 75., 21., 66., 98., 72., 90., 56., 93., 22., 55., 54.,\n 97., 42., 29., 48., 14., 11., 17., 12., 18., 32., 68., 77., 6.,\n 3., 53., 30., 61., 37., 88., 0., 46., 87., 9., 52., 20., 49.,\n 24., 58., 57., 89., 82., 47., 92., 2., 10.])" - }, - "metadata": {} - } + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = np.array([1, 2, 4, 5]).reshape(2, 2)\n", + "b = np.array([3, 6]).reshape(2, 1)\n", + "lg.inv(A) @ b" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.],\n", + " [ 2.]])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "pop", - "execution_count": 51, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 51, - "data": { - "text/plain": "array([75., 66., 17., 56., 11., 54., 63., 40., 35., 36., 20., 48., 21.,\n 42., 84., 72., 14., 67., 65., 94., 26., 80., 13., 3., 73., 88.,\n 9., 85., 96., 77., 62., 24., 70., 61., 33., 43., 23., 38., 31.,\n 59., 4., 60., 78., 7., 15., 30., 82., 37., 90., 34., 76., 41.,\n 81., 58., 87., 32., 5., 74., 92., 64., 45., 25., 6., 69., 91.,\n 46., 51., 86., 55., 95., 47., 28., 12., 19., 83., 93., 10., 44.,\n 29., 39., 52., 89., 53., 2., 18., 79., 16., 1., 49., 27., 71.,\n 57., 0., 98., 22., 50., 68., 97., 99., 8.])" - }, - "metadata": {} - } + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lg.solve(A, b)" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['LinAlgError', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_numpy_tester', '_umath_linalg', 'absolute_import', 'bench', 'cholesky', 'cond', 'det', 'division', 'eig', 'eigh', 'eigvals', 'eigvalsh', 'info', 'inv', 'lapack_lite', 'linalg', 'lstsq', 'matrix_power', 'matrix_rank', 'multi_dot', 'norm', 'pinv', 'print_function', 'qr', 'slogdet', 'solve', 'svd', 'tensorinv', 'tensorsolve', 'test']\n" + ] + } + ], + "source": [ + "print(dir(lg))" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.782329983125268" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "print(dir(rd))", - "execution_count": 52, - "outputs": [ - { - "output_type": "stream", - "text": "['Lock', 'RandomState', '__RandomState_ctor', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'absolute_import', 'beta', 'binomial', 'bytes', 'chisquare', 'choice', 'dirichlet', 'division', 'exponential', 'f', 'gamma', 'geometric', 'get_state', 'gumbel', 'hypergeometric', 'info', 'laplace', 'logistic', 'lognormal', 'logseries', 'mtrand', 'multinomial', 'multivariate_normal', 'negative_binomial', 'noncentral_chisquare', 'noncentral_f', 'normal', 'np', 'operator', 'pareto', 'permutation', 'poisson', 'power', 'print_function', 'rand', 'randint', 'randn', 'random', 'random_integers', 'random_sample', 'ranf', 'rayleigh', 'sample', 'seed', 'set_state', 'shuffle', 'standard_cauchy', 'standard_exponential', 'standard_gamma', 'standard_normal', 'standard_t', 'test', 'triangular', 'uniform', 'vonmises', 'wald', 'warnings', 'weibull', 'zipf']\n", - "name": "stdout" - } + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lg.norm(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5.0" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### Exercise 1" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "mu = 4\nsigma = 12\nn = 50\nN = int(1e5)", - "execution_count": 35, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "A = rd.normal(loc=mu, scale=sigma, size=(n, N))", - "execution_count": 36, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "avg = np.mean(A, axis=0)", - "execution_count": 37, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "avg.shape", - "execution_count": 38, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 38, - "data": { - "text/plain": "(100000,)" - }, - "metadata": {} - } + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lg.norm((3, 4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Exercício 0: Input-Output Matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ls: /home/nbuser/library: No such file or directory\n" + ] + } + ], + "source": [ + "ls /home/nbuser/library" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [], + "source": [ + "A = np.loadtxt('/Users/marcelocolonno/Desktop/git/datascience_course/0-pre-requisitos/2-math/data/tech_coef.csv')\n", + "#/Users/marcelocolonno/Desktop/git/datascience_course/0-pre-requisitos/2-math/data" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12, 12)" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "np.var(avg)", - "execution_count": 39, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 39, - "data": { - "text/plain": "2.8750101224970765" - }, - "metadata": {} - } + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [], + "source": [ + "sectors = { \"Agropecuária\": 0,\n", + " \"Indústria extrativa\": 1,\n", + " \"Indústria de transformação\": 2,\n", + " \"Utilidades\": 3,\n", + " \"Construção civil\": 4,\n", + " \"Comércio\": 5,\n", + " \"Transporte\": 6,\n", + " \"Serviços de informação\": 7,\n", + " \"Intermediação financeira\": 8,\n", + " \"Atividades imobiliárias\": 9,\n", + " \"Outros serviços\": 10,\n", + " \"Administração pública\": 11 }" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Agropecuária: 0.3520\n", + "Indústria extrativa: 0.3419\n", + "Indústria de transformação: 0.6058\n", + "Utilidades: 0.4452\n", + "Construção civil: 0.4399\n", + "Comércio: 0.3078\n", + "Transporte: 0.4553\n", + "Serviços de informação: 0.4191\n", + "Intermediação financeira: 0.3296\n", + "Atividades imobiliárias: 0.0580\n", + "Outros serviços: 0.3284\n", + "Administração pública: 0.2490\n" + ] + } + ], + "source": [ + "impact = []\n", + "sec = []\n", + "for sector, id in sectors.items():\n", + " i = \"{0:0.4f}\".format(A[:,id].sum())\n", + " print(sector, \": \", i, sep='')\n", + " impact.append(i)\n", + " sec.append(sector)" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfcAAAD8CAYAAABqxe1QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xt8VdWZ//HP14BJFC+DEkfAGrwWL4gJthUUwUtrvAxSaIV2RDsIRVSQ1jId/UnBqUzBWjpWjSBUKrWoEbQqRS1KRKGKEO7U2pFQAW0qeAMlFOLz+2OtE07CyQ0SAofn/XqdFydrr7322jvR56y191mPzAznnHPOpY+DmrsDzjnnnGtcHtydc865NOPB3TnnnEszHtydc865NOPB3TnnnEszHtydc865NOPB3TnnnEszHtydc865NOPB3TnnnEszLZq7Ay49HX300Zabm9vc3XDOuf3K4sWLN5pZmz1tx4O7axK5ubksWrSoubvhnHP7FUl/a4x2fFreOeecSzMe3J1zzrk048HdOeecSzMe3J1zzrk048HdOeecSzMe3J1zzrk048HdOeecSzMe3J1zzrk048HdNY3Fi5u7B845d8Dy4O6cc86lGQ/uzjnnXJrx4J5mJB0u6Ybm7kd18+fPp1OnTmRmZpKXl0dJSUnKehMnTqR9+/ZkZ2fTq1cvNm3aBMC7775Lt27dyMzMRBJPPvnk3uy+c87tV/aZ4C6ptyST9OVa6kyV1LcBbbaVVGcUkPQHSUfWsv0WSYfU97j1ON44SQskPS7pqMZqN7obeCvpWKMl3ZqiD7mSVsb3XSTd28j9qFReXk6fPn3YvHkzEyZMoKysjL59+1JRUVGl3pIlSxgyZAgdO3ZkzJgxzJo1ixEjRgCwbds2TjjhBLp3795U3XTOubSxzwR3oD/wGtCvsRo0s/fMrM4PA2Z2mZl9XEuVW4CUwV1Sxm706z/NrKuZXW1mmxq6f00kHQG8YGZzG9ifRWY2rLH6Ud3s2bMpKytj6NChDB06lIEDB1JaWkpxcXGVelOnTgVg7NixjBw5kq5duzJ9+nTKy8s5+eSTmTZtGt26dWuqbjrnXNrYJ4K7pFZAN2AgScFdwX2SVkuaBeQkbVsraaykP0laJClP0guS3pE0JNZJHp1eJ2mmpOcl/VXS+GptHS3pUEmzJC2TtFLS1ZKGAW2BuZLmxvpbJN0p6Q3gXEmjJL0Z95kkSbHeSZLmxPYWSzou9ulVSSXx1TXpXO+ObayQdHWK65Qr6S1Jv5G0XNKTiRkFSWuBlmY2M47Ei5N2PUvSy/G8B6Vot4ek5xK/C0kPxz4sl9QnlhfG67xK0piG/H5LS0sBaNeuHQDt27cHYM2aNXXW27FjB+vWrWvI4Zxz7oC3r+Rzvwp43szelvShpDwzKwF6A6cCZwLHAKuBXyftt87MzpU0AZhK+ICQBawCHkxxnM7A2cA24C+SfmVmyZHjUuA9M7scwkjYzD6R9AOgp5ltjPUOBVaa2ahYb7WZ3RnfTwOuAJ4FHgXuMrNnJGXHfQVcYmblkk4GpgNdgG/G/p0FHA28KWmemb1f7RxOBQaa2XxJvwaGAj+v4/p2Ar4W+70kflCqyR3AJ2Z2Zjyff4nlt5vZh3Gm4iVJncxsefKOkgYDgwG+VMsBzCxRv9ZO17eec865qvaJkTthSv6x+P6x+DNAd2C6mVWY2XvAy9X2eyb+uwJ4w8w2m9kHQHkN99BfMrNPzKyc8EHh+GrbVwAXx3vi55vZJzX0twKYkfRzT0lvSFoBXAicLukwoJ2ZPQNgZlvNbCvQEngo1i0CTottnJd0rmXAK8A5KY69zszmx/e/jfvV5ffx+BuBucBXaql7MXB/4gcz+yi+/bakEmAJcHpSv0mqO8nMuphZlzZJ5R06dABg/fr1AGzYsKGyvLy8nO3bt9dYr0WLFpUjfeecc/XT7CP3+EDZhcAZkgzIAEzSyFjFatl9W/z3i6T3iZ9TnVtynYrqdeLMQT5wGfA/kl5MjMirKTezitj/LOABoIuZrZM0mjB7oBr6PgIoI4zQDwLKY3l9h6fV20z8vIOdH9ay6rlPKrv0W1IH4FbgHDP7SNLUFMeoUUFBATk5ORQWFnLYYYcxZcoUcnNzyc3NJTs7m8svv5znnnuOAQMGcO+993L77bdzySWXsGDBAvr3709WVhZbtmzhscceq3zK/qWXXuLjjz/m+uuvr283nHPugLEvjNz7Ao+Y2fFmlmtmxwGlhBHpPKCfpAxJxwI9m7IjktoCn5vZbwlT3Xlx02bgsBp2SwS5jfHZgb4AZvYpsEHSlbHt7Dg1fwTwvpl9AVxD+DAD4VyvjufahjBrsTDF8b4k6dz4PvEQIsBaID++71Ntn16SsuIHqR7AmzVfBV4Ebkr8EKflDwc+Az6RdAxQUMv+u8jKyqKoqIhWrVoxfPhwcnJyKCoqIiOj6rOI+fn53H///axevZpRo0ZRUFDAhAkTANi4cSODBg3i2WefBeDBBx9k0KBdHh9wzjnHPjByJwSon1UrmwF8h3A/+ULCdPnbhKnqpnQmcLekL4DtQOL74pOA2ZLeN7MqHzDM7GNJD8U+rqVq4LwGmCRpErCB8GzBA8AMSd8iTJF/Fus+BZwLLCOMnEea2d9T9PHPwLWSJgJ/BQpj+RhgiqTbgDeq7bMQmEW4Ff7fZvaepNwarsFPgfvjg4gVwJj4kN4SwrMMa4D5Nexbo+7du7NixYpdyhP31RMST9RXl5ubu0td55xzqcn/h9n0JH2HMFpv0FfUUrSTCzxnZmc0Rr+aUhfJFvnflnPONYikxWbWZU/b2Rem5dOapB8C/83O6XfnnHOuSXlwb2Jmdo+ZnWhmcxqhrbX7w6gdgPz8uus455xrEh7cnXPOuTTjwd0555xLM/vC0/IuHS1eDHu6spw/kOecc7vFR+7OOedcmvHg7pxzzqUZD+5JJLWX9PuYPe0dSf8r6eB67Hfb3uhfY1A9c9zva+bPn0+nTp3IzMwkLy+vchnaZFu3buWiiy6iVatWSOLnP6+aT+fpp5/mpJNOIisrix49elRmoXPOuXTjwT2KaVpnAk+b2cnAKUAr4K567J4yuMc0rnv9GquWHPP1zXG/LykvL6dPnz5s3ryZCRMmUFZWRt++famoqKhSr6KigtatW3PppZfu0sbf//53+vXrx+GHH87dd9/N4sWLufbaa/fWKTjn3F7lwX2nCwkJYR4GiIlhRgD/IekQhXzw9yUqS3ou5kH/GZAtaamkR2PO9T9LegAoAY6T1D/mR18paVzcP0PS1KT87SOqd0jSt+L2ZZLmJe13t0L++OWSvh/Le0iaK+l3wIqY2W5oUlujJf1QVXPcZ0i6Jx5jeUzZyu72t6nMnj2bsrKyyqVpBw4cSGlpKcXFxVXqtWrViqKiIq644opd2pg+fTrbtm3jv/7rv7j55pvp3bs3r776Ku+8885eOgvnnNt7/Gn5nU4HFicXmNmnkt4FTqppJzP7saSbzKwzVC4ReyrwPTMbGpPRjCMkdfkIeFHSVcA6QkrYM+J+qVLUjgK+YWYbkrYPJORbP0dSJjBf0otx21eAM8ysVNLZwC8Ja9kDfJuQrz75A91g4DjgLDOrkNR6D/vbJBLT5+3atQOoTAG7Zs0aLrrooj1u48QTT2zU/jrnXHPzkftONaVoram8Nn8zs9fj+3OAYjP7wMx2AI8SMr6tAU6Q9CtJlwKfpmhnPjBV0iB2Ll/7dWCApKWEBDFHASfHbQvNrBTAzJYAOfEe+1nAR2b2brX2LwYmJdLXmtmHe9JfSYMlLZK06IMGXa6GSeRD0B581a4x2nDOuX2VB/edVgFVFuuXdDhhZPsOVfOlQ+35zD9Lep8yepjZR4Sc7sXAjcDkFHWGAP8v9mFpTNkq4GYz6xxfHcwsMXL/rFoTTxJS0F4NPJaiG6n6tif9nWRmXcysS5tUjeymDh06ALB+/XoANmzYUFleXl7O9u3b96gN55xLNx7cd3oJOETSAKh8KO0eYKqZfU5I59pZ0kGSjiNMgSdsl9SyhnbfAC6QdHRssz/wiqSjgYPMbAZwBztzx1eSdKKZvWFmo4CNhCD/AnBD4niSTpF0aA3HfgzoRwjwqZ6QfxEYnHgAT1LrPelvUykoKCAnJ4fCwkIKCwuZMmUKubm55Obmkp2dTe/evSvrTp48mXnz5gGwcOFCJk+ezJYtW+jXrx8HH3ww48aN41e/+hVPPfUU5513nk/JO+fSk5n5K74IwfNZQp70d4BfAZlxmwhT1KuAxwkj2B5x2zhCnvVHgVxgZbV2v0PI974SGB/LziI8cLc0vgpS9Gdm0n7/G/twEDA2qXwucATQg5AOtnobK4C5ST9X9o/wzMUvCFPu/wcM2pP+Jr/yw/pye/ZK8sorr9gZZ5xhLVu2tM6dO9ubb75ppaWlBtjll19eWY9wC6XKq7S01MzMZsyYYSeccIIdfPDBdv7559v//d//mXPO7UuARdYI8czzuTskZQE/N7ObGqvNLpIt2tNG/G/TOXeA8XzurlFIOgV4E8hs7r4455xrHP5VuAOcmb0NnNnoDefnw6I9Hrs755zbDT5yd84559KMB3fnnHMuzXhwd84559KMB3fXNBYvBl/9zTnnmoUHd+eccy7NeHA/AEjqJum85u6Hc865vaNZg7uk3pJM0peTynIlfSfp5y6S7q2jnSGJZWOrlVemN21An6ZK2qN85/XpcwPaWhuXfq1eXnnOyX2WNFnSaUn1jgBGE1aVq+kYd0q6uDH6W5v58+fTqVMnMjMzycvLo6SkJGW9iRMn0r59e7Kzs+nVqxebNm0C4N1336Vbt25kZmYiiSefTLWirnPOueYeufcHXiOsf56QS1j+FAAzW2Rmw2prxMweNLNHmqSHu6E+fW6EY6Q8ZzO73sxWJxWdBtxoZltStSMpw8xGmdmcpuorQHl5OX369GHz5s1MmDCBsrIy+vbtS0VFRZV6S5YsYciQIXTs2JExY8Ywa9YsRowIqeO3bdvGCSecQPfu3Zuyq845t99rtuAuqRXQjZCfPDm4/ww4X9JSSSMk9ZD0XEzYsjY5j7ik/5N0jKTRkm6NZfmSlkn6EyF7WaJurqRXJZXEV9dYLkn3SVotaRaQk7RPvqRXJC2W9IKkY2P5sFh/uaRdsq0l+hzfj5b0G0kvxv5/U9J4SSskPZ+UAOYiSUti+a9jrvaEH0laGF8nJbV7a4pjF0vqEt8XEtbHf1rSmKQ6ayWNkvQa8K1qI/9Rkt6UtFLSJMWcqHWdc11mz55NWVkZQ4cOZejQoQwcOJDS0lKKi4ur1Js6dSoAY8eOZeTIkXTt2pXp06dTXl7OySefzLRp0+jWrVtDD++ccweU5hy5XwU8H1dI+1BSIsvYj4FXLaQznZCobGZfAL8HegNI+iqw1szKqrX7MDDMzM6tVv4P4BIzyyOkQE1Mm/cGTiWs0jYISAT9loTA2NfM8oFfA3cl9fFsM+sEDKnHuZ4IXA70An5LSORyJrAVuDyu7T4VuDqWtwBuSNr/UzP7CnAf8Mt6HC/h9rhGcSegp6ROSdvKzew8M6seqO8zs3PM7AwgG7giltd5zqoln3tpaSkA7dq1A6B9+/YArFmzps56O3bsYN26dfU9Z+ecO+A1Z3Dvz84c44/Fn+vyOCEwQxjtP568Md5fPtLMXolF05I2twQekrQCKCJMVwN0B6abWYWZvQe8HMtPBc4A/ihpKSGvevu4bTnwqKR/J+R5r8tsM9tOyLSWATwfy1cQbkOcCpTGDzoAv4n9Spie9G/1Dy21+aakV+M5ncjOc4Zq1y5JT0lvxOt0IXB6LK/znK0B+dwTCYtUx9fl6lvPOefcTs2ytrykowiB4wxJRgh4JmlkHbv+CThJUhvCyP+n1ZsmpPlMZQRQRkhdehBQnrQt1T4CVqWYAYAwCu8O/Btwh6TTzay2IL8NwuyDpO22MxXfF4TfQV2Ry2p4XyNJucBIIM/Mtkj6DZCVVOWzFPtkAQ8AXcxsnaTRSfs09Jyr6NChAwDr168HYMOGDZXl5eXlZGRk0LJlyyr12rZty4YNG2jRokXlSN8551zdmmvk3hd4xMyON7NcMzsOKAXOAzYDh6XaKQbFpwg5yP9sZpuqbf8Y+EQ7v/b13aTNRwDvx+n9awgfKADmAf0kZcR76j1j+V+ANpLOhTBNL+l0SQcBx5nZXELwPBJotdtXIngLyE3cT4/9eyVp+9VJ//6pnm0eSZj2/1zSMcCl9dgnEcg3xmciEvfh9/icCwoKyMnJobCwkMLCQqZMmUJubi65ublkZ2fTu3dvAAYMCF96uP322xk/fjwLFiygX79+ZGVlsWXLFiZPnlz5lP1LL73E5MmTG9IN55w7IDRXVrj+hAfnks0gPCU/DNghaRnhPvSSavUeJ6Qova6Gtr8H/FrS58ALSeUPADMkfQuYy86R61OEWYQVwNvEoGpm/4wPmd0bp/tbEO53vw38NpYJmBA/VOw2MyuX9D2gSFKLeH4PJlXJlPQG4cNYfW5fACyLr1XAGmB+PfrxsaSHCNdibewHhA9Ce3TOWVlZFBUVceONNzJ8+HBOP/10HnroITIyMqrUy8/P5/777+euu+7i1VdfpaCggAkTwqMXGzduZNCgQZV1H3wwXKLrr7++IV1xzrm0p50zxM41ni6SLQLwvy/nnKs3SYvjg9B7pLm/5+6cc865RubB3TWN/HwftTvnXDPx4O6cc86lGQ/uzjnnXJpprqflXbqrK5+7T9k751yT8ZG7c845l2Y8uDvnnHNpxoO7c845l2YaNbhLSpkzvFqdWyQd0pjHbShJ10m6L74fImnAbrZzi6TXJRVJOrWB+35L0p8lzZXURdK9de/VtCT9QUkpdfeW+fPn06lTJzIzM8nLy6tcXra6iRMn0r59e7Kzs+nVqxebNoXVh4uLi5FU5fXLXzYkeZ5zzqWXRl2hTtIWM6t1zXFJawmJSTY2oN0MM6vY0/4ltXdd7MNNjdXmbvTheWBcXK99nxXzuSuuyV9vlSvU1ST+3ZWXl1euL/+jH/2Iu+66i8zMTP76179WWZp2yZIl5OXlcfHFF3PJJZdw22238Z3vfIdHHnmE4uJievbsyR133MFpp4XEd3l5eZxyyikNPV3nnGtWjbVCHWbWaC9gS/y3B1AMPElIivIoYU3yYcA/CWuXz411v05IhlJCSMXaKpavBUYBrxHSuxYDEwiJXv4MnAPMBP4K/DSpD/8OLASWAhOBjFj+PXauHf8QIW85wGjg1vh+EGE99WWEte4PieXHENagXxbb7UJInPJS7PcKoFdSH34ArIyvW1Jcp1HAFkJymrvj9XouqT+/jue7hpCbPrHf08Biwnrxg5OvOyHX/DLgdeCYFP1eBnSt4xqtBY4mpKH9M2E9/iXA8UAhsCgee0xdfwtxCZuaX9HMmTMNsPHjx5uZ2R133GGAzZkzx5INGzbMAFu4cKGZmZ1//vnWokUL27p1q82dO9cAe/HFF23r1q3mnHP7K2CRNUI8bsp77mcDtxByiJ8AdDOze4H3gJ5m1lPS0YQ86RebWV4MHj9IaqPczM4zs0Te93+aWXdCUpXfAzcScq5fJ+koSR0JmdO6mVlnoAL4bsz2NgboBlxC1bzmyWaa2TlmdhYhuA2M5fcCL8fyLoQPCeVA79jvnsA9CvIJHyS+CnwNGCTp7OSDmNmd8Vy/a2Y/StGPLwPfAL4C/ERSy1j+H2aWH/swLKbOBTgUeD32bx7hQ0qi36/E8jxgVU3XKEUfTiVk7jvbzP4G3G7h02Qn4AJJnarvIGmwpEWSFn2QosFUSktLAWjXrh1AZWrXNWvW1Flvx44drFu3rrLON77xDQ455BC+9rWv8fbbb9ezB845l36a8nvuC81sPYCkpYTR4GvV6nyNEGjnh9lfDqZqStPHq9V/Jv67gpBr/f3Y/hrgOELK2HzgzdheNvAPQqAtNrMPYv3HgVRztmdI+ik7U5omsspdSEjDioUc5p/GgDtWUndCXvZ2hJHyecBTZvZZPNZM4Hx2zW5Xm1lmtg3YJukfsd31hIDeO9Y5DjgZ2ESYDXkuli8mfIBJ9HtA7HcFIR3uNTVco+r+ZmavJ/38bUmDCX8zxxJ+b8uTdzCzScAkCNPyDTjf5DYAUG3fka9W75hjjmHcuHF07NiR119/nbFjx3LDDTfw0ksv7U4XnHNuv9eUwX1b0vuKGo4l4I9mVlMa08+q/Zxo84tq7X8R2xfwGzP7ryoHka4C6hNspgJXmdmyeF++Ry11vwu0AfLNbHt8liAr9mFP7XLtJPUALgbONbPPJRWzM//6dktEu5qvdULKa5RC5bWX1AG4FTjHzD6SNDXp2HukQ4cOAKxfvx6ADRs2VJaXl5eTkZFBy5Ytq9Rr27YtGzZsoEWLFrRv356srCw6duwIwJVXXsmDDz7I6tWrG6N7zjm3X2qOr8JtBg6L718Hukk6CUDSIZL25Cmol4C+knJie60lHQ+8AfSIU/ctgW/VsP9hwPuxTvJU9UvA92ObLSQdDhwB/CMG9p6E+9IQpsWviudyKNAbeHUPzinhCOCjGNi/TJj1qMtLwA2x3xmx3zVdo9ocTgj2n0g6BijY3ZOorqCggJycHAoLCyksLGTKlCnk5uZWPmTXu3eYqBgwIHyh4fbbb2f8+PEsWLCAfv36kZWVxZ133sktt9zCww8/zNChQ/nwww/56le/2lhddM65/U5zBPdJwGxJc+M0+XXAdEnLCcH+y7vbsJmtJtzDfzG290fg2Dh9P5ow5T+H8BBcKncQPgj8kfAgYMJw4BJJG+K+JxMeEuwiaRHhg8BbsQ8lhBmAhbGtyWbWkCn5mjxPGMEvB/6bcK3qMhzoKWkFYbr+9JquUW2NmNkywm2FVYSH/ebv9llUk5WVRVFREa1atWL48OHk5ORQVFRU5Ul5gPz8fO6//35Wr17NqFGjKCgoYMKECQCcdtppFBcXc9NNN/HEE0/Qr18/Jk6c2FhddM65/U6jfhUu3UnqCpxqZg83d1/2dfX9KpxzzrmdGuurcL5CXT1J6g88Qv3u3TvnnHPNxoN7PZnZdDM7ycymNndf9gv5dXzT3TnnXJPx4O6cc86lGQ/uzjnnXJppyu+5uwPZ4sWQvBCNT8U759xe4yN355xzLs14cHfOOefSzF4N7pJul7RK0nJJSyU1yjJiku6UdHFjtFXHcUZLurUB9f9N0o/rUe/ueF3u3rMe7jlJ4yQtkPR4UmKaRrWn+dvnzJnDiSeeSGZmJkcffTT9+/dn8+bNTdFV55zbL+21RWwknQv8AuhhZttiRriDzey9eu7fIiZtaTaSRhPS2v68kdv9FGgTk8XUp36zX4u67LKITSPmb583bx4LFiygbdu2zJgxg2eeeYa77rqL2267be+epHPONbL9cRGbY4GNiQBmZhsTgV1SvqRXJC2W9EJM0YqkYkljJb0C3C5praSD4rZDJK2T1FLSVEl9Y/k5ceS5TNIbkjLj+ulPxxmD1xPpSiVdEGcQlkpaIumw6p2Osw1/kTSHkAY1UX6ipOdjn1+N671X3/c6SffF91Ml3Rv7tiapv88QUra+IelqScdLein29SVJX0ra/xeS5gLj4izCbyS9GK/LNyWNl7Qi9qtl3G+UpDclrZQ0SQpPuUk6SdKceJ0WSzpOUm48l5L46hrrKs4urIztX727fwSzZ8+mrKyMoUOHMnToUAYOHEhpaSnFxcVV6k2dOhWAsWPHMnLkSLp27cr06dMpLy+ne/fu3HLLLXz961/n7LNDNt2DDvI7TM45l7A3/4/4InCcpLclPSDpAoAYhH4F9I25yn8N3JW035FmdoGZjQGWARfE8iuBF8xse6KipIOBx4CbYg7zrwPbCbncl5hZJ+A2wkpzEDKd3Rjzmp8PbE3usEJu9n6E3PTfBM5J2jwJuDn2+VbggXpcg2MJKWGvAH4GYGb/Bmw1s85m9jhwHyGPeifC+vX3Ju1/CnCxmf0w/nwicDnQC/gtMNfMzozncXmsc1/MUX8GIb3rFbH8UeDeeJ3OAzYSUr9eEnPUX5107G8CnYGzCJnp7k58AGuoxsrf/uCDD3LssccyZswYLrjgAm666abd6Y5zzqWlvRbczWwLIY/4YOAD4HGFtKqnAmcAf1TI+/7/gPZJuz5e7X1i1NiPXfO9nwq8H5O3YGafmNkXhOA1LZa9DBwl6QhCApRfSBpG+BBRfar7fEJu9s/N7FNiPnlJrYCuQFHs80TqSL4SPW1mX8TkLcfUUOdc4Hfx/bTY94SimJc9YXb8cLMCyCAklyH+nBvf94wzGCsI+d1PjzMU7czsmXhNtprZVqAl8FCsW0TI2U7sw3QzqzCzMuAVqn7QAUDSYEmLJC36oB4XIx47sW+D6vXp04dZs2bRv39/XnnlFWbMmFHPIzrnXPrbq3OZMTgUm9lPgJuAPoT84qviyLWzmZ1pZl9P2i05p/szQIGk1oQPCi9XO0RNESJVuZnZz4DrCSPa11NNrZN6LfmDgI+T+tzZzDrWcOxkyffU65v3Pfn4KfPbxw8wyTndvyBkkMsizCj0jSP6h9iZcz7VeY0Ayggj9C7AwQ3pq5lNMrMuZtalTQ116srfvn379hrrJfK3Axx33HFcdtll3HVXmOQpKiqqTxedc+6AsNeCu6RTJZ2cVNQZ+BvwF6BNfOCOeA/99FRtxNH/QuB/geeqjWIhpF09VlJebOuIeI9+HjE/u6QehHv/n0o60cxWmNk4YBG7ppudB/SWlB1Hu1fGfnwKlEr6VmxTks7ajcuSygLCrASxz6/tQVtZ8d+NcbahL1T2f4OkKwHi+WUTcsa/Hz8sXEOYDYBwHa5WyAnfBuhO+D00WGPkbx8xYgRjxoxh6tSpldPxp512Wo3HdM65A83eHLm3An4jabVCHvHTgNFm9k9C0BknaRmwlDDlXZPHgX9n1yl5Ylv9gEJJ7xGmqVsScrl3icf9GXBt3OWW+JDYMsJ96tnV2iuJx1kKzABeTdr8XWBg3HcV4b53YxgGfC/29RpCTvbdYmYfE0brK4CngTeTNl8D/EDS+4TzOoowyr9W0uuE+/uJmYJPZDjwAAAgAElEQVSngOWEZx5eBkaa2d93p0+Nkb+9devWTJw4kcGDB7N06VKGDBnC6NGjd6c7zjmXltI2n7uk/wRmmtlfm7sv+zJJ3yGM1uc2Zrs1fRXOOedczbQffhVur5F0D+HBvZbN3Zd9maQfAv/Nzul355xzaSBtR+6uefnI3TnnGs5H7m7flp8fAnri5Zxzbq/x4O6cc86lGQ/uzjnnXJpp0dwdcGlq8WKoY9W5Gvk0vnPO7REfuTvnnHNpxoO7c845l2Y8uO8Fko7SztSyf5e0Ienng+tuYe+T9IO4Nn2zmz9/Pp06dSIzM5O8vDxKSkpS1ps4cSLt27cnOzubXr16sWnTJgA+/fRTrr32Wlq3bk2bNm34yU9+sje775xze50H973AzDYlEswADwITkhLO/BMq16ffJ34fkjKAH7BzbfpmU15eTp8+fdi8eTMTJkygrKyMvn37UlFRNa3AkiVLGDJkCB07dmTMmDHMmjWLESNGAGF9+kceeYQhQ4bwjW98gzvvvJOZM2c2x+k459xesU8EkwOVpJPi2vYPAiWEpDeTYtrUVZJGJdVdL2m0pCWSlks6JZZfKGlZnAUokXSopIslzZX0dFzL/37FXKmS/l3SinjcsbGshaSPJf1U0kJgJJADvCppTqxTIOlP8RiPSzp0b1yj2bNnU1ZWxtChQxk6dCgDBw6ktLSU4uLiKvWmTp0KwNixYxk5ciRdu3Zl+vTplJeXU1xcTMuWLRk7dix33HFHlfrOOZeOPLg3v9OAKWZ2tpltAH4cVyc6C7hEUnK6szIzOxuYTBhZA/wIGBxnBboD5bH8q8AtwJlAR6CXpPbAT4GewNlAN0lXxPpHACVm9hUz+x/gH8D5ZnaxpBzgx8BFZpZHSCKz2wltGqK0tBSAdu3aAVSmfF2zZk2d9Xbs2MG6devIyclh+/btzJ07lzlz5lSp75xz6ci/Ctf83jGz5Gxt/SUNJPxu2hKC/+q4LTGXvBi4LL6fD/xS0u+AGWa2JQ7SXzeztQCSHgPOI6wh/7KZbYzlvyN8IHge+Cch+1sqXWM/FsS2DyZFKlpJgwlr+vOl+p9/gySWS1YdX7NLrjdmzBhKSkq48MILyc7OJiMjg6ysZr/j4JxzTcaDe/NLpFUl5rsfDnzFzD6W9Fuq3vfeFv+tIP7uzOynkp4BLgfejPnqAap/WdyA2iLiVqs50YCA583smtpOxMwmAZMgrC1fW9366tChAwDr168HYMOGDZXl5eXlZGRk0LJlyyr12rZty4YNG2jRogXt27fnpJNOYu3ataxevZqsrCzy8vI8/7tzLq35tPy+5XBgM/CppGOBb9S1g6QTzWx5nEpfApwaN31N0pfiw3HfJoy0Xwd6xqf3WwD9gFdqaHozcFh8vwC4QNIJ8ZiHxg8iTa6goICcnBwKCwspLCxkypQp5ObmkpubS3Z2Nr179wZgwIABQHh4bvz48SxYsIB+/fqRlZXFnDlzmDRpEqtXr2bQoEEcdNBB/OAHP6jtsM45t1/z4L5vKSFMwa8EHiJMudfl1vhw3HLgY+DFWL4AuAdYAbwNPGNm64FRQDGwlDB1P6uGdicBcyTNMbMyYCDwuKRlse1TduP8GiwrK4uioiJatWrF8OHDycnJoaioiIyMqllq8/Pzuf/++1m9ejWjRo2ioKCACRMmALBjxw5++ctfcsMNN/DZZ5/xxBNPcNZZZ+2N7jvnXLPwlK9pSNLFwE1mdlVz9WGXlK8N4X+TzrkDlKd8dc4551xKHtzTkJnNac5RO7BrPveGvJxzzu0RD+7OOedcmvHg7pxzzqUZD+7OOedcmvFFbFzTWLwY6lhFrkH8XrxzztWbj9ydc865NOPBPc3FjG83Scps7r4455zbOzy47wMk/aukxyS9E1O0/iGR0nUP2xXwS2C5mW2rq361fSdXy0i3T5k/fz6dOnUiMzOTvLw8SkpKdqmzdetWLrroIlq1aoUkfv7zn1du+9Of/kTXrl058sgjOfLII+nTpw8ffPDB3jwF55xrMh7cm1kMwE8BxWZ2opmdBtwGHLOnbVtwk5nNq+HYNT5zYWbXm9nqmrY3p/Lycvr06cPmzZuZMGECZWVl9O3bl4qKiir1KioqaN26NZdeeukubbz99tscffTRjBs3jssuu4yZM2cycuTIvXUKzjnXpDy4N7+ewHYzezBRYGZLgdck3R3XjV8h6WoAST0kvSLpCUlvS/qZpO9KWhjrnRjrtZE0Q9Kb8dUtlo+WNEnSi8AjkjIk/Tzuu1zSzbFesaQu8X3/uH2lpHF7+frsYvbs2ZSVlTF06FCGDh3KwIEDKS0tpbi4uEq9Vq1aUVRUxBVXXLFLG/379+eZZ57h+9//PhMnTgRg1apVe6P7zjnX5Pxp+eZ3BiE/e3XfBDoDZwFHE9K5JkbgZwEdgQ+BNcBkM/uKpOHAzcAtwP8CE8zsNUlfAl6I+wDkA+eZ2VZJNwAdgLPNbIek1smdkNQWGBf3+Qh4UdJVZvZ09Q7vjXzuAKWlpQC0a9cOgPbt2wOwZs0aLrroonq1cfDBB1e+f+GFFwDo3r17Y3bTOeeajQf3fdd5wHQzqwDKJL0CnAN8CrxpZu8DSHqHnZngVhBmAgAuBk7Tzq+jHS4pkcL1GTPbmlTvQTPbAWBmH1brxzmEWwYfxOM9CnQHdgnuTZHPvT4SyY+0G1+9mz9/Pv/xH/9Bfn4+o0ePbuSeOedc8/Dg3vxWAX1TlNcWqZIfjvsi6ecv2Pk7PQg4NymIh0ZDAPys2nFqC8SN+GX1xtGhQwcA1q9fD8CGDRsqy8vLy8nIyKBly5Z1tjNv3jwuv/xyTjrpJF544QVatWrVdJ12zrm9yO+5N7+XgUxJgxIFks4hTIFfHe+JtyGMlhc2oN0XgZuS2uxcS70hiYfrqk/LA28AF0g6WlIG0B94pQH9aHQFBQXk5ORQWFhIYWEhU6ZMITc3l9zcXLKzs+ndu3dl3cmTJzNvXribsXDhQiZPnsyWLVsoKSmhoKCAiooKBg0axB//+EeeffbZ5jol55xrVB7cm5mFOeXewCXxq3CrgNHA74DlwDLCB4CRZvb3BjQ9DOgSH5JbDQypod5k4F1guaRlwHeq9e994L+AubEvJWb2+wb0o9FlZWVRVFREq1atGD58ODk5ORQVFZGRkbFL3UGDBvHwww8DUFRUxKBBg9i4cSPLly/n888/Z+vWrdx4443079+fm2++eW+finPONQmZL+vpmkAXyRY1ZoP+d+qcOwBIWmxmXfa0HR+5O+ecc2nGg7trGvn5YbTdWC/nnHP15sHdOeecSzMe3J1zzrk048HdOeecSzMe3F3TWJxqRV3nnHN7gwd355xzLs14cHfOOefSzAEf3CX9q6TH4upwqyX9QdIpjdj+VZJOa8T2Tpf0qqRnJdW06lxD21xQx/Yuku6N76+TdF9DjzF//nw6depEZmYmeXl5lJSUpKw3ceJE2rdvT3Z2Nr169WLTpk0AvPvuu3Tr1o3MzEwk8eSTTza0C845d8A4oIO7QhaVpwhZz040s9OA24BjGvEwVwEpg3tiPfeGMLNVZna+mV2ZnAN+T5hZ1zq2LzKzYbvbfnl5OX369GHz5s1MmDCBsrIy+vbtS0VFRZV6S5YsYciQIXTs2JExY8Ywa9YsRowYAcC2bds44YQTPC2rc87VwwEd3AnpUbcnB0kzW2pmryq4W9JKSSskXQ0gqYekYklPSnpL0qPxQwKSfhZH/8sl/VxSV+DfgLslLZV0Ytx3bEzhOlzSVEmVWeEkbUl6/5/x+MskjYlloyS9GcsnJR27s6TX47GfkvQv1U9W0jFx27L46pp8TEmPS7osqf5USX3iOT+3uxd59uzZlJWVMXToUIYOHcrAgQMpLS2luLi4Sr2pU6cCMHbsWEaOHEnXrl2ZPn065eXlnHzyyUybNo1u3brtbjecc+6AcaAH9zOAmh7r/ibQGTiLkPP8bknHxm1nA7cQRuQnAN1iNrXewOlm1gn4qZktAJ4BfmRmnc3snbj/kWZ2gZndU1PHJBUAVwLnmNlZwP/GTfeZ2TlmdgaQDVwRyx8B/jMeewXwkxTN3gu8EtvLI6SbTfYYkPgQczBwEfCHmvqYos+DJS2StOiDpPLS0lIA2rVrB0D79u0BWLNmTZX9U9XbsWMH69atq28XnHPO4cG9NucB082swszKCGlOz4nbFprZejP7AlgK5AKfAuXAZEnfBD6vpe3H63H8i4GpiXzsZvZhLO8p6Q1JK4ALgdMlHUH4wJBIxfobQorY6i4ECmN7FWb2SbXts4ELJWUCBcC86vnga2Nmk8ysi5l1aVN7PaAyt/we13POOVfVgR7cVwH5NWyrLaJsS3pfAbQwsx3AV4AZhPvsz9ey/2dJ73cQfw9xiv3gmo4vKQt4AOhrZmcCDwFZtRynQcysHCgGvkEYwT/WGO126NABgPXr1wOwYcOGyvLy8nK2b99eY70WLVpUjvSdc87Vz4Ee3F8GMiUNShRIOkfSBcA84GpJGZLaEEbCC2tqSFIr4Agz+wNhyr5z3LQZOKyWPqxl5weMXkDL+P5F4FpJ2bH91uwM5Bvj8foCxBH4R5LOj9uvIcw0VPcScENsL0PS4SnqPAZ8DzgfeKGWftdbQUEBOTk5FBYWUlhYyJQpU8jNzSU3N5fs7Gx69+4NwIABAwC4/fbbGT9+PAsWLKBfv35kZWWxZcsWJk+eXPmU/UsvvcTkyZMbo3vOOZd2DujgbmHetzdwSfwq3CpgNPAe4Sn65cAywoeAkWb291qaOwx4TtJyQmAdEcsfA34kaYmkE1Ps9xBwgaSFwFeJo3ozex6YBSyTtBa42cw+jvVXAE8Dbya1cy3huYDlhA8Wd6Y41nDCtP4KwrMGp6eo8yLhg8wcM/tnLedbb1lZWRQVFdGqVSuGDx9OTk4ORUVFZGRkVKmXn5/P/fffz+rVqxk1ahQFBQVMmDABgI0bNzJo0CCeffZZAB588EEGDRq0y7Gcc86BzNNp7tPiVP0kM9uvIlkXyRb535ZzzjWIpMVm1mVP2zmgR+77ujj1vgQ4rrn74pxzbv/R4EVU3N5jZlvYee9+/5Jf03OKzjnnmpqP3J1zzrk048HdOeecSzM+Le+axuLFUNPiM/6gnXPONSkfuTvnnHNpxoO7c845l2Y8uDcTSbmSVlYrGy3p1pgzvW1S+eRETnhJayUdHd+nzMNePdPc7vRlb9nTPO8JL7/8MpKQxKJFi/ZG151zbp/lwX3fdB1QGdzN7HozW129Ul152Pd1jZHnHWDr1q0MHjyYQw45ZG+fgnPO7ZM8uO+bugCPxhzw2TEH/C4rFiXlYZek+2Iu+VlATlKdmvK/58ec7n8Cbkyqn6GQx/7NmBv++7H8WEnzYp9WJq1jv9saI887wE9+8hOOOOKIyjXqnXPuQOfBfd+0CPhuzAFfn5SrvYFTgTOBQUDyiL6m/O8PA8PM7NxqbQ0EPjGzcwgpbgdJ6gB8B3jBzBI57pfu5rlVaow870uWLOFXv/oVkydPpkUL//KHc86BB/fmVNP3wXbne2Ld2Zl7/j1CopuE+uR/n5ZU/+vAAElLgTeAo4CTCUlqvidpNHCmmW2u3glJgyUtkrTog904id3J8z5s2DC+9a1vcdhhh7F5c+jS+vXrK0f1zjl3IPLg3nw2Af9Sraw1sHE329vlQ0Et+d+Vqn5iN0IGus7x1cHMXjSzeYQPERuAaZIG7NIBs0lm1sXMurSpR4cbI8/7unXrmDZtGieffDIzZ84EoHfv3v5QnXPugObBvZnEdePfl3QRVOZrvxR4jbpzwFc3D+gX75cfC/SM5TXlf/8Y+ETSeXH7d5PaegG4QVLL2K9TJB0q6XjgH2b2EDAFyGvYGe+qMfK8FxYWUlRURFFRET169ABg3LhxdOzYcU+755xz+y2/Sdm8BgD3S7on/jzGzN6RNBV4UNJWoPo98VSeIky5rwDeJuSTx8w+lpTI/76Wqvnfvwf8WtLnhICeMBnIBUriw3cfAFcBPQh56bcDW2Lf90giz/uNN97I8OHDOf3003nooYdqzPN+11138eqrr1bJ815QUFBZ77nnngPgwgsv5KijjtrT7jnn3H7L87m7JtFFshonxv1vzjnnUvJ87s4555xLyYO7c845l2Y8uLumkZ8fpt9TvZxzzjUpD+7OOedcmvHg7pxzzqUZ/yqcaxqLF0MdK80559KA32rbJ/nI3TnnnEszey24S7omOUe5c84555pGncE9kVa0viT1kPRctbLuQPeY1KS2fW+RVGNSbkmTJZ3WkP4k7ZsraWUD6h8paejuHKuhJE2P6VVH1F27yfsyTdIrkh6R5LdtnHP1NmzYMI455hgkccUVV9RYLzc3F0mVr86dO1dumz9/Pp06dSIzM5O8vDxKSkr2RtfTzt4aubcHbqpHvVuAlMFdUoaZXW9mqxu1ZzU7EkgZ3CVlpCrfHZL+FehqZp3MbEI992myoGtm15jZBWY2wMx2NNVxnHPpqV+/fvWq1717d6ZPn8706dMZN24cAOXl5fTp04fNmzczYcIEysrK6Nu3LxUVFU3Z5fRkZrW+gC3x3x5AMfAk8BbwKDuXr700lr0G3As8F8tHA7cmtbWSsG75ocAsYFksuxoYBvyTsA763MSxgTsJqUfPi8fvErcVEvKeryKsyZ6q7/nxGH8C7gZWxvKM+PObwHLg+yn2fQzYSshbfnc8/7nA74DVsc7TwOLYh8HJ1wy4Kx77deCYWP6teL7LgHmxbHnScc4HOsd9lhPWjP+XWK8YGEtYN/6HwNR4DeYCa4ALgF8DfwamJvUl5XUi5GpfEPvyBpAJfCWWLYn/nhrrZhHyv6+I23rW9XdTy7fc/eUvf6XTq5rS0lID7PLLL99lW8Lxxx9v1157rX366adVymfOnGmAjR8/3szM7rjjDgNszpw5NbaVboBFZrX//7U+r7orVA3unxBG4QfFgHle/B//OkLObwFPUHdw7wM8lFR+RPx3LXB0UrkB3076uZidwb11/DcjlndK0fflwAXxfXJwHwz8v/g+Mwa/DtX2zU3UTzr/z5LrJfUhO57bUUn9vjK+H590rBVAu/j+yBqOk9znO4FfJp37A0n1phI+gAjoBXwKnBl/N4uBzjVdJ+Bg4B0gL3H9436HAy1i2cXAjPj+h8DD8f2XgXeBrNr+bjy4+8tfB8irmvoGd0kGWJs2bWzy5MlmZnbPPfcYYI8++qiZmU2cONEAmzRpUo1tpRsaKbg3dFp+oZmtN7MvCCPN3Pg/+1Iz+2vs2G/r0c4K4GJJ4ySdb2af1FCvAphRw7ZvSyohjCRPB6rci5d0BCGAvhKLpiVt/jowQNJSwqj1KMKHk7osNLPSpJ+HSUqMzo9LauOfQOK5g8WE6wQwH5gqaRAh2FaRos+/IeRQT3i82i7Pxmu+AigzsxXxd7Mq6ZiprtOpwPtmVgJgZp/E/Y4AiuKzCRNifQgf4qbFum8BfwNOSdH/wZIWSVr0QfWNzjkXDRo0iCeeeIJp06Zx8MEH8/3vf5/S0tJd6oX/vYH8a7UN1tB7t9uS3lck7W811N9B1fv6WQBm9rakfOAy4H8kvWhmd6bYv9zMdrnZIqkDcCtwjpl9FFOkZlWvVku/BNxsZi/UsL0mnyX1oQdhdHuumX0uqTipD9st8VeZdJ3MbIikrwKXA0sl7XyKpIHHjxK/jy+o+rv5AmhRy3Wq6b+U/ybcEuktKZcw0qeW+lWY2SRgEoSscPXZxzmX/rZtC/97yszMBOD222+v3LZkyRJ+8Ytf8Pbbb9OhQwcA1q9fD8CGDRsAKstd/TXGg1lvAR0knWhm7wD9k7atBa4AkJQHdIjv2wIfmtlv49P418X6m4HDgI11HPNwQqD7RNIxQAE7AxEAFnKZfyLpPDN7Dfhu0uYXgBskvWxm2yWdAmwws+TgmehLTY4APoqB/cvA1+roM/EavQG8IelKwmj/46Q+fyLpozib8SpwDTE3+26q6Tq9BRwrKc/MSuKMweZ4ThvivtcltTOPcP1ejtfqS8Bf9qBfzrk0NGvWLFauDF9KWrduHZMnT+aCCy7gkksuYePGjWzZsoUVK1Zw2223UVBQwI4dO3jkkUfIzs7mzDPPpHXr1uTk5FBYWMhhhx3GlClTyM3NpUePHs17YvuhPX5a3szKCfewZ0l6jTBlmzADaB2nv28A3o7lZwILY/ntwE9j+SRgtqS5dRxzGWGaeRXhIbL5NVT9HnC/pD8RHlpLmAysBkriFPREqn3QMbNNwHxJKyXdnaLt5wmj4+WEEe/rtfU5ulvSinjMeYSH2aq7NtZbTni4LtWMRr3UdJ3M7J9AP6BQ0nvxXFoSng/4H0nzqXrb4AEgQ9IKwq2B68wseabAOee4++67+fGPfwzA8uXLGTRoEPPnV/3f89FHH01FRQWjRo3ixz/+MccffzxPPfUUbdu2JSsri6KiIlq1asXw4cPJycmhqKiIjIxG+4LSAUM7Z4/dgUjSfwIzzeyvjdluF8kWNWaDzrl9k8eQRiVpsZl12dN2fPnZA5ikewizLi2buy/OOecaj4/cXZPo0qWLLVrkY3fnnGsIH7k755xzLiUP7s4551ya8eDunHPOpRnP+uWaxuLFUN9Vpfy5D+eca1Q+cnfOOefSjAf3Gki6Jq6k55xzzu1X0i64x+VsG1K/h6TnqpV1B7qb2Xt17HuLpJT55+P2yZJOq2n7npJ03e58AJF0VXK/JN0p6eLG7d3umz9/Pp06dSIzM5O8vDxKSkpS1ps4cSLt27cnOzubXr16sWnTJgB69OiBpCovX77SOXcgSbvg3kjaAzfVo94tQMrgLinDzK43s9WN2rOqrgNSBndJta3XeBVJWfTMbJSZzWncru2e8vJy+vTpw+bNm5kwYQJlZWX07duXioqq+YOWLFnCkCFD6NixI2PGjGHWrFmMGDECgFGjRjF9+nSmT5/O0KFDAcjLy9vr5+Kcc82mMfLG7ksvquafLwaeJCRKeZSdi/ZcGsteA+6l7vzzhwKzCGvBrwSuBoYRUruuIGRSA9hCWAv+DUKa1GJ25p8vJOSNXwWMqaHvJxLWeV8MvAp8OZb/HhgQ338/nkvfeLy/ENLvZhMS9YyK59UPGAS8Gfs9g/BBpCvwIVAa9zuRkBu+LyGxzBNJ/elBSCtbr/4nvxqUzz3JzJkzDbDx48ebmdkdd9xhgM2ZM6dKvWHDhhlgCxcuNDOz888/31q0aGFbt26tUu/yyy83wN566y1zzrl9Hc2Uz31/czZhdH0acALQTVIW8BBwJXA+8K/1aOdS4D0zO8vMzgCeN7N7gfeAnmbWM9Y7FFhpZl+1kIku2e0WVh3qBFwgqVOK40wipKLNJ6RqfSCWDwZGSTof+GGs8yQh2H7XzDqbWSIxTrmZnWdmjxHWjD/HzM4C/gwMNLMFwDPAj+J+7yQd/4/A1yQdGn++mp055Ovsf2Pkc0/kdG7Xrh0A7du3B2DNmjV11tuxYwfr1q2rrLNu3Tpmz57NhRdeyKmnnrqbPXLOuf1Pugf3hWa23sy+IIxSc4EvA6Vm9tf4Kem39WhnBXCxpHExHesnNdSrIIyQU/m2pBJClrbTSZoWB5DUijCqLorZ8iYCxwKYWRlhRD4X+KGZfVhLXx9Pen+GpFdjNrfvxuPWyMx2EGYOrpTUgpB3/vf16X/cf5KZdTGzLm1qO1ADWPyanOr4Wl2qeg899BBffPEFQ4YMaaTeOOfc/iHdv+eenJa0gp3nW9MXq3dQ9QNPFoCZvS0pH7iMkBL1RTNLlYq13MwqqhdK6kAYiZ9jZh9JmppoO8lBwMdm1rmGvp0JbKKGe+xJknPSTwWuMrNlkq4jTLPX5XHgRsLU/Ztmtrme/W8UHTp0AGD9+vUAbNiwobK8vLycjIwMWrZsWaVe27Zt+f/t3X+QVeV9x/H3h2UDxCUKMquGKIsdaxuN8mucRo01Ia0QrcBApjiphoaWiQRDas1MW6dkRjNtxzLF6WgWDMs0thbJmpoJKIm0ArYwCEiVH6sYwtKUH2IaUoQodpZ8+8d5Fs+uu+69cH+wl89r5gznPs9zzvnehwPfc8957n0OHDjAwIEDT33S7+jooKWlhYsvvpipU6eWI1Qzs7NWrX9y78lrwGhJv5Ze35Gr2weMA5A0Dhid1j8KvB0R/wQs7GwDHAOGFnDMj5Al3aOSLiJ7tt1FRLwFtEv6fDqmJF2b1q9L24wF7kvJtpDjDwUOSaon++Te6YO2W0f2/v6Y9+4C9Bl/qUyePJnGxkaam5tpbm6mpaWFpqYmmpqaGDJkCNOmTQPgrrvuAuD+++/noYceYuPGjcycOZPBg7NrjpUrV3Lw4EFmz55Nfb0nvTOzc8s5l9wj4gTZM+xnJP0H8F+56u8Bw9Nt8buB11P5J4DNqfx+4Jup/DFgtaS1fRzzFbLb2buAZcCGXpp+AZgt6ZXUdoqkQWRjBL4U2Vfz/hRYpuz+8z8AiyW9LGlID/v7S7LBfWvILmo6PQl8XdJ/5i5yOmM9CawiS+Crioz/jA0ePJjW1lYaGhqYP38+jY2NtLa2UlfXdfD/+PHjefTRR2lra2PBggVMnjyZRYsWnapfsmQJAwYMYM6cOeUK1czsrOUpX60sJkhR8ISvPgfNzABP+WpmZma9cHK38hhfxDfdzcyspJzczczMaoyTu5mZWY1xcjczM6sxtf4jNlYtL70EffyqXMH8XN7MrCj+5G5mZlZjnNzPQZLqJM1Pvx9vZmY1xsn9NEmaJikk/Ua1YzkN95JNjdvRU6Wkj0p6qsIxFWTDhg1cc801DBo0iHHjxrFt27b3tXnnnXeYOHEiDQ0NSGLhwoVd6mfMmMGwYcOQxLx58yoVuplZxTi5n747eG/e9IJJquu7VflIGgC8EREtvdQPjIiDETGjwqH16cSJExvYUckAAAobSURBVEyfPp1jx46xaNEiDh8+zIwZMzh5sutcPSdPnmT48OFMmjSpx/0MGjTo1G/Um5nVIif305CmZ70BmE1K7pIGSPqWpF2SVkl6VtKMVLdP0oL0W/aflzRG0iZJ2yU9LWlYardO0sOSNkramSaMQdJ5kpZJ2pJ+D35KKq+TtFDSjrSve3LHG5HWJ0hal9avI7sguTcd48pUPktSq6SVwHOSmiTtTHVNadrYbWm5vjK9/H6rV6/m8OHDzJ07l7lz5zJ79mza29tZt25dl3YNDQ20trZy22239bifJ5544tTEM2ZmtcjPXE/PVOCHaSrYI2kGucvJ5ov/BNAIvEo2yUqnExFxI4Ck7cA9EbFe0gPAN4CvpXbnRcT1km5K219NNlnN8xHxJUkXkE1i86/AXWQz142NiA5Jw/uI+zXgptT2FuCvgOmp7pPANRFxRFJTbps3gd+JiBOSrgCWAz3+7rGkOWST8nBZH4Gcjvb2dgBGjhwJcGp617179zJx4sQyHNHMrH9ycj89dwAPp/Un0+t6oDUifgW80cNMcSsAJJ0PXBAR61P5d4DWXLvlABHxgqSPpGT+u8Dtku5LbQaT5c/PAos7n51HxJE+4h4KfFvSSEDAhbm6Nb1sXw88ImkMcBL49d52HhGPkc2UxwSp7N9f65z0SKX6yp2ZWY1wci+SpAuBzwBXK0tgdUAAT/ex6S8LPET3pBhkiXh6ROzuFot6aA/QwXuPXAbnyr8JrI2IxWlO+PwFSG/x/QlwGLg27fNEIW+iHEaPzqax379/PwAHDhw4VX7ixAnq6uo8d7uZGX7mfjpmAI9HxKiIaIqIS4F24H+A6enZ+0XAzT1tHBFHgV9I+lQquhNYn2vy+wCSbgSOpvY/Au5JyRxJY1Pb54Avd36lLXdbfh8wPq133nYHGAb8LK3PKvD9ng8cSnck7iS7mKmKyZMn09jYSHNzM83NzbS0tNDU1ERTUxNDhgzpMkhu6dKlvPDCCwBs3ryZpUuXcvz4cQBWrFjBM888A0BbWxtLly7l0KFDlX9DZmblEhFeiliAdcCkbmVfBZqBxUAb8H1gNdmzasiS7Yhc+zHAJmB7ajsst++/BjYCO4HrUvkQYAmwI5WvSuUDgb9Lx3wFmJfKPwW8Dvw7sBBYl8pvSOUbgAeBfal8FvBILr4mYGdavyLFuSnFdryQfipiTri+l5z169fH1VdfHfX19TFmzJjYsmVLtLe3BxC33nrrqXZkdzS6LO3t7RERMWrUqPfVrV27NszMqg3YGiXIVcr2ZaUgqSEijqdb95uBGyLijSK2XwfcFxFbyxVjpUyQSvcmfI6a2TlC0ksR0eOg5WL4mXtprUoD4D4EPFhMYjczMysVJ/cSioibq7n9WWX8eNja729AmJn1Sx5QZ2ZmVmOc3M3MzGqMk7uZmVmNcXI3MzOrMU7uZmZmNcbJ3czMrMY4uZuZmdUYJ3czM7Ma4+RuZmZWY/zb8lYWko4Bu/tsWH0jyGb0O9s5ztLpDzGC4yy1/hLnlREx9Ex34p+ftXLZXYrJD8pN0lbHWTr9Ic7+ECM4zlLrT3GWYj++LW9mZlZjnNzNzMxqjJO7lctj1Q6gQI6ztPpDnP0hRnCcpXZOxekBdWZmZjXGn9zNzMxqjJO7FU3SJEm7Je2R9Gc91A+StCLVvyipKVf356l8t6RbqhjjvZLaJG2X9G+SRuXqTkp6OS0/KFeMBcY5S9LPcvH8Ua7ui5J+nJYvVjnORbkYX5f0v7m6ivSnpGWS3pS0s5d6Sfr79B62SxqXq6tkX/YV5xdSfNslbZR0ba5un6QdqS9LMqr6DOK8WdLR3N/tglzdB54vFY7z67kYd6bzcXiqq0h/SrpU0lpJr0raJWl+D21Ke35GhBcvBS9AHfAT4HLgQ8ArwMe7tZkLLE7rM4EVaf3jqf0gYHTaT12VYvw08OG0fndnjOn18bOoL2cBj/Sw7XBgb/pzWFofVq04u7W/B1hWhf68CRgH7Oyl/nPAakDAbwEvVrovC4zz+s7jA5M740yv9wEjzpL+vBlYdabnS7nj7Nb294DnK92fwCXAuLQ+FHi9h3/rJT0//cndinUdsCci9kbE/wFPAlO6tZkCfCetPwVMlKRU/mREvBsR7cCetL+KxxgRayPi7fRyE/CxMsTRl0L6sje3AGsi4khE/AJYA0w6S+K8A1heplh6FREvAEc+oMkU4PHIbAIukHQJle3LPuOMiI0pDqjeuVlIf/bmTM7rohUZZ7XOzUMRsS2tHwNeBUZ2a1bS89PJ3Yo1Evjv3Ov9vP8kPdUmIjqAo8CFBW5bqRjzZpNdMXcaLGmrpE2SppYhvk6Fxjk93aZ7StKlRW5bCgUfKz3eGA08nyuuVH/2pbf3Ucm+LFb3czOA5yS9JGlOlWLK+6SkVyStlnRVKjsr+1PSh8mS4vdyxRXvT2WPKccCL3arKun56V+os2Kph7LuX7norU0h25ZCwceR9AfABOC3c8WXRcRBSZcDz0vaERE/qVKcK4HlEfGupC+T3RH5TIHblkoxx5oJPBURJ3NllerPvlT7vCyKpE+TJfcbc8U3pL5sBNZIei19cq2GbcCoiDgu6XPA94ErOEv7k+yW/IaIyH/Kr2h/Smogu7j4WkS81b26h01O+/z0J3cr1n7g0tzrjwEHe2sjaSBwPtlts0K2rVSMSPoscD9we0S821keEQfTn3uBdWRX2eXQZ5wR8fNcbN8Gxhe6bSXjzJlJt9ueFezPvvT2PirZlwWRdA2wFJgSET/vLM/15ZvA05TnsVZBIuKtiDie1p8F6iWN4Czsz+SDzs2y96ekerLE/kRE/EsPTUp7fpZ7IIGX2lrI7vbsJbv12jlY5qpubb5C1wF1303rV9F1QN1eyjOgrpAYx5IN+rmiW/kwYFBaHwH8mDINBiowzkty69OATWl9ONCe4h2W1odXK87U7kqyAUqqRn+mYzTR+wCwW+k6YGlzpfuywDgvIxuPcn238vOAobn1jcCkKsZ5ceffNVlS/Gnq24LOl0rFmeo7P2CcV43+TP3yOPDwB7Qp6fnp2/JWlIjokDQP+BHZqNhlEbFL0gPA1oj4AdAC/KOkPWT/oGambXdJ+i7QBnQAX4mut28rGePfAg1AazbWj59GxO3AbwJLJP2K7M7W30REW6ljLCLOr0q6nay/jpCNnicijkh6ENiSdvdAdL3dWOk4IRus9GSk/5GSivWnpOVkI7hHSNoPfAOoT+9hMfAs2YjkPcDbwB+muor1ZYFxLiAbo/KtdG52RDbhyUXA06lsIPDPEfHDKsY5A7hbUgfwDjAz/d33eL5UMU7ILoyfi4hf5jatZH/eANwJ7JD0cir7C7ILubKcn/6FOjMzsxrjZ+5mZmY1xsndzMysxji5m5mZ1RgndzMzsxrj5G5mZlZjnNzNzMxqjJO7mZlZjXFyNzMzqzH/Dxpb3DqUtX1lAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "sigma**2/n", - "execution_count": 40, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 40, - "data": { - "text/plain": "2.88" - }, - "metadata": {} - } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "pos = np.arange(12)\n", + "\n", + "for i in range(12):\n", + " plt.barh(pos[i], impact[i], align='center', height=.8, color='r')\n", + " plt.yticks(pos, sec)\n", + " plt.xlim((0, 2.0))\n", + "\n", + "for i, v in enumerate(impact):\n", + " l = \"{0:.2f}\".format(float(v))\n", + " plt.text(float(v)+.01, i-.25, \"{0:.2f}\".format(float(v)), color='black', fontweight='bold')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "markdown", - "source": "#### Exercise 2: Law of Large Numbers\nAs the number of identically distributed, randomly generated variables increases, their sample mean (average) approaches their theoretical mean." - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x = np.linspace(0, 4, 5)\nsize = np.logspace(0, 4, 5)\ndraws = 100\nmu = 0\nsigma = 1\n\nDATA = []\n\nfor s in size:\n d = np.random.normal(loc=mu, scale=sigma, size=(draws, int(s)))\n DATA.append(d.mean(axis=1))", - "execution_count": 41, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\nplt.boxplot(DATA)\nplt.xticks([1, 2, 3, 4, 5], ['$10^0$', '$10^1$', '$10^2$', '$10^3$', '$10^4$'])\nplt.xlabel('sample size')\nplt.title(\"Distribution of the mean\\n{0} replications for each sample size\".format(draws))\nplt.show()", - "execution_count": 43, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": "" - }, - "metadata": {} - } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "L = np.linalg.inv(np.eye(len(sectors))-A)\n", + "d = np.zeros(12).reshape(12, 1)\n", + "d[2, 0] = 1\n", + "\n", + "impact = L@d\n", + "pos = np.arange(12)\n", + "\n", + "for i in range(12):\n", + " plt.barh(pos[i], impact[i], align='center', height=.8, color='r')\n", + " plt.yticks(pos, sec)\n", + " plt.xlim((0,1.7))\n", + " \n", + "for i, v in enumerate(impact):\n", + " l = \"{0:.2f}\".format(float(v))\n", + " plt.text(float(v)+.01, i-.25, \"{0:.2f}\".format(float(v)), color='black', fontweight='bold')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Agropecuária: 1.6731\n", + "Indústria extrativa: 1.6181\n", + "Indústria de transformação: 2.1342\n", + "Utilidades: 1.7976\n", + "Construção civil: 1.8425\n", + "Comércio: 1.5198\n", + "Transporte: 1.8479\n", + "Serviços de informação: 1.6966\n", + "Intermediação financeira: 1.5236\n", + "Atividades imobiliárias: 1.0954\n", + "Outros serviços: 1.5636\n", + "Administração pública: 1.4200\n" + ] + } + ], + "source": [ + "impact = []\n", + "sec = []\n", + "for sector, id in sectors.items():\n", + " i = \"{0:0.4f}\".format(L[:,id].sum())\n", + " print(sector, \": \", i, sep='')\n", + " impact.append(i)\n", + " sec.append(sector)" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "#### Exercise 3: Central Limit Theorem\nsource: Wolfram MathWorld" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import math\n\nn_bins = 50\ndraws = int(1e4)\n\nk = 0.5\ntheta = 1.0\nmu = k*theta\nsigma = math.sqrt(k)*theta\n\nS = [10, 30, 50, 100]\n\nfig, axes = plt.subplots(nrows=2, ncols=2)\nax = axes.flatten()\n\n# normal pdf\nnormpdf = lambda x: (1/math.sqrt(2*math.pi))*math.exp(-x**2/2)\nt = np.linspace(-4,4,50)\ny = [y for y in map(normpdf, t)]\n\nfor i, x in enumerate(ax):\n n = S[i]\n s = np.random.gamma(shape = k, scale = theta, size = (draws, n))\n s = (np.mean(s, axis=1)-mu)/(sigma/math.sqrt(n))\n x.hist(s, n_bins, range = (-4, 4), normed=1, histtype='stepfilled', color = 'gray')\n x.plot(t, y, 'r', linewidth=3)\n x.set_yticklabels([])\n x.set_title('n = {0}'.format(n))\n\nfig.tight_layout()\nplt.show()", - "execution_count": 11, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": "" - }, - "metadata": {} - } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pos = np.arange(12)\n", + "\n", + "for i in range(12):\n", + " plt.barh(pos[i], impact[i], align='edge', height=.8, color='r')\n", + " plt.yticks(pos, sec)\n", + " plt.xlim((0,2.3))\n", + " \n", + "for i, v in enumerate(impact):\n", + " l = \"{0:.2f}\".format(float(v))\n", + " plt.text(float(v)+.01, i-.25, \"{0:.2f}\".format(float(v)), color='black', fontweight='bold')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Random arrays (`random`) - Matrizes Randomicas" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy import random as rd" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.33504551, 0.44071867],\n", + " [0.8455523 , 0.57913819],\n", + " [0.68006321, 0.60939797]])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "", - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "name": "python3", - "display_name": "Python 3", - "language": "python" - }, - "language_info": { - "mimetype": "text/x-python", - "nbconvert_exporter": "python", - "name": "python", - "file_extension": ".py", - "version": "3.5.4", - "pygments_lexer": "ipython3", - "codemirror_mode": { - "version": 3, - "name": "ipython" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} \ No newline at end of file + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rd.rand(3, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.41042948, 0.31241154],\n", + " [0.93695509, 0.27320886],\n", + " [0.12268868, 0.87671031]])" + ] + }, + "execution_count": 189, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.random.rand(3, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.0504399 , 0.21857161],\n", + " [0.18244948, 0.23708749],\n", + " [0.2995859 , 0.56284799]])" + ] + }, + "execution_count": 190, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rd.seed(1910)\n", + "np.random.rand(3, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.0504399 , 0.21857161],\n", + " [0.18244948, 0.23708749],\n", + " [0.2995859 , 0.56284799]])" + ] + }, + "execution_count": 191, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rd.seed(1910)\n", + "np.random.rand(3, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.54773602],\n", + " [-2.05072622]])" + ] + }, + "execution_count": 192, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rd.randn(2, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([15, 19, 18, 16, 12])" + ] + }, + "execution_count": 193, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rd.randint(10, 20, size=5, dtype=np.int)" + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": {}, + "outputs": [], + "source": [ + "pop = np.linspace(0, 99, 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,\n", + " 13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 25.,\n", + " 26., 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38.,\n", + " 39., 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., 50., 51.,\n", + " 52., 53., 54., 55., 56., 57., 58., 59., 60., 61., 62., 63., 64.,\n", + " 65., 66., 67., 68., 69., 70., 71., 72., 73., 74., 75., 76., 77.,\n", + " 78., 79., 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90.,\n", + " 91., 92., 93., 94., 95., 96., 97., 98., 99.])" + ] + }, + "execution_count": 195, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pop" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n", + " 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n", + " 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,\n", + " 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,\n", + " 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,\n", + " 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])" + ] + }, + "execution_count": 196, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.arange(100)" + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[41.],\n", + " [92.],\n", + " [ 7.],\n", + " [37.],\n", + " [68.],\n", + " [27.],\n", + " [61.],\n", + " [40.],\n", + " [74.],\n", + " [46.]])" + ] + }, + "execution_count": 197, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rd.choice(pop, size=(10, 1), replace=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([24., 26., 41., 31., 82., 36., 48., 76., 20., 90., 3., 69., 9.,\n", + " 79., 67., 62., 74., 40., 54., 96., 13., 56., 33., 23., 85., 92.,\n", + " 4., 14., 11., 21., 35., 58., 94., 7., 15., 30., 42., 37., 63.,\n", + " 97., 60., 73., 61., 78., 91., 93., 66., 83., 45., 25., 6., 59.,\n", + " 46., 51., 43., 95., 64., 38., 55., 86., 98., 47., 81., 28., 12.,\n", + " 19., 75., 84., 10., 44., 29., 39., 52., 80., 53., 2., 18., 16.,\n", + " 1., 49., 27., 71., 57., 0., 88., 22., 50., 68., 89., 8., 17.,\n", + " 32., 72., 99., 70., 77., 65., 34., 87., 5.])" + ] + }, + "execution_count": 198, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rd.shuffle(pop)\n", + "pop" + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([88., 76., 72., 27., 44., 65., 25., 35., 40., 13., 38., 94., 85.,\n", + " 63., 98., 97., 96., 61., 53., 75., 56., 48., 73., 16., 59., 2.,\n", + " 67., 47., 11., 78., 14., 60., 99., 90., 87., 9., 68., 1., 45.,\n", + " 32., 64., 71., 8., 36., 31., 15., 57., 54., 12., 10., 79., 52.,\n", + " 84., 69., 74., 22., 82., 41., 20., 91., 33., 50., 37., 80., 95.,\n", + " 21., 81., 23., 39., 93., 7., 77., 92., 49., 19., 43., 4., 3.,\n", + " 58., 51., 66., 29., 89., 0., 18., 34., 42., 17., 55., 5., 26.,\n", + " 70., 46., 30., 86., 83., 6., 62., 24., 28.])" + ] + }, + "execution_count": 199, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rd.permutation(pop)" + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([24., 26., 41., 31., 82., 36., 48., 76., 20., 90., 3., 69., 9.,\n", + " 79., 67., 62., 74., 40., 54., 96., 13., 56., 33., 23., 85., 92.,\n", + " 4., 14., 11., 21., 35., 58., 94., 7., 15., 30., 42., 37., 63.,\n", + " 97., 60., 73., 61., 78., 91., 93., 66., 83., 45., 25., 6., 59.,\n", + " 46., 51., 43., 95., 64., 38., 55., 86., 98., 47., 81., 28., 12.,\n", + " 19., 75., 84., 10., 44., 29., 39., 52., 80., 53., 2., 18., 16.,\n", + " 1., 49., 27., 71., 57., 0., 88., 22., 50., 68., 89., 8., 17.,\n", + " 32., 72., 99., 70., 77., 65., 34., 87., 5.])" + ] + }, + "execution_count": 200, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pop" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Lock', 'RandomState', '__RandomState_ctor', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_numpy_tester', 'absolute_import', 'bench', 'beta', 'binomial', 'bytes', 'chisquare', 'choice', 'dirichlet', 'division', 'exponential', 'f', 'gamma', 'geometric', 'get_state', 'gumbel', 'hypergeometric', 'info', 'laplace', 'logistic', 'lognormal', 'logseries', 'mtrand', 'multinomial', 'multivariate_normal', 'negative_binomial', 'noncentral_chisquare', 'noncentral_f', 'normal', 'np', 'operator', 'pareto', 'permutation', 'poisson', 'power', 'print_function', 'rand', 'randint', 'randn', 'random', 'random_integers', 'random_sample', 'ranf', 'rayleigh', 'sample', 'seed', 'set_state', 'shuffle', 'standard_cauchy', 'standard_exponential', 'standard_gamma', 'standard_normal', 'standard_t', 'test', 'triangular', 'uniform', 'vonmises', 'wald', 'warnings', 'weibull', 'zipf']\n" + ] + } + ], + "source": [ + "print(dir(rd))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Exercício 1" + ] + }, + { + "cell_type": "code", + "execution_count": 202, + "metadata": {}, + "outputs": [], + "source": [ + "mu = 4\n", + "sigma = 12\n", + "n = 50\n", + "N = int(1e5)" + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "metadata": {}, + "outputs": [], + "source": [ + "A = rd.normal(loc=mu, scale=sigma, size=(n, N))" + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "metadata": {}, + "outputs": [], + "source": [ + "avg = np.mean(A, axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(100000,)" + ] + }, + "execution_count": 205, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "avg.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.9066983895805354" + ] + }, + "execution_count": 206, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.var(avg)" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.88" + ] + }, + "execution_count": 207, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sigma**2/n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Exercício 2: Law of Large Numbers - Lei dos grandes números\n", + "À medida que o número de variáveis geradas aleatoriamente distribuídas de forma idêntica aumenta, a média da amostra (média) aproxima-se da média teórica. (inglês)" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "metadata": {}, + "outputs": [], + "source": [ + "x = np.linspace(0, 4, 5)\n", + "size = np.logspace(0, 4, 5)\n", + "draws = 100\n", + "mu = 0\n", + "sigma = 1\n", + "\n", + "DATA = []\n", + "\n", + "for s in size:\n", + " d = np.random.normal(loc=mu, scale=sigma, size=(draws, int(s)))\n", + " DATA.append(d.mean(axis=1))" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.boxplot(DATA)\n", + "plt.xticks([1, 2, 3, 4, 5], ['$10^0$', '$10^1$', '$10^2$', '$10^3$', '$10^4$'])\n", + "plt.xlabel('sample size')\n", + "plt.title(\"Distribution of the mean\\n{0} replications for each sample size\".format(draws))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Exercício 3: Central Limit Theorem - Teorema do Limite Central\n", + "source: Wolfram MathWorld" + ] + }, + { + "cell_type": "code", + "execution_count": 211, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "import math\n", + "\n", + "n_bins = 50\n", + "draws = int(1e4)\n", + "\n", + "k = 0.5\n", + "theta = 1.0\n", + "mu = k*theta\n", + "sigma = math.sqrt(k)*theta\n", + "\n", + "S = [10, 30, 50, 100]\n", + "\n", + "fig, axes = plt.subplots(nrows=2, ncols=2)\n", + "ax = axes.flatten()\n", + "\n", + "# normal pdf\n", + "normpdf = lambda x: (1/math.sqrt(2*math.pi))*math.exp(-x**2/2)\n", + "t = np.linspace(-4,4,50)\n", + "y = [y for y in map(normpdf, t)]\n", + "\n", + "for i, x in enumerate(ax):\n", + " n = S[i]\n", + " s = np.random.gamma(shape = k, scale = theta, size = (draws, n))\n", + " s = (np.mean(s, axis=1)-mu)/(sigma/math.sqrt(n))\n", + " x.hist(s, n_bins, range = (-4, 4), normed=1, histtype='stepfilled', color = 'gray')\n", + " x.plot(t, y, 'r', linewidth=3)\n", + " x.set_yticklabels([])\n", + " x.set_title('n = {0}'.format(n))\n", + "\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/0-pre-requisitos/2-math/calculo_num\303\251rico.ipynb" "b/0-pre-requisitos/2-math/calculo_num\303\251rico.ipynb" old mode 100644 new mode 100755 index a66ec4d..53d9f22 --- "a/0-pre-requisitos/2-math/calculo_num\303\251rico.ipynb" +++ "b/0-pre-requisitos/2-math/calculo_num\303\251rico.ipynb" @@ -1,429 +1,668 @@ { - "cells": [ - { - "metadata": {}, - "cell_type": "markdown", - "source": "# Roots and Integration of real-valued functions\n\nDiscuss the relevant concepts and the computational implementation of methods to find roots of real-valued functions: \n- Bisection\n- Newton's Method (or Newton-Raphson)\n- Quasi-Newton (Secant)" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\nx = [x/10 for x in range(0, 21)]\ny = [x**3-1 for x in x]\nplt.plot(x, y, 'b')\nplt.axhline(y=0, linewidth=.5, color='k', marker='.')\nplt.show()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import numpy as np\nimport matplotlib.pyplot as plt\nx = np.linspace(-3, 3)\ny = [x**3-1-3*x+1 for x in x]\nplt.plot(x, y, 'b')\nplt.axhline(y=0, linewidth=.5, color='k', marker='.')\nplt.show()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Bracketing\n### Bisection" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def bisection(f, a, b, delta=1e-5, eps=1e-7):\n\n # f: a function\n # a: lower limit\n # b: upper limit\n \n if f(a)*f(b) <= 0:\n \n x_low = a\n x_high = b\n e = 1 # abs(x_high - x_low)\n d = 1 # f(M)\n i = 0\n #print(\"{joao:2d}: [{x_low:0.8f}, {x_high:0.8f}]\".format(joao = i, x_low = x_low, x_high = x_high))\n \n while abs(e)>eps*(1+abs(x_low)+abs(x_high)) or abs(d)>delta:\n \n i += 1\n \n midpoint = (x_low+x_high)/2\n if f(x_low)*f(midpoint)<0:\n x_high = midpoint\n else:\n x_low = midpoint\n \n midpoint = (x_low+x_high)/2\n e = x_high-x_low\n d = f(midpoint)\n #print(\"{i:2d}: [{x_low:0.12f}, {x_high:0.12f}]\".format(i = i, x_low = x_low, x_high = x_high))\n \n return midpoint", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def func(x):\n return x**3-1", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%time bisection(func, .4, 3)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# testing\n%time bisection(lambda x: x**3-1, .4, 3)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "collapsed": true - }, - "cell_type": "markdown", - "source": "## Newton's Method" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "http://mathworld.wolfram.com/NewtonsMethod.html
\nhttp://tutorial.math.lamar.edu/Classes/CalcI/NewtonsMethod.aspx" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# derive\ndef derive(func, x, eps=1e-6):\n \"derive: calculates the derivative of a real-valued function at a certain point of its domain.\"\n if func(x) or func(x) == 0:\n return (func(x+eps)-func(x-eps))/(2*eps)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# newton\ndef newton(func, x, eps=10**(-5), delta=10**(-7)):\n \"newton: finds a root of a real-valued function using Newton's method.\"\n \n e = 1\n d = abs(func(x))\n i = 0\n \n x0 = x\n \n while e>eps or d>delta:\n \n i = i+1\n x1 = x0-(func(x0)/derive(func, x0))\n e = abs(x1-x0)\n d = abs(func(x1))\n print(\"interaction: \", i)\n print(\"{0:.6f} -> {1:.6f}\".format(x0,x1))\n print(\"e={0:.6f} d={1:.6f}\".format(e,d))\n print(\"---------------------------------\")\n x0 = x1\n \n return (x0, i)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%time newton(lambda w: w**3-1, 3)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Quasi-Newton" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Secant Method\nhttp://mathworld.wolfram.com/SecantMethod.html" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# quasi-newton (secant)\ndef secant(func, x0, x1, eps=10**(-5), delta=10**(-7)):\n \"quasi-newton (secant): finds a root of a real-valued function using the secant method.\"\n \n e = 1\n d = abs(func(x1))\n i = 0\n \n while e>eps or d>delta:\n \n i = i+1\n x2 = x1-(func(x1)*(x1-x0)/(func(x1)-func(x0)))\n e = abs(x2-x1)\n d = abs(func(x2))\n print(\"interaction: \", i)\n print(\"{0:.6f} -> {1:.6f}\".format(x1, x2))\n print(\"e={0:.6f} d={1:.6f}\".format(e, d))\n print(\"---------------------------------\")\n x0 = x1\n x1 = x2\n \n return (x2, i)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%time secant(lambda w: w**3-1, 4, 3)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## using `scipy.optimize`" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "from scipy import optimize as opt", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%time opt.bisect(lambda w: w**3-1, .4, 3)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%time opt.newton(lambda w: w**3-1, 3)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%time opt.newton(lambda w: w**3-1, 3, fprime=lambda w: 3*(w**2))", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "markdown", - "source": "## Application: Internal Rate of Return" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import matplotlib.pyplot as plt\n\nv = [-1000, 500, 500, 500, -200]\ndef vpl(v, r):\n return sum([value*(1+r)**(-period) for period, value in enumerate(v)])\n\nx = [x/400 for x in range(101)]\ny = [vpl(v, r) for r in x]\nplt.plot(x, y, 'b')\nplt.axhline(y=0, linewidth=.5, color='k', marker='.')\nplt.xlim((0,.3))\nplt.show()", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "from scipy import optimize as opt\ndef irr(v, r0):\n \n def vpl(r):\n return sum([value*(1+r)**(-t) for t,value in enumerate(v)])\n \n return opt.newton(vpl, r0)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# testing\nv = [-1000, 500, 500, 500, -200]\nirr(v, 0.05)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Integration" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import math", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "print(dir(math))", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "math.e", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "math.exp(2)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "math.pi", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "math.nan", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Rectangle method\n$\\int_{a}^{b}{f(x)dx} \\approx \\Delta x\\,\\sum_{i=1}^{n}{f(m_i)}$ where $\\Delta x = \\frac{b-a}{n}$ and $m_{i} = a + \\frac{\\Delta x}{2} i$" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def rectangle(f, a, b, n):\n \n step = (b-a)/n\n I = 0\n \n for i in range(int(n)):\n I += f(a+(2*i+1)*step/2)\n \n return I*step", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "1e5", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# test 1\nrectangle(lambda x: x**2, 0, 12, 1e5)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# test 1\nrectangle(lambda x: math.exp(x), 0, 1, 10)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Trapezoid rule\n$\\int_{a}^{b}{f(x)dx} \\approx \\frac{\\Delta x}{2}\\,\\sum_{i=1}^{n}{[f(x_{i-1})+f(x_{i})]} = \\frac{\\Delta x}{2}\\,\\left[f(x_{0})+2\\,f(x_{1})+2\\,f(x_{1})+...+2\\,f(x_{n-1})+f(x_{n})\\right]$ where $\\Delta x = \\frac{b-a}{n}$ and $x_{i} = a + \\Delta x\\,i$" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def trapezoid(f, a, b, n):\n \n step = (b - a)/n\n I = f(a) + f(b)\n \n for i in range(1, int(n), 1):\n I += 2*f(a+i*step)\n \n return I*step/2", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# test\ntrapezoid(lambda x: x**2, 0, 12, 1000)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# test\ntrapezoid(lambda x: math.exp(x), 0, 1, 10)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Simpson's rule\n[Reference from Wolfran's MathWorld](http://mathworld.wolfram.com/SimpsonsRule.html)\n\n$\\int_{a}^{b}{f(x)dx} \\approx \\frac{\\Delta x}{3}\\,\\left[f(x_{0})+4\\,f(x_{1})+2\\,f(x_{2})+4\\,f(x_{3})+2\\,f(x_{4})+...+2\\,f(x_{n-2})+4\\,f(x_{n-1})+f(x_{n})\\right]$ where $\\Delta x = \\frac{b-a}{n}$." - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def simpson(f, a, b, n):\n \n step = (b-a)/n\n I = f(a)+f(b)\n \n for i in range(1, int(n), 2):\n I += 4*f(a+i*step)\n \n for i in range(2, int(n-1), 2):\n I += 2*f(a+i*step)\n \n return I*step/3", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# test\nsimpson(lambda x: x**2, 0, 12, 1e5)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# test\nsimpson(lambda x: math.exp(x), 0, 1, 10)", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "from scipy import integrate\n# help(integrate)", - "execution_count": 47, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "help(integrate.trapz)", - "execution_count": 50, - "outputs": [ - { - "output_type": "stream", - "text": "Help on function trapz in module numpy.lib.function_base:\n\ntrapz(y, x=None, dx=1.0, axis=-1)\n Integrate along the given axis using the composite trapezoidal rule.\n \n Integrate `y` (`x`) along given axis.\n \n Parameters\n ----------\n y : array_like\n Input array to integrate.\n x : array_like, optional\n The sample points corresponding to the `y` values. If `x` is None,\n the sample points are assumed to be evenly spaced `dx` apart. The\n default is None.\n dx : scalar, optional\n The spacing between sample points when `x` is None. The default is 1.\n axis : int, optional\n The axis along which to integrate.\n \n Returns\n -------\n trapz : float\n Definite integral as approximated by trapezoidal rule.\n \n See Also\n --------\n sum, cumsum\n \n Notes\n -----\n Image [2]_ illustrates trapezoidal rule -- y-axis locations of points\n will be taken from `y` array, by default x-axis distances between\n points will be 1.0, alternatively they can be provided with `x` array\n or with `dx` scalar. Return value will be equal to combined area under\n the red lines.\n \n \n References\n ----------\n .. [1] Wikipedia page: http://en.wikipedia.org/wiki/Trapezoidal_rule\n \n .. [2] Illustration image:\n http://en.wikipedia.org/wiki/File:Composite_trapezoidal_rule_illustration.png\n \n Examples\n --------\n >>> np.trapz([1,2,3])\n 4.0\n >>> np.trapz([1,2,3], x=[4,6,8])\n 8.0\n >>> np.trapz([1,2,3], dx=2)\n 8.0\n >>> a = np.arange(6).reshape(2, 3)\n >>> a\n array([[0, 1, 2],\n [3, 4, 5]])\n >>> np.trapz(a, axis=0)\n array([ 1.5, 2.5, 3.5])\n >>> np.trapz(a, axis=1)\n array([ 2., 8.])\n\n", - "name": "stdout" - } - ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "", - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "anaconda-cloud": {}, - "kernelspec": { - "name": "python3", - "display_name": "Python 3", - "language": "python" - }, - "language_info": { - "mimetype": "text/x-python", - "nbconvert_exporter": "python", - "name": "python", - "pygments_lexer": "ipython3", - "version": "3.5.4", - "file_extension": ".py", - "codemirror_mode": { - "version": 3, - "name": "ipython" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Roots and Integration of real-valued functions\n", + "\n", + "Discussão sobre a implementação computacional e conceitos relevantes de métodos para encontrar a raíz de funções com valor real:\n", + "\n", + "Discuss the relevant concepts and the computational implementation of methods to find roots of real-valued functions: \n", + "- Bisection - Método da Bissecção\n", + "- Newton's Method (or Newton-Raphson) - Método de Newton-Raphson\n", + "- Quasi-Newton (Secant) - Método da Secante" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "x = [x/10 for x in range(0, 21)]\n", + "y = [x**3-1 for x in x]\n", + "plt.plot(x, y, 'b')\n", + "plt.axhline(y=0, linewidth=.5, color='k', marker='.')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "x = np.linspace(-3, 3)\n", + "y = [x**3-1-3*x+1 for x in x]\n", + "plt.plot(x, y, 'b')\n", + "plt.axhline(y=0, linewidth=.5, color='k', marker='.')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bracketing\n", + "### Bisection - Bissecsção" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def bisection(f, a, b, delta=1e-5, eps=1e-7):\n", + "\n", + " # f: a function\n", + " # a: lower limit\n", + " # b: upper limit\n", + " \n", + " if f(a)*f(b) <= 0:\n", + " \n", + " x_low = a\n", + " x_high = b\n", + " e = 1 # abs(x_high - x_low)\n", + " d = 1 # f(M)\n", + " i = 0\n", + " #print(\"{joao:2d}: [{x_low:0.8f}, {x_high:0.8f}]\".format(joao = i, x_low = x_low, x_high = x_high))\n", + " \n", + " while abs(e)>eps*(1+abs(x_low)+abs(x_high)) or abs(d)>delta:\n", + " \n", + " i += 1\n", + " \n", + " midpoint = (x_low+x_high)/2\n", + " if f(x_low)*f(midpoint)<0:\n", + " x_high = midpoint\n", + " else:\n", + " x_low = midpoint\n", + " \n", + " midpoint = (x_low+x_high)/2\n", + " e = x_high-x_low\n", + " d = f(midpoint)\n", + " #print(\"{i:2d}: [{x_low:0.12f}, {x_high:0.12f}]\".format(i = i, x_low = x_low, x_high = x_high))\n", + " \n", + " return midpoint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def func(x):\n", + " return x**3-1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time bisection(func, .4, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# testing\n", + "%time bisection(lambda x: x**3-1, .4, 3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Newton's Method - Método de Newton" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "http://mathworld.wolfram.com/NewtonsMethod.html
\n", + "http://tutorial.math.lamar.edu/Classes/CalcI/NewtonsMethod.aspx" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# derive\n", + "def derive(func, x, eps=1e-6):\n", + " \"derive: calculates the derivative of a real-valued function at a certain point of its domain.\"\n", + " if func(x) or func(x) == 0:\n", + " return (func(x+eps)-func(x-eps))/(2*eps)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# newton\n", + "def newton(func, x, eps=10**(-5), delta=10**(-7)):\n", + " \"newton: finds a root of a real-valued function using Newton's method.\"\n", + " \n", + " e = 1\n", + " d = abs(func(x))\n", + " i = 0\n", + " \n", + " x0 = x\n", + " \n", + " while e>eps or d>delta:\n", + " \n", + " i = i+1\n", + " x1 = x0-(func(x0)/derive(func, x0))\n", + " e = abs(x1-x0)\n", + " d = abs(func(x1))\n", + " print(\"interaction: \", i)\n", + " print(\"{0:.6f} -> {1:.6f}\".format(x0,x1))\n", + " print(\"e={0:.6f} d={1:.6f}\".format(e,d))\n", + " print(\"---------------------------------\")\n", + " x0 = x1\n", + " \n", + " return (x0, i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time newton(lambda w: w**3-1, 3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quasi-Newton" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Secant Method - Método Secante\n", + "http://mathworld.wolfram.com/SecantMethod.html" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# quasi-newton (secant)\n", + "def secant(func, x0, x1, eps=10**(-5), delta=10**(-7)):\n", + " \"quasi-newton (secant): finds a root of a real-valued function using the secant method.\"\n", + " \n", + " e = 1\n", + " d = abs(func(x1))\n", + " i = 0\n", + " \n", + " while e>eps or d>delta:\n", + " \n", + " i = i+1\n", + " x2 = x1-(func(x1)*(x1-x0)/(func(x1)-func(x0)))\n", + " e = abs(x2-x1)\n", + " d = abs(func(x2))\n", + " print(\"interaction: \", i)\n", + " print(\"{0:.6f} -> {1:.6f}\".format(x1, x2))\n", + " print(\"e={0:.6f} d={1:.6f}\".format(e, d))\n", + " print(\"---------------------------------\")\n", + " x0 = x1\n", + " x1 = x2\n", + " \n", + " return (x2, i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time secant(lambda w: w**3-1, 4, 3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## using `scipy.optimize`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy import optimize as opt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time opt.bisect(lambda w: w**3-1, .4, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time opt.newton(lambda w: w**3-1, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time opt.newton(lambda w: w**3-1, 3, fprime=lambda w: 3*(w**2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Application: Internal Rate of Return" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "v = [-1000, 500, 500, 500, -200]\n", + "def vpl(v, r):\n", + " return sum([value*(1+r)**(-period) for period, value in enumerate(v)])\n", + "\n", + "x = [x/400 for x in range(101)]\n", + "y = [vpl(v, r) for r in x]\n", + "plt.plot(x, y, 'b')\n", + "plt.axhline(y=0, linewidth=.5, color='k', marker='.')\n", + "plt.xlim((0,.3))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy import optimize as opt\n", + "def irr(v, r0):\n", + " \n", + " def vpl(r):\n", + " return sum([value*(1+r)**(-t) for t,value in enumerate(v)])\n", + " \n", + " return opt.newton(vpl, r0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# testing\n", + "v = [-1000, 500, 500, 500, -200]\n", + "irr(v, 0.05)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Integration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(dir(math))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "math.e" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "math.exp(2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "math.pi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "math.nan" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Rectangle method\n", + "$\\int_{a}^{b}{f(x)dx} \\approx \\Delta x\\,\\sum_{i=1}^{n}{f(m_i)}$ where $\\Delta x = \\frac{b-a}{n}$ and $m_{i} = a + \\frac{\\Delta x}{2} i$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def rectangle(f, a, b, n):\n", + " \n", + " step = (b-a)/n\n", + " I = 0\n", + " \n", + " for i in range(int(n)):\n", + " I += f(a+(2*i+1)*step/2)\n", + " \n", + " return I*step" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "1e5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# test 1\n", + "rectangle(lambda x: x**2, 0, 12, 1e5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# test 1\n", + "rectangle(lambda x: math.exp(x), 0, 1, 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Trapezoid rule\n", + "$\\int_{a}^{b}{f(x)dx} \\approx \\frac{\\Delta x}{2}\\,\\sum_{i=1}^{n}{[f(x_{i-1})+f(x_{i})]} = \\frac{\\Delta x}{2}\\,\\left[f(x_{0})+2\\,f(x_{1})+2\\,f(x_{1})+...+2\\,f(x_{n-1})+f(x_{n})\\right]$ where $\\Delta x = \\frac{b-a}{n}$ and $x_{i} = a + \\Delta x\\,i$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def trapezoid(f, a, b, n):\n", + " \n", + " step = (b - a)/n\n", + " I = f(a) + f(b)\n", + " \n", + " for i in range(1, int(n), 1):\n", + " I += 2*f(a+i*step)\n", + " \n", + " return I*step/2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# test\n", + "trapezoid(lambda x: x**2, 0, 12, 1000)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# test\n", + "trapezoid(lambda x: math.exp(x), 0, 1, 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simpson's rule\n", + "[Reference from Wolfran's MathWorld](http://mathworld.wolfram.com/SimpsonsRule.html)\n", + "\n", + "$\\int_{a}^{b}{f(x)dx} \\approx \\frac{\\Delta x}{3}\\,\\left[f(x_{0})+4\\,f(x_{1})+2\\,f(x_{2})+4\\,f(x_{3})+2\\,f(x_{4})+...+2\\,f(x_{n-2})+4\\,f(x_{n-1})+f(x_{n})\\right]$ where $\\Delta x = \\frac{b-a}{n}$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def simpson(f, a, b, n):\n", + " \n", + " step = (b-a)/n\n", + " I = f(a)+f(b)\n", + " \n", + " for i in range(1, int(n), 2):\n", + " I += 4*f(a+i*step)\n", + " \n", + " for i in range(2, int(n-1), 2):\n", + " I += 2*f(a+i*step)\n", + " \n", + " return I*step/3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# test\n", + "simpson(lambda x: x**2, 0, 12, 1e5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# test\n", + "simpson(lambda x: math.exp(x), 0, 1, 10)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy import integrate\n", + "# help(integrate)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function trapz in module numpy.lib.function_base:\n", + "\n", + "trapz(y, x=None, dx=1.0, axis=-1)\n", + " Integrate along the given axis using the composite trapezoidal rule.\n", + " \n", + " Integrate `y` (`x`) along given axis.\n", + " \n", + " Parameters\n", + " ----------\n", + " y : array_like\n", + " Input array to integrate.\n", + " x : array_like, optional\n", + " The sample points corresponding to the `y` values. If `x` is None,\n", + " the sample points are assumed to be evenly spaced `dx` apart. The\n", + " default is None.\n", + " dx : scalar, optional\n", + " The spacing between sample points when `x` is None. The default is 1.\n", + " axis : int, optional\n", + " The axis along which to integrate.\n", + " \n", + " Returns\n", + " -------\n", + " trapz : float\n", + " Definite integral as approximated by trapezoidal rule.\n", + " \n", + " See Also\n", + " --------\n", + " sum, cumsum\n", + " \n", + " Notes\n", + " -----\n", + " Image [2]_ illustrates trapezoidal rule -- y-axis locations of points\n", + " will be taken from `y` array, by default x-axis distances between\n", + " points will be 1.0, alternatively they can be provided with `x` array\n", + " or with `dx` scalar. Return value will be equal to combined area under\n", + " the red lines.\n", + " \n", + " \n", + " References\n", + " ----------\n", + " .. [1] Wikipedia page: http://en.wikipedia.org/wiki/Trapezoidal_rule\n", + " \n", + " .. [2] Illustration image:\n", + " http://en.wikipedia.org/wiki/File:Composite_trapezoidal_rule_illustration.png\n", + " \n", + " Examples\n", + " --------\n", + " >>> np.trapz([1,2,3])\n", + " 4.0\n", + " >>> np.trapz([1,2,3], x=[4,6,8])\n", + " 8.0\n", + " >>> np.trapz([1,2,3], dx=2)\n", + " 8.0\n", + " >>> a = np.arange(6).reshape(2, 3)\n", + " >>> a\n", + " array([[0, 1, 2],\n", + " [3, 4, 5]])\n", + " >>> np.trapz(a, axis=0)\n", + " array([ 1.5, 2.5, 3.5])\n", + " >>> np.trapz(a, axis=1)\n", + " array([ 2., 8.])\n", + "\n" + ] } + ], + "source": [ + "help(integrate.trapz)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 2 -} \ No newline at end of file + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/0-pre-requisitos/2-math/data/regression.csv b/0-pre-requisitos/2-math/data/regression.csv old mode 100644 new mode 100755 diff --git a/0-pre-requisitos/2-math/data/tech_coef.csv b/0-pre-requisitos/2-math/data/tech_coef.csv old mode 100644 new mode 100755 diff --git a/0-pre-requisitos/2-math/linear_algebra.ipynb b/0-pre-requisitos/2-math/linear_algebra.ipynb new file mode 100755 index 0000000..6e0c8f1 --- /dev/null +++ b/0-pre-requisitos/2-math/linear_algebra.ipynb @@ -0,0 +1,2035 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Linear Algebra\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "- [Linear Algebra](#Linear-Algebra) \n", + " - [Overview](#Overview) \n", + " - [Vectors](#Vectors) \n", + " - [Matrices](#Matrices) \n", + " - [Solving Systems of Equations](#Solving-Systems-of-Equations) \n", + " - [Eigenvalues and Eigenvectors](#Eigenvalues-and-Eigenvectors) \n", + " - [Further Topics](#Further-Topics) \n", + " - [Exercises](#Exercises) \n", + " - [Solutions](#Solutions) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Overview\n", + "\n", + "Linear algebra is one of the most useful branches of applied mathematics for economists to invest in\n", + "\n", + "For example, many applied problems in economics and finance require the solution of a linear system of equations, such as\n", + "\n", + "$$\n", + "\\begin{array}{c}\n", + " y_1 = a x_1 + b x_2 \\\\\n", + " y_2 = c x_1 + d x_2\n", + "\\end{array}\n", + "$$\n", + "\n", + "or, more generally,\n", + "\n", + "\n", + "\n", + "$$\n", + "\\begin{array}{c}\n", + " y_1 = a_{11} x_1 + a_{12} x_2 + \\cdots + a_{1k} x_k \\\\\n", + " \\vdots \\\\\n", + " y_n = a_{n1} x_1 + a_{n2} x_2 + \\cdots + a_{nk} x_k\n", + "\\end{array} \\tag{1}\n", + "$$\n", + "\n", + "The objective here is to solve for the “unknowns” $ x_1, \\ldots, x_k $ given $ a_{11}, \\ldots, a_{nk} $ and $ y_1, \\ldots, y_n $\n", + "\n", + "When considering such problems, it is essential that we first consider at least some of the following questions\n", + "\n", + "- Does a solution actually exist? \n", + "- Are there in fact many solutions, and if so how should we interpret them? \n", + "- If no solution exists, is there a best “approximate” solution? \n", + "- If a solution exists, how should we compute it? \n", + "\n", + "\n", + "These are the kinds of topics addressed by linear algebra\n", + "\n", + "In this lecture we will cover the basics of linear and matrix algebra, treating both theory and computation\n", + "\n", + "We admit some overlap with [this lecture](https://lectures.quantecon.org/py/numpy.html), where operations on NumPy arrays were first explained\n", + "\n", + "Note that this lecture is more theoretical than most, and contains background\n", + "material that will be used in applications as we go along" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vectors\n", + "\n", + "\n", + "\n", + "A *vector* of length $ n $ is just a sequence (or array, or tuple) of $ n $ numbers, which we write as $ x = (x_1, \\ldots, x_n) $ or $ x = [x_1, \\ldots, x_n] $\n", + "\n", + "We will write these sequences either horizontally or vertically as we please\n", + "\n", + "(Later, when we wish to perform certain matrix operations, it will become necessary to distinguish between the two)\n", + "\n", + "The set of all $ n $-vectors is denoted by $ \\mathbb R^n $\n", + "\n", + "For example, $ \\mathbb R ^2 $ is the plane, and a vector in $ \\mathbb R^2 $ is just a point in the plane\n", + "\n", + "Traditionally, vectors are represented visually as arrows from the origin to\n", + "the point\n", + "\n", + "The following figure represents three vectors in this manner" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 8))\n", + "# Set the axes through the origin\n", + "for spine in ['left', 'bottom']:\n", + " ax.spines[spine].set_position('zero')\n", + "for spine in ['right', 'top']:\n", + " ax.spines[spine].set_color('none')\n", + "\n", + "ax.set(xlim=(-5, 5), ylim=(-5, 5))\n", + "ax.grid()\n", + "vecs = ((2, 4), (-3, 3), (-4, -3.5))\n", + "for v in vecs:\n", + " ax.annotate('', xy=v, xytext=(0, 0),\n", + " arrowprops=dict(facecolor='blue',\n", + " shrink=0,\n", + " alpha=0.7,\n", + " width=0.5))\n", + " ax.text(1.1 * v[0], 1.1 * v[1], str(v))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Vector Operations\n", + "\n", + "\n", + "\n", + "The two most common operators for vectors are addition and scalar multiplication, which we now describe\n", + "\n", + "As a matter of definition, when we add two vectors, we add them element by element\n", + "\n", + "$$\n", + "x + y =\n", + "\\left[\n", + "\\begin{array}{c}\n", + " x_1 \\\\\n", + " x_2 \\\\\n", + " \\vdots \\\\\n", + " x_n\n", + "\\end{array}\n", + "\\right] +\n", + "\\left[\n", + "\\begin{array}{c}\n", + " y_1 \\\\\n", + " y_2 \\\\\n", + " \\vdots \\\\\n", + " y_n\n", + "\\end{array}\n", + "\\right] :=\n", + "\\left[\n", + "\\begin{array}{c}\n", + " x_1 + y_1 \\\\\n", + " x_2 + y_2 \\\\\n", + " \\vdots \\\\\n", + " x_n + y_n\n", + "\\end{array}\n", + "\\right]\n", + "$$\n", + "\n", + "Scalar multiplication is an operation that takes a number $ \\gamma $ and a\n", + "vector $ x $ and produces\n", + "\n", + "$$\n", + "\\gamma x :=\n", + "\\left[\n", + "\\begin{array}{c}\n", + " \\gamma x_1 \\\\\n", + " \\gamma x_2 \\\\\n", + " \\vdots \\\\\n", + " \\gamma x_n\n", + "\\end{array}\n", + "\\right]\n", + "$$\n", + "\n", + "Scalar multiplication is illustrated in the next figure" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "hide-output": false, + "html-class": "collapse" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 8))\n", + "# Set the axes through the origin\n", + "for spine in ['left', 'bottom']:\n", + " ax.spines[spine].set_position('zero')\n", + "for spine in ['right', 'top']:\n", + " ax.spines[spine].set_color('none')\n", + "\n", + "ax.set(xlim=(-5, 5), ylim=(-5, 5))\n", + "x = (2, 2)\n", + "ax.annotate('', xy=x, xytext=(0, 0),\n", + " arrowprops=dict(facecolor='blue',\n", + " shrink=0,\n", + " alpha=1,\n", + " width=0.5))\n", + "ax.text(x[0] + 0.4, x[1] - 0.2, '$x$', fontsize='16')\n", + "\n", + "\n", + "scalars = (-2, 2)\n", + "x = np.array(x)\n", + "\n", + "for s in scalars:\n", + " v = s * x\n", + " ax.annotate('', xy=v, xytext=(0, 0),\n", + " arrowprops=dict(facecolor='red',\n", + " shrink=0,\n", + " alpha=0.5,\n", + " width=0.5))\n", + " ax.text(v[0] + 0.4, v[1] - 0.2, f'${s} x$', fontsize='16')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Python, a vector can be represented as a list or tuple, such as `x = (2, 4, 6)`, but is more commonly represented as a [NumPy array](https://lectures.quantecon.org/py/numpy.html#numpy-array)\n", + "\n", + "One advantage of NumPy arrays is that scalar multiplication and addition have very natural syntax" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3., 5., 7.])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = np.ones(3) # Vector of three ones\n", + "y = np.array((2, 4, 6)) # Converts tuple (2, 4, 6) into array\n", + "x + y" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([4., 4., 4.])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "4 * x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Inner Product and Norm\n", + "\n", + "\n", + "\n", + "The *inner product* of vectors $ x,y \\in \\mathbb R ^n $ is defined as\n", + "\n", + "$$\n", + "x' y := \\sum_{i=1}^n x_i y_i\n", + "$$\n", + "\n", + "Two vectors are called *orthogonal* if their inner product is zero\n", + "\n", + "The *norm* of a vector $ x $ represents its “length” (i.e., its distance from the zero vector) and is defined as\n", + "\n", + "$$\n", + "\\| x \\| := \\sqrt{x' x} := \\left( \\sum_{i=1}^n x_i^2 \\right)^{1/2}\n", + "$$\n", + "\n", + "The expression $ \\| x - y\\| $ is thought of as the distance between $ x $ and $ y $\n", + "\n", + "Continuing on from the previous example, the inner product and norm can be computed as\n", + "follows" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "12.0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.sum(x * y) # Inner product of x and y" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1.7320508075688772" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.sqrt(np.sum(x**2)) # Norm of x, take one" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1.7320508075688772" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.norm(x) # Norm of x, take two" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Span\n", + "\n", + "\n", + "\n", + "Given a set of vectors $ A := \\{a_1, \\ldots, a_k\\} $ in $ \\mathbb R ^n $, it’s natural to think about the new vectors we can create by performing linear operations\n", + "\n", + "New vectors created in this manner are called *linear combinations* of $ A $\n", + "\n", + "In particular, $ y \\in \\mathbb R ^n $ is a linear combination of $ A := \\{a_1, \\ldots, a_k\\} $ if\n", + "\n", + "$$\n", + "y = \\beta_1 a_1 + \\cdots + \\beta_k a_k\n", + "\\text{ for some scalars } \\beta_1, \\ldots, \\beta_k\n", + "$$\n", + "\n", + "In this context, the values $ \\beta_1, \\ldots, \\beta_k $ are called the *coefficients* of the linear combination\n", + "\n", + "The set of linear combinations of $ A $ is called the *span* of $ A $\n", + "\n", + "The next figure shows the span of $ A = \\{a_1, a_2\\} $ in $ \\mathbb R ^3 $\n", + "\n", + "The span is a 2 dimensional plane passing through these two points and the origin\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "hide-output": false, + "html-class": "collapse" + }, + "outputs": [ + { + "data": { + "image/png": "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xepra2tDZmYmHnnkEWzdupUjBYhuj2GIiGgwhBC4fv26fOjs6dOnERISIg+ATElJwahRo1xSyzfffIM//vGPyMnJweLFi13ymkQqwDBERDSUhBBobW2VF2OfPXsWY8eOlWcczZ49e8gPnRVC4MCBA8jNzUVeXh7i4+OH9M8nUjmGISKi4SSEQFNTEwwGA4qKilBWVoYJEyZAr9dDp9Nh5syZg9rq3tfXh2effRZmsxm5ubkICgoawuqJvALDEBGRKwkhUF9fL4ej77//HnFxccjIyIBer4dWq73jdT6tra1YuXIllixZgs2bN3N9ENG9YRgiIlKSJEmora2Vw1FVVRUSExPlNUcJCQk/G3JKS0uRlZWFV155BYsWLVKgciLVYBgiInInkiShoqJCPnS2rq4OWq0WOp0Oer0ecXFxeP/99/HRRx+hoKAAcXFxSpdM5OkYhoiI3JnT6cS5c+fkBdllZWVITk7GoUOHEBgYqHR5RGrAMERE5EnMZjP8/f1dtl2fyAswDBEREZFXu6MwxO0JRERE5NUYhoiIiMirMQwRERGRV2MYIiIiIq/GMERERERejWGIiIiIvBrDEBEREXk1hiEiIiLyagxDRERE5NUYhoiIiMirMQwRERGRV2MYIiIiIq/GMERERERejWGIiIiIvBrDEBEREXk1hiEiIiLyagxDRERE5NUYhoiIiMirMQwRERGRV2MYIiIiIq/GMERERERejWGIiIiIvBrDEBEREXk1hiEiIiLyar53+ft9hqUKIiIiIoWwM0RERERejWGIiIiIvBrDEBEREXk1hiEiIiLyagxDRERE5NUYhoiIiMirMQwRERGRV2MYIiIiIq/GMERERERejWGIiIiIvNr/AV5wMTJvueVBAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import cm\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "from scipy.interpolate import interp2d\n", + "\n", + "fig = plt.figure(figsize=(10, 8))\n", + "ax = fig.gca(projection='3d')\n", + "\n", + "x_min, x_max = -5, 5\n", + "y_min, y_max = -5, 5\n", + "\n", + "α, β = 0.2, 0.1\n", + "\n", + "ax.set(xlim=(x_min, x_max), ylim=(x_min, x_max), zlim=(x_min, x_max),\n", + " xticks=(0,), yticks=(0,), zticks=(0,))\n", + "\n", + "gs = 3\n", + "z = np.linspace(x_min, x_max, gs)\n", + "x = np.zeros(gs)\n", + "y = np.zeros(gs)\n", + "ax.plot(x, y, z, 'k-', lw=2, alpha=0.5)\n", + "ax.plot(z, x, y, 'k-', lw=2, alpha=0.5)\n", + "ax.plot(y, z, x, 'k-', lw=2, alpha=0.5)\n", + "\n", + "\n", + "# Fixed linear function, to generate a plane\n", + "def f(x, y):\n", + " return α * x + β * y\n", + "\n", + "# Vector locations, by coordinate\n", + "x_coords = np.array((3, 3))\n", + "y_coords = np.array((4, -4))\n", + "z = f(x_coords, y_coords)\n", + "for i in (0, 1):\n", + " ax.text(x_coords[i], y_coords[i], z[i], f'$a_{i+1}$', fontsize=14)\n", + "\n", + "# Lines to vectors\n", + "for i in (0, 1):\n", + " x = (0, x_coords[i])\n", + " y = (0, y_coords[i])\n", + " z = (0, f(x_coords[i], y_coords[i]))\n", + " ax.plot(x, y, z, 'b-', lw=1.5, alpha=0.6)\n", + "\n", + "\n", + "# Draw the plane\n", + "grid_size = 20\n", + "xr2 = np.linspace(x_min, x_max, grid_size)\n", + "yr2 = np.linspace(y_min, y_max, grid_size)\n", + "x2, y2 = np.meshgrid(xr2, yr2)\n", + "z2 = f(x2, y2)\n", + "ax.plot_surface(x2, y2, z2, rstride=1, cstride=1, cmap=cm.jet,\n", + " linewidth=0, antialiased=True, alpha=0.2)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Examples\n", + "\n", + "If $ A $ contains only one vector $ a_1 \\in \\mathbb R ^2 $, then its\n", + "span is just the scalar multiples of $ a_1 $, which is the unique line passing through both $ a_1 $ and the origin\n", + "\n", + "If $ A = \\{e_1, e_2, e_3\\} $ consists of the *canonical basis vectors* of $ \\mathbb R ^3 $, that is\n", + "\n", + "$$\n", + "e_1 :=\n", + "\\left[\n", + "\\begin{array}{c}\n", + " 1 \\\\\n", + " 0 \\\\\n", + " 0\n", + "\\end{array}\n", + "\\right]\n", + ", \\quad\n", + "e_2 :=\n", + "\\left[\n", + "\\begin{array}{c}\n", + " 0 \\\\\n", + " 1 \\\\\n", + " 0\n", + "\\end{array}\n", + "\\right]\n", + ", \\quad\n", + "e_3 :=\n", + "\\left[\n", + "\\begin{array}{c}\n", + " 0 \\\\\n", + " 0 \\\\\n", + " 1\n", + "\\end{array}\n", + "\\right]\n", + "$$\n", + "\n", + "then the span of $ A $ is all of $ \\mathbb R ^3 $, because, for any\n", + "$ x = (x_1, x_2, x_3) \\in \\mathbb R ^3 $, we can write\n", + "\n", + "$$\n", + "x = x_1 e_1 + x_2 e_2 + x_3 e_3\n", + "$$\n", + "\n", + "Now consider $ A_0 = \\{e_1, e_2, e_1 + e_2\\} $\n", + "\n", + "If $ y = (y_1, y_2, y_3) $ is any linear combination of these vectors, then $ y_3 = 0 $ (check it)\n", + "\n", + "Hence $ A_0 $ fails to span all of $ \\mathbb R ^3 $\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Linear Independence\n", + "\n", + "\n", + "\n", + "As we’ll see, it’s often desirable to find families of vectors with relatively large span, so that many vectors can be described by linear operators on a few vectors\n", + "\n", + "The condition we need for a set of vectors to have a large span is what’s called linear independence\n", + "\n", + "In particular, a collection of vectors $ A := \\{a_1, \\ldots, a_k\\} $ in $ \\mathbb R ^n $ is said to be\n", + "\n", + "- *linearly dependent* if some strict subset of $ A $ has the same span as $ A $ \n", + "- *linearly independent* if it is not linearly dependent \n", + "\n", + "\n", + "Put differently, a set of vectors is linearly independent if no vector is redundant to the span, and linearly dependent otherwise\n", + "\n", + "To illustrate the idea, recall [the figure](#la-3dvec) that showed the span of vectors $ \\{a_1, a_2\\} $ in $ \\mathbb R ^3 $ as a plane through the origin\n", + "\n", + "If we take a third vector $ a_3 $ and form the set $ \\{a_1, a_2, a_3\\} $, this set will be\n", + "\n", + "- linearly dependent if $ a_3 $ lies in the plane \n", + "- linearly independent otherwise \n", + "\n", + "\n", + "As another illustration of the concept, since $ \\mathbb R ^n $ can be spanned by $ n $ vectors\n", + "(see the discussion of canonical basis vectors above), any collection of\n", + "$ m > n $ vectors in $ \\mathbb R ^n $ must be linearly dependent\n", + "\n", + "The following statements are equivalent to linear independence of $ A := \\{a_1, \\ldots, a_k\\} \\subset \\mathbb R ^n $\n", + "\n", + "1. No vector in $ A $ can be formed as a linear combination of the other elements \n", + "1. If $ \\beta_1 a_1 + \\cdots \\beta_k a_k = 0 $ for scalars $ \\beta_1, \\ldots, \\beta_k $, then $ \\beta_1 = \\cdots = \\beta_k = 0 $ \n", + "\n", + "\n", + "(The zero in the first expression is the origin of $ \\mathbb R ^n $)\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unique Representations\n", + "\n", + "Another nice thing about sets of linearly independent vectors is that each element in the span has a unique representation as a linear combination of these vectors\n", + "\n", + "In other words, if $ A := \\{a_1, \\ldots, a_k\\} \\subset \\mathbb R ^n $ is\n", + "linearly independent and\n", + "\n", + "$$\n", + "y = \\beta_1 a_1 + \\cdots \\beta_k a_k\n", + "$$\n", + "\n", + "then no other coefficient sequence $ \\gamma_1, \\ldots, \\gamma_k $ will produce\n", + "the same vector $ y $\n", + "\n", + "Indeed, if we also have $ y = \\gamma_1 a_1 + \\cdots \\gamma_k a_k $,\n", + "then\n", + "\n", + "$$\n", + "(\\beta_1 - \\gamma_1) a_1 + \\cdots + (\\beta_k - \\gamma_k) a_k = 0\n", + "$$\n", + "\n", + "Linear independence now implies $ \\gamma_i = \\beta_i $ for all $ i $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Matrices\n", + "\n", + "\n", + "\n", + "Matrices are a neat way of organizing data for use in linear operations\n", + "\n", + "An $ n \\times k $ matrix is a rectangular array $ A $ of numbers with $ n $ rows and $ k $ columns:\n", + "\n", + "$$\n", + "A =\n", + "\\left[\n", + "\\begin{array}{cccc}\n", + " a_{11} & a_{12} & \\cdots & a_{1k} \\\\\n", + " a_{21} & a_{22} & \\cdots & a_{2k} \\\\\n", + " \\vdots & \\vdots & & \\vdots \\\\\n", + " a_{n1} & a_{n2} & \\cdots & a_{nk}\n", + "\\end{array}\n", + "\\right]\n", + "$$\n", + "\n", + "Often, the numbers in the matrix represent coefficients in a system of linear equations, as discussed at the start of this lecture\n", + "\n", + "For obvious reasons, the matrix $ A $ is also called a vector if either $ n = 1 $ or $ k = 1 $\n", + "\n", + "In the former case, $ A $ is called a *row vector*, while in the latter it is called a *column vector*\n", + "\n", + "If $ n = k $, then $ A $ is called *square*\n", + "\n", + "The matrix formed by replacing $ a_{ij} $ by $ a_{ji} $ for every $ i $ and $ j $ is called the *transpose* of $ A $, and denoted $ A' $ or $ A^{\\top} $\n", + "\n", + "If $ A = A' $, then $ A $ is called *symmetric*\n", + "\n", + "For a square matrix $ A $, the $ i $ elements of the form $ a_{ii} $ for $ i=1,\\ldots,n $ are called the *principal diagonal*\n", + "\n", + "$ A $ is called *diagonal* if the only nonzero entries are on the principal diagonal\n", + "\n", + "If, in addition to being diagonal, each element along the principal diagonal is equal to 1, then $ A $ is called the *identity matrix*, and denoted by $ I $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matrix Operations\n", + "\n", + "\n", + "\n", + "Just as was the case for vectors, a number of algebraic operations are defined for matrices\n", + "\n", + "Scalar multiplication and addition are immediate generalizations of the vector case:\n", + "\n", + "$$\n", + "\\gamma A =\n", + "\\gamma\n", + "\\left[\n", + "\\begin{array}{ccc}\n", + " a_{11} & \\cdots & a_{1k} \\\\\n", + " \\vdots & \\vdots & \\vdots \\\\\n", + " a_{n1} & \\cdots & a_{nk} \\\\\n", + "\\end{array}\n", + "\\right] :=\n", + "\\left[\n", + "\\begin{array}{ccc}\n", + " \\gamma a_{11} & \\cdots & \\gamma a_{1k} \\\\\n", + " \\vdots & \\vdots & \\vdots \\\\\n", + " \\gamma a_{n1} & \\cdots & \\gamma a_{nk} \\\\\n", + "\\end{array}\n", + "\\right]\n", + "$$\n", + "\n", + "and\n", + "\n", + "$$\n", + "A + B =\n", + "\\left[\n", + "\\begin{array}{ccc}\n", + " a_{11} & \\cdots & a_{1k} \\\\\n", + " \\vdots & \\vdots & \\vdots \\\\\n", + " a_{n1} & \\cdots & a_{nk} \\\\\n", + "\\end{array}\n", + "\\right] +\n", + "\\left[\n", + "\\begin{array}{ccc}\n", + " b_{11} & \\cdots & b_{1k} \\\\\n", + " \\vdots & \\vdots & \\vdots \\\\\n", + " b_{n1} & \\cdots & b_{nk} \\\\\n", + "\\end{array}\n", + "\\right] :=\n", + "\\left[\n", + "\\begin{array}{ccc}\n", + " a_{11} + b_{11} & \\cdots & a_{1k} + b_{1k} \\\\\n", + " \\vdots & \\vdots & \\vdots \\\\\n", + " a_{n1} + b_{n1} & \\cdots & a_{nk} + b_{nk} \\\\\n", + "\\end{array}\n", + "\\right]\n", + "$$\n", + "\n", + "In the latter case, the matrices must have the same shape in order for the definition to make sense\n", + "\n", + "We also have a convention for *multiplying* two matrices\n", + "\n", + "The rule for matrix multiplication generalizes the idea of inner products discussed above,\n", + "and is designed to make multiplication play well with basic linear operations\n", + "\n", + "If $ A $ and $ B $ are two matrices, then their product $ A B $ is formed by taking as its\n", + "$ i,j $-th element the inner product of the $ i $-th row of $ A $ and the\n", + "$ j $-th column of $ B $\n", + "\n", + "There are many tutorials to help you visualize this operation, such as [this one](http://www.mathsisfun.com/algebra/matrix-multiplying.html), or the discussion on the [Wikipedia page](https://en.wikipedia.org/wiki/Matrix_multiplication)\n", + "\n", + "If $ A $ is $ n \\times k $ and $ B $ is $ j \\times m $, then\n", + "to multiply $ A $ and $ B $ we require $ k = j $, and the\n", + "resulting matrix $ A B $ is $ n \\times m $\n", + "\n", + "As perhaps the most important special case, consider multiplying $ n \\times k $ matrix $ A $ and $ k \\times 1 $ column vector $ x $\n", + "\n", + "According to the preceding rule, this gives us an $ n \\times 1 $ column vector\n", + "\n", + "\n", + "\n", + "$$\n", + "A x =\n", + "\\left[\n", + "\\begin{array}{ccc}\n", + " a_{11} & \\cdots & a_{1k} \\\\\n", + " \\vdots & \\vdots & \\vdots \\\\\n", + " a_{n1} & \\cdots & a_{nk}\n", + "\\end{array}\n", + "\\right]\n", + "\\left[\n", + "\\begin{array}{c}\n", + " x_{1} \\\\\n", + " \\vdots \\\\\n", + " x_{k}\n", + "\\end{array}\n", + "\\right] :=\n", + "\\left[\n", + "\\begin{array}{c}\n", + " a_{11} x_1 + \\cdots + a_{1k} x_k \\\\\n", + " \\vdots \\\\\n", + " a_{n1} x_1 + \\cdots + a_{nk} x_k\n", + "\\end{array}\n", + "\\right] \\tag{2}\n", + "$$\n", + "\n", + ">**Note**\n", + ">\n", + ">$ A B $ and $ B A $ are not generally the same thing\n", + "\n", + "Another important special case is the identity matrix\n", + "\n", + "You should check that if $ A $ is $ n \\times k $ and $ I $ is the $ k \\times k $ identity matrix, then $ AI = A $\n", + "\n", + "If $ I $ is the $ n \\times n $ identity matrix, then $ IA = A $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matrices in NumPy\n", + "\n", + "\n", + "\n", + "NumPy arrays are also used as matrices, and have fast, efficient functions and methods for all the standard matrix operations [1]\n", + "\n", + "You can create them manually from tuples of tuples (or lists of lists) as follows" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "tuple" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = ((1, 2),\n", + " (3, 4))\n", + "\n", + "type(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = np.array(A)\n", + "\n", + "type(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(2, 2)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `shape` attribute is a tuple giving the number of rows and columns —\n", + "see [here](https://lectures.quantecon.org/py/numpy.html#numpy-shape-dim) for more discussion\n", + "\n", + "To get the transpose of `A`, use `A.transpose()` or, more simply, `A.T`\n", + "\n", + "There are many convenient functions for creating common matrices (matrices of zeros, ones, etc.) — see [here](https://lectures.quantecon.org/py/numpy.html#creating-arrays)\n", + "\n", + "Since operations are performed elementwise by default, scalar multiplication and addition have very natural syntax" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2., 0., 0.],\n", + " [0., 2., 0.],\n", + " [0., 0., 2.]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = np.identity(3)\n", + "B = np.ones((3, 3))\n", + "2 * A" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2., 1., 1.],\n", + " [1., 2., 1.],\n", + " [1., 1., 2.]])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A + B" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To multiply matrices we use the `@` symbol\n", + "\n", + "In particular, `A @ B` is matrix multiplication, whereas `A * B` is element by element multiplication\n", + "\n", + "See [here](https://lectures.quantecon.org/py/numpy.html#numpy-matrix-multiplication) for more discussion\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Matrices as Maps\n", + "\n", + "\n", + "\n", + "Each $ n \\times k $ matrix $ A $ can be identified with a function $ f(x) = Ax $ that maps $ x \\in \\mathbb R ^k $ into $ y = Ax \\in \\mathbb R ^n $\n", + "\n", + "These kinds of functions have a special property: they are *linear*\n", + "\n", + "A function $ f \\colon \\mathbb R ^k \\to \\mathbb R ^n $ is called *linear* if, for all $ x, y \\in \\mathbb R ^k $ and all scalars $ \\alpha, \\beta $, we have\n", + "\n", + "$$\n", + "f(\\alpha x + \\beta y) = \\alpha f(x) + \\beta f(y)\n", + "$$\n", + "\n", + "You can check that this holds for the function $ f(x) = A x + b $ when $ b $ is the zero vector, and fails when $ b $ is nonzero\n", + "\n", + "In fact, it’s [known](https://en.wikipedia.org/wiki/Linear_map#Matrices) that $ f $ is linear if and *only if* there exists a matrix $ A $ such that $ f(x) = Ax $ for all $ x $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solving Systems of Equations\n", + "\n", + "\n", + "\n", + "Recall again the system of equations [(1)](#equation-la-se)\n", + "\n", + "If we compare [(1)](#equation-la-se) and [(2)](#equation-la-atx), we see that [(1)](#equation-la-se) can now be\n", + "written more conveniently as\n", + "\n", + "\n", + "\n", + "$$\n", + "y = Ax \\tag{3}\n", + "$$\n", + "\n", + "The problem we face is to determine a vector $ x \\in \\mathbb R ^k $ that solves [(3)](#equation-la-se2), taking $ y $ and $ A $ as given\n", + "\n", + "This is a special case of a more general problem: Find an $ x $ such that $ y = f(x) $\n", + "\n", + "Given an arbitrary function $ f $ and a $ y $, is there always an $ x $ such that $ y = f(x) $?\n", + "\n", + "If so, is it always unique?\n", + "\n", + "The answer to both these questions is negative, as the next figure shows" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "hide-output": false, + "html-class": "collapse" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkMAAAI1CAYAAADVQv5HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3XdcVuX/x/E3MlQUcO+9UMGNigtzhqa40zKzYa40M6tvy5w50rKs/FpZuXCXO/3m3hiIOEBxK2puBRQHyPn9Qd4/SStU4NxwXs/H436g5zp4f4Rz3ff7vs51ruNgGIYAAACsKovZBQAAAJiJMAQAACyNMAQAACyNMAQAACyNMAQAACyNMAQAACyNMAQAACyNMAQAACyNMAQAACyNMAQAACzN6RH3594dAFKdv7+/Vq9ebXYZADIfh5TsxMgQANNdunTJ7BIAWBhhCAAAWBphCAAAWBphCAAAWBphCAAAWBphCAAAWBphCAAAWBphCAAAWBphCAAAWBphCAAAWBphCAAAixkyZIgqV66sgQMHml2KXXjUe5MBAIAM7NixY9q2bZsiIiLMLsVuMDIEAIBFREZGqnHjxjp58qRq1KihGzdumF2SXWBkCACAdObgkKKbqT8ywzD+sd3T01M9e/ZUqVKl1KtXrzSpISNiZAgAAAvZt2+fqlWrZnYZdoWRIQAA0tm/jeCkpfDwcHl5eZn2/PaIkSEAACwiNjZWzs7OcnV1NbsUu0IYAgDAIvbv3y9vb2+zy7A7Do84VGfeuB6ATMvHx0chISFmlwEg80nRTHVGhgAAgKURhgAAgKURhgAAgKURhgAAgKURhgAAgKURhgAAgKURhgAAgKURhgAAgKURhgAAgOkmT56sSpUqqXv37g9tHzJkiCpXrqyBAwem+nNzo1YAACzIMAwZhqEsWexjXGTKlClatWqVSpcu/UDbsWPHtG3bNkVERKTJc9vHTwAAAKS5EydOqFKlSurfv79q1qypqKgotW/fXrVq1ZKXl5e+++67ZPu99tpr8vLyUsuWLXXz5k1J0qhRo1SxYkW1aNFCzz33nCZOnChJmj17turUqaPq1aurT58+unv37kNr+Pzzz+Xt7S1vb2998cUXkqS+ffvq2LFjCggI0KRJk5LtHxkZqcaNG+vkyZOqUaOGbty4kfo/mHvJMIUPAEh1tWrVMrsEIN0NG2YYUuo9hg379+c8fvy44eDgYOzYscO27fLly4ZhGEZcXJzh5eVlXLp0yTh+/Ljh6Oho7N692zAMw+jSpYsxa9YsIzg42KhWrZoRFxdnxMTEGOXKlTMmTJhgREREGG3atDHu3LljGIZh9OvXz5gxY8YDzx8SEmJ4e3sb169fN2JjY43KlSsboaGhhmEYRsmSJY2LFy8+tO4PP/zQ+P777x/hp2uTonzDaTIAACykZMmS8vX1tf198uTJWrx4sSQpKipKhw8fVqFChVS6dGlVr15dklSrVi2dOHFCly5dUrt27ZQ9e3ZJUtu2bSVJ69at065du1S7dm1J0s2bN1WgQIEHnnvr1q3q0KGDcuTIIUnq2LGjtmzZoho1avxjzfv27VO7du2e8H/+9whDAABYyL0gIkkbN27U2rVrtWPHDrm6uuqpp57SrVu3JElZs2a17efo6KibN2/KMIyH/puGYahnz54aO3bsPz73333/vwkPD5eXl9djfW9KMGcIAAATDB+emifJkv69RxUdHa3cuXPL1dVVBw8eVFBQ0D/u37BhQy1fvly3bt3S9evXtXLlSklSs2bNtGjRIl24cEGSdOXKFZ08efKB7/fz89OSJUsUFxenGzduaPHixWrUqNE/PmdsbKycnZ3l6ur66P/BFGJkCAAAi/L399fUqVNVtWpVeXp6Jjt99jC1a9dWQECAqlWrppIlS8rHx0ceHh6qXLmyRo8erZYtWyoxMVHOzs765ptvVLJkyWTfX7NmTb300kuqU6eOJKlXr17/eops//798vb2frL/6L9weMQhq8cb3wKAf+Dj46OQkBCzywCQAtevX1fOnDkVFxcnPz8/fffdd6pZs6bZZf0dh5TsxMgQAABIsd69eysiIkK3bt1Sz5497TkIpRhhCAAApNicOXPMLiHVMYEaAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEIAABYGmEI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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def f(x):\n", + " return 0.6 * np.cos(4 * x) + 1.4\n", + "\n", + "\n", + "xmin, xmax = -1, 1\n", + "x = np.linspace(xmin, xmax, 160)\n", + "y = f(x)\n", + "ya, yb = np.min(y), np.max(y)\n", + "\n", + "fig, axes = plt.subplots(2, 1, figsize=(10, 10))\n", + "\n", + "for ax in axes:\n", + " # Set the axes through the origin\n", + " for spine in ['left', 'bottom']:\n", + " ax.spines[spine].set_position('zero')\n", + " for spine in ['right', 'top']:\n", + " ax.spines[spine].set_color('none')\n", + "\n", + " ax.set(ylim=(-0.6, 3.2), xlim=(xmin, xmax),\n", + " yticks=(), xticks=())\n", + "\n", + " ax.plot(x, y, 'k-', lw=2, label='$f$')\n", + " ax.fill_between(x, ya, yb, facecolor='blue', alpha=0.05)\n", + " ax.vlines([0], ya, yb, lw=3, color='blue', label='range of $f$')\n", + " ax.text(0.04, -0.3, '$0$', fontsize=16)\n", + "\n", + "ax = axes[0]\n", + "\n", + "ax.legend(loc='upper right', frameon=False)\n", + "ybar = 1.5\n", + "ax.plot(x, x * 0 + ybar, 'k--', alpha=0.5)\n", + "ax.text(0.05, 0.8 * ybar, '$y$', fontsize=16)\n", + "for i, z in enumerate((-0.35, 0.35)):\n", + " ax.vlines(z, 0, f(z), linestyle='--', alpha=0.5)\n", + " ax.text(z, -0.2, f'$x_{i}$', fontsize=16)\n", + "\n", + "ax = axes[1]\n", + "\n", + "ybar = 2.6\n", + "ax.plot(x, x * 0 + ybar, 'k--', alpha=0.5)\n", + "ax.text(0.04, 0.91 * ybar, '$y$', fontsize=16)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the first plot there are multiple solutions, as the function is not one-to-one, while\n", + "in the second there are no solutions, since $ y $ lies outside the range of $ f $\n", + "\n", + "Can we impose conditions on $ A $ in [(3)](#equation-la-se2) that rule out these problems?\n", + "\n", + "In this context, the most important thing to recognize about the expression\n", + "$ Ax $ is that it corresponds to a linear combination of the columns of $ A $\n", + "\n", + "In particular, if $ a_1, \\ldots, a_k $ are the columns of $ A $, then\n", + "\n", + "$$\n", + "Ax = x_1 a_1 + \\cdots + x_k a_k\n", + "$$\n", + "\n", + "Hence the range of $ f(x) = Ax $ is exactly the span of the columns of $ A $\n", + "\n", + "We want the range to be large, so that it contains arbitrary $ y $\n", + "\n", + "As you might recall, the condition that we want for the span to be large is [linear independence](#la-li)\n", + "\n", + "A happy fact is that linear independence of the columns of $ A $ also gives us uniqueness\n", + "\n", + "Indeed, it follows from our [earlier discussion](#la-unique-reps) that if $ \\{a_1, \\ldots, a_k\\} $ are linearly independent and $ y = Ax = x_1 a_1 + \\cdots + x_k a_k $, then no $ z \\not= x $ satisfies $ y = Az $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The $ n \\times n $ Case\n", + "\n", + "Let’s discuss some more details, starting with the case where $ A $ is $ n \\times n $\n", + "\n", + "This is the familiar case where the number of unknowns equals the number of equations\n", + "\n", + "For arbitrary $ y \\in \\mathbb R ^n $, we hope to find a unique $ x \\in \\mathbb R ^n $ such that $ y = Ax $\n", + "\n", + "In view of the observations immediately above, if the columns of $ A $ are\n", + "linearly independent, then their span, and hence the range of $ f(x) =\n", + "Ax $, is all of $ \\mathbb R ^n $\n", + "\n", + "Hence there always exists an $ x $ such that $ y = Ax $\n", + "\n", + "Moreover, the solution is unique\n", + "\n", + "In particular, the following are equivalent\n", + "\n", + "1. The columns of $ A $ are linearly independent \n", + "1. For any $ y \\in \\mathbb R ^n $, the equation $ y = Ax $ has a unique solution \n", + "\n", + "\n", + "The property of having linearly independent columns is sometimes expressed as having *full column rank*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Inverse Matrices\n", + "\n", + "\n", + "\n", + "Can we give some sort of expression for the solution?\n", + "\n", + "If $ y $ and $ A $ are scalar with $ A \\not= 0 $, then the\n", + "solution is $ x = A^{-1} y $\n", + "\n", + "A similar expression is available in the matrix case\n", + "\n", + "In particular, if square matrix $ A $ has full column rank, then it possesses a multiplicative\n", + "*inverse matrix* $ A^{-1} $, with the property that $ A A^{-1} = A^{-1} A = I $\n", + "\n", + "As a consequence, if we pre-multiply both sides of $ y = Ax $ by $ A^{-1} $, we get $ x = A^{-1} y $\n", + "\n", + "This is the solution that we’re looking for" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Determinants\n", + "\n", + "\n", + "\n", + "Another quick comment about square matrices is that to every such matrix we\n", + "assign a unique number called the *determinant* of the matrix — you can find\n", + "the expression for it [here](https://en.wikipedia.org/wiki/Determinant)\n", + "\n", + "If the determinant of $ A $ is not zero, then we say that $ A $ is\n", + "*nonsingular*\n", + "\n", + "Perhaps the most important fact about determinants is that $ A $ is nonsingular if and only if $ A $ is of full column rank\n", + "\n", + "This gives us a useful one-number summary of whether or not a square matrix can be\n", + "inverted" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### More Rows than Columns\n", + "\n", + "This is the $ n \\times k $ case with $ n > k $\n", + "\n", + "This case is very important in many settings, not least in the setting of linear regression (where $ n $ is the number of observations, and $ k $ is the number of explanatory variables)\n", + "\n", + "Given arbitrary $ y \\in \\mathbb R ^n $, we seek an $ x \\in \\mathbb R ^k $ such that $ y = Ax $\n", + "\n", + "In this setting, existence of a solution is highly unlikely\n", + "\n", + "Without much loss of generality, let’s go over the intuition focusing on the case where the columns of\n", + "$ A $ are linearly independent\n", + "\n", + "It follows that the span of the columns of $ A $ is a $ k $-dimensional subspace of $ \\mathbb R ^n $\n", + "\n", + "This span is very “unlikely” to contain arbitrary $ y \\in \\mathbb R ^n $\n", + "\n", + "To see why, recall the [figure above](#la-3dvec), where $ k=2 $ and $ n=3 $\n", + "\n", + "Imagine an arbitrarily chosen $ y \\in \\mathbb R ^3 $, located somewhere in that three dimensional space\n", + "\n", + "What’s the likelihood that $ y $ lies in the span of $ \\{a_1, a_2\\} $ (i.e., the two dimensional plane through these points)?\n", + "\n", + "In a sense it must be very small, since this plane has zero “thickness”\n", + "\n", + "As a result, in the $ n > k $ case we usually give up on existence\n", + "\n", + "However, we can still seek a best approximation, for example an\n", + "$ x $ that makes the distance $ \\| y - Ax\\| $ as small as possible\n", + "\n", + "To solve this problem, one can use either calculus or the theory of orthogonal\n", + "projections\n", + "\n", + "The solution is known to be $ \\hat x = (A'A)^{-1}A'y $ — see for example\n", + "chapter 3 of these notes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### More Columns than Rows\n", + "\n", + "This is the $ n \\times k $ case with $ n < k $, so there are fewer\n", + "equations than unknowns\n", + "\n", + "In this case there are either no solutions or infinitely many — in other words, uniqueness never holds\n", + "\n", + "For example, consider the case where $ k=3 $ and $ n=2 $\n", + "\n", + "Thus, the columns of $ A $ consists of 3 vectors in $ \\mathbb R ^2 $\n", + "\n", + "This set can never be linearly independent, since it is possible to find two vectors that span\n", + "$ \\mathbb R ^2 $\n", + "\n", + "(For example, use the canonical basis vectors)\n", + "\n", + "It follows that one column is a linear combination of the other two\n", + "\n", + "For example, let’s say that $ a_1 = \\alpha a_2 + \\beta a_3 $\n", + "\n", + "Then if $ y = Ax = x_1 a_1 + x_2 a_2 + x_3 a_3 $, we can also write\n", + "\n", + "$$\n", + "y\n", + "= x_1 (\\alpha a_2 + \\beta a_3) + x_2 a_2 + x_3 a_3\n", + "= (x_1 \\alpha + x_2) a_2 + (x_1 \\beta + x_3) a_3\n", + "$$\n", + "\n", + "In other words, uniqueness fails" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Linear Equations with SciPy\n", + "\n", + "\n", + "\n", + "Here’s an illustration of how to solve linear equations with SciPy’s `linalg` submodule\n", + "\n", + "All of these routines are Python front ends to time-tested and highly optimized FORTRAN code" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "-2.0" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from scipy.linalg import inv, solve, det\n", + "\n", + "A = ((1, 2), (3, 4))\n", + "A = np.array(A)\n", + "y = np.ones((2, 1)) # Column vector\n", + "det(A) # Check that A is nonsingular, and hence invertible" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-2. , 1. ],\n", + " [ 1.5, -0.5]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A_inv = inv(A) # Compute the inverse\n", + "A_inv" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1.],\n", + " [1.]])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = A_inv @ y # Solution\n", + "A @ x # Should equal y" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.],\n", + " [ 1.]])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solve(A, y) # Produces same solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Observe how we can solve for $ x = A^{-1} y $ by either via `inv(A) @ y`, or using `solve(A, y)`\n", + "\n", + "The latter method uses a different algorithm (LU decomposition) that is numerically more stable, and hence should almost always be preferred\n", + "\n", + "To obtain the least squares solution $ \\hat x = (A'A)^{-1}A'y $, use `scipy.linalg.lstsq(A, y)`\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Eigenvalues and Eigenvectors\n", + "\n", + "\n", + "\n", + "Let $ A $ be an $ n \\times n $ square matrix\n", + "\n", + "If $ \\lambda $ is scalar and $ v $ is a non-zero vector in $ \\mathbb R ^n $ such that\n", + "\n", + "$$\n", + "A v = \\lambda v\n", + "$$\n", + "\n", + "then we say that $ \\lambda $ is an *eigenvalue* of $ A $, and\n", + "$ v $ is an *eigenvector*\n", + "\n", + "Thus, an eigenvector of $ A $ is a vector such that when the map $ f(x) = Ax $ is applied, $ v $ is merely scaled\n", + "\n", + "The next figure shows two eigenvectors (blue arrows) and their images under $ A $ (red arrows)\n", + "\n", + "As expected, the image $ Av $ of each $ v $ is just a scaled version of the original" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "hide-output": false, + "html-class": "collapse" + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from scipy.linalg import eig\n", + "\n", + "A = ((1, 2),\n", + " (2, 1))\n", + "A = np.array(A)\n", + "evals, evecs = eig(A)\n", + "evecs = evecs[:, 0], evecs[:, 1]\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 8))\n", + "# Set the axes through the origin\n", + "for spine in ['left', 'bottom']:\n", + " ax.spines[spine].set_position('zero')\n", + "for spine in ['right', 'top']:\n", + " ax.spines[spine].set_color('none')\n", + "ax.grid(alpha=0.4)\n", + "\n", + "xmin, xmax = -3, 3\n", + "ymin, ymax = -3, 3\n", + "ax.set(xlim=(xmin, xmax), ylim=(ymin, ymax))\n", + "\n", + "# Plot each eigenvector\n", + "for v in evecs:\n", + " ax.annotate('', xy=v, xytext=(0, 0),\n", + " arrowprops=dict(facecolor='blue',\n", + " shrink=0,\n", + " alpha=0.6,\n", + " width=0.5))\n", + "\n", + "# Plot the image of each eigenvector\n", + "for v in evecs:\n", + " v = A @ v\n", + " ax.annotate('', xy=v, xytext=(0, 0),\n", + " arrowprops=dict(facecolor='red',\n", + " shrink=0,\n", + " alpha=0.6,\n", + " width=0.5))\n", + "\n", + "# Plot the lines they run through\n", + "x = np.linspace(xmin, xmax, 3)\n", + "for v in evecs:\n", + " a = v[1] / v[0]\n", + " ax.plot(x, a * x, 'b-', lw=0.4)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The eigenvalue equation is equivalent to $ (A - \\lambda I) v = 0 $, and\n", + "this has a nonzero solution $ v $ only when the columns of $ A -\n", + "\\lambda I $ are linearly dependent\n", + "\n", + "This in turn is equivalent to stating that the determinant is zero\n", + "\n", + "Hence to find all eigenvalues, we can look for $ \\lambda $ such that the\n", + "determinant of $ A - \\lambda I $ is zero\n", + "\n", + "This problem can be expressed as one of solving for the roots of a polynomial\n", + "in $ \\lambda $ of degree $ n $\n", + "\n", + "This in turn implies the existence of $ n $ solutions in the complex\n", + "plane, although some might be repeated\n", + "\n", + "Some nice facts about the eigenvalues of a square matrix $ A $ are as follows\n", + "\n", + "1. The determinant of $ A $ equals the product of the eigenvalues \n", + "1. The trace of $ A $ (the sum of the elements on the principal diagonal) equals the sum of the eigenvalues \n", + "1. If $ A $ is symmetric, then all of its eigenvalues are real \n", + "1. If $ A $ is invertible and $ \\lambda_1, \\ldots, \\lambda_n $ are its eigenvalues, then the eigenvalues of $ A^{-1} $ are $ 1/\\lambda_1, \\ldots, 1/\\lambda_n $ \n", + "\n", + "\n", + "A corollary of the first statement is that a matrix is invertible if and only if all its eigenvalues are nonzero\n", + "\n", + "Using SciPy, we can solve for the eigenvalues and eigenvectors of a matrix as\n", + "follows" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 3.+0.j, -1.+0.j])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A = ((1, 2),\n", + " (2, 1))\n", + "\n", + "A = np.array(A)\n", + "evals, evecs = eig(A)\n", + "evals" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.70710678, -0.70710678],\n", + " [ 0.70710678, 0.70710678]])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "evecs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the *columns* of `evecs` are the eigenvectors\n", + "\n", + "Since any scalar multiple of an eigenvector is an eigenvector with the same\n", + "eigenvalue (check it), the eig routine normalizes the length of each eigenvector\n", + "to one" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generalized Eigenvalues\n", + "\n", + "It is sometimes useful to consider the *generalized eigenvalue problem*, which, for given\n", + "matrices $ A $ and $ B $, seeks generalized eigenvalues\n", + "$ \\lambda $ and eigenvectors $ v $ such that\n", + "\n", + "$$\n", + "A v = \\lambda B v\n", + "$$\n", + "\n", + "This can be solved in SciPy via `scipy.linalg.eig(A, B)`\n", + "\n", + "Of course, if $ B $ is square and invertible, then we can treat the\n", + "generalized eigenvalue problem as an ordinary eigenvalue problem $ B^{-1}\n", + "A v = \\lambda v $, but this is not always the case" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Further Topics\n", + "\n", + "We round out our discussion by briefly mentioning several other important\n", + "topics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Series Expansions\n", + "\n", + "\n", + "\n", + "Recall the usual summation formula for a geometric progression, which states\n", + "that if $ |a| < 1 $, then $ \\sum_{k=0}^{\\infty} a^k = (1 - a)^{-1} $\n", + "\n", + "A generalization of this idea exists in the matrix setting\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Matrix Norms\n", + "\n", + "\n", + "\n", + "Let $ A $ be a square matrix, and let\n", + "\n", + "$$\n", + "\\| A \\| := \\max_{\\| x \\| = 1} \\| A x \\|\n", + "$$\n", + "\n", + "The norms on the right-hand side are ordinary vector norms, while the norm on\n", + "the left-hand side is a *matrix norm* — in this case, the so-called\n", + "*spectral norm*\n", + "\n", + "For example, for a square matrix $ S $, the condition $ \\| S \\| < 1 $ means that $ S $ is *contractive*, in the sense that it pulls all vectors towards the origin [2]\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Neumann’s Theorem\n", + "\n", + "\n", + "\n", + "Let $ A $ be a square matrix and let $ A^k := A A^{k-1} $ with $ A^1 := A $\n", + "\n", + "In other words, $ A^k $ is the $ k $-th power of $ A $\n", + "\n", + "Neumann’s theorem states the following: If $ \\| A^k \\| < 1 $ for some\n", + "$ k \\in \\mathbb{N} $, then $ I - A $ is invertible, and\n", + "\n", + "\n", + "\n", + "$$\n", + "(I - A)^{-1} = \\sum_{k=0}^{\\infty} A^k \\tag{4}\n", + "$$\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Spectral Radius\n", + "\n", + "\n", + "\n", + "A result known as Gelfand’s formula tells us that, for any square matrix $ A $,\n", + "\n", + "$$\n", + "\\rho(A) = \\lim_{k \\to \\infty} \\| A^k \\|^{1/k}\n", + "$$\n", + "\n", + "Here $ \\rho(A) $ is the *spectral radius*, defined as $ \\max_i |\\lambda_i| $, where $ \\{\\lambda_i\\}_i $ is the set of eigenvalues of $ A $\n", + "\n", + "As a consequence of Gelfand’s formula, if all eigenvalues are strictly less than one in modulus,\n", + "there exists a $ k $ with $ \\| A^k \\| < 1 $\n", + "\n", + "In which case [(4)](#equation-la-neumann) is valid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Positive Definite Matrices\n", + "\n", + "\n", + "\n", + "Let $ A $ be a symmetric $ n \\times n $ matrix\n", + "\n", + "We say that $ A $ is\n", + "\n", + "1. *positive definite* if $ x' A x > 0 $ for every $ x \\in \\mathbb R ^n \\setminus \\{0\\} $ \n", + "1. *positive semi-definite* or *nonnegative definite* if $ x' A x \\geq 0 $ for every $ x \\in \\mathbb R ^n $ \n", + "\n", + "\n", + "Analogous definitions exist for negative definite and negative semi-definite matrices\n", + "\n", + "It is notable that if $ A $ is positive definite, then all of its eigenvalues\n", + "are strictly positive, and hence $ A $ is invertible (with positive\n", + "definite inverse)\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Differentiating Linear and Quadratic forms\n", + "\n", + "\n", + "\n", + "The following formulas are useful in many economic contexts. Let\n", + "\n", + "- $ z, x $ and $ a $ all be $ n \\times 1 $ vectors \n", + "- $ A $ be an $ n \\times n $ matrix \n", + "- $ B $ be an $ m \\times n $ matrix and $ y $ be an $ m \\times 1 $ vector \n", + "\n", + "\n", + "Then\n", + "\n", + "1. $ \\frac{\\partial a' x}{\\partial x} = a $ \n", + "1. $ \\frac{\\partial A x}{\\partial x} = A' $ \n", + "1. $ \\frac{\\partial x'A x}{\\partial x} = (A + A') x $ \n", + "1. $ \\frac{\\partial y'B z}{\\partial y} = B z $ \n", + "1. $ \\frac{\\partial y'B z}{\\partial B} = y z' $ \n", + "\n", + "\n", + "Exercise 1 below asks you to apply these formulas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Further Reading\n", + "\n", + "The documentation of the `scipy.linalg` submodule can be found [here](http://docs.scipy.org/doc/scipy/reference/linalg.html)\n", + "\n", + "Chapters 2 and 3 of the [Econometric Theory](http://www.johnstachurski.net/emet.html) contains\n", + "a discussion of linear algebra along the same lines as above, with solved exercises\n", + "\n", + "If you don’t mind a slightly abstract approach, a nice intermediate-level text on linear algebra\n", + "is [[Janich94]](https://lectures.quantecon.org/py/zreferences.html#janich1994)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1\n", + "\n", + "Let $ x $ be a given $ n \\times 1 $ vector and consider the problem\n", + "\n", + "$$\n", + "v(x) = \\max_{y,u} \\left\\{ - y'P y - u' Q u \\right\\}\n", + "$$\n", + "\n", + "subject to the linear constraint\n", + "\n", + "$$\n", + "y = A x + B u\n", + "$$\n", + "\n", + "Here\n", + "\n", + "- $ P $ is an $ n \\times n $ matrix and $ Q $ is an $ m \\times m $ matrix \n", + "- $ A $ is an $ n \\times n $ matrix and $ B $ is an $ n \\times m $ matrix \n", + "- both $ P $ and $ Q $ are symmetric and positive semidefinite \n", + "\n", + "\n", + "(What must the dimensions of $ y $ and $ u $ be to make this a well-posed problem?)\n", + "\n", + "One way to solve the problem is to form the Lagrangian\n", + "\n", + "$$\n", + "\\mathcal L = - y' P y - u' Q u + \\lambda' \\left[A x + B u - y\\right]\n", + "$$\n", + "\n", + "where $ \\lambda $ is an $ n \\times 1 $ vector of Lagrange multipliers\n", + "\n", + "Try applying the formulas given above for differentiating quadratic and linear forms to obtain the first-order conditions for maximizing $ \\mathcal L $ with respect to $ y, u $ and minimizing it with respect to $ \\lambda $\n", + "\n", + "Show that these conditions imply that\n", + "\n", + "1. $ \\lambda = - 2 P y $ \n", + "1. The optimizing choice of $ u $ satisfies $ u = - (Q + B' P B)^{-1} B' P A x $ \n", + "1. The function $ v $ satisfies $ v(x) = - x' \\tilde P x $ where $ \\tilde P = A' P A - A'P B (Q + B'P B)^{-1} B' P A $ \n", + "\n", + "\n", + "As we will see, in economic contexts Lagrange multipliers often are shadow prices\n", + "\n", + ">**Note**\n", + ">\n", + ">If we don’t care about the Lagrange multipliers, we can substitute the constraint into the objective function, and then just maximize $ -(Ax + Bu)'P (Ax + Bu) - u' Q u $ with respect to $ u $. You can verify that this leads to the same maximizer." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solutions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Solution to Exercise 1\n", + "\n", + "We have an optimization problem:\n", + "\n", + "$$\n", + "v(x) = \\max_{y,u} \\{ -y'Py - u'Qu \\}\n", + "$$\n", + "\n", + "s.t.\n", + "\n", + "$$\n", + "y = Ax + Bu\n", + "$$\n", + "\n", + "with primitives\n", + "\n", + "- $ P $ be a symmetric and positive semidefinite $ n \\times n $\n", + " matrix \n", + "- $ Q $ be a symmetric and positive semidefinite $ m \\times m $\n", + " matrix \n", + "- $ A $ an $ n \\times n $ matrix \n", + "- $ B $ an $ n \\times m $ matrix \n", + "\n", + "\n", + "The associated Lagrangian is :\n", + "\n", + "$$\n", + "L = -y'Py - u'Qu + \\lambda' \\lbrack Ax + Bu - y \\rbrack\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 1.\n", + "\n", + "Differentiating Lagrangian equation w.r.t y and setting its derivative\n", + "equal to zero yields\n", + "\n", + "$$\n", + "\\frac{ \\partial L}{\\partial y} = - (P + P') y - \\lambda = - 2 P y - \\lambda = 0 \\:,\n", + "$$\n", + "\n", + "since P is symmetric\n", + "\n", + "Accordingly, the first-order condition for maximizing L w.r.t. y implies\n", + "\n", + "$$\n", + "\\lambda = -2 Py \\:\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2.\n", + "\n", + "Differentiating Lagrangian equation w.r.t. u and setting its derivative\n", + "equal to zero yields\n", + "\n", + "$$\n", + "\\frac{ \\partial L}{\\partial u} = - (Q + Q') u - B'\\lambda = - 2Qu + B'\\lambda = 0 \\:\n", + "$$\n", + "\n", + "Substituting $ \\lambda = -2 P y $ gives\n", + "\n", + "$$\n", + "Qu + B'Py = 0 \\:\n", + "$$\n", + "\n", + "Substituting the linear constraint $ y = Ax + Bu $ into above\n", + "equation gives\n", + "\n", + "$$\n", + "Qu + B'P(Ax + Bu) = 0\n", + "$$\n", + "\n", + "$$\n", + "(Q + B'PB)u + B'PAx = 0\n", + "$$\n", + "\n", + "which is the first-order condition for maximizing L w.r.t. u\n", + "\n", + "Thus, the optimal choice of u must satisfy\n", + "\n", + "$$\n", + "u = -(Q + B'PB)^{-1}B'PAx \\:,\n", + "$$\n", + "\n", + "which follows from the definition of the first-order conditions for\n", + "Lagrangian equation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3.\n", + "\n", + "Rewriting our problem by substituting the constraint into the objective\n", + "function, we get\n", + "\n", + "$$\n", + "v(x) = \\max_{u} \\{ -(Ax+ Bu)'P(Ax+Bu) - u'Qu \\} \\:\n", + "$$\n", + "\n", + "Since we know the optimal choice of u satisfies $ u = -(Q +\n", + "B’PB)^{-1}B’PAx $, then\n", + "\n", + "$$\n", + "v(x) = -(Ax+ B u)'P(Ax+B u) - u'Q u \\,\\,\\,\\, with \\,\\,\\,\\, u = -(Q + B'PB)^{-1}B'PAx\n", + "$$\n", + "\n", + "To evaluate the function\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "v(x) &= -(Ax+ B u)'P(Ax+Bu) - u'Q u \\\\\n", + "&= -(x'A' + u'B')P(Ax+Bu) - u'Q u \\\\\n", + "&= - x'A'PAx - u'B'PAx - x'A'PBu - u'B'PBu - u'Qu \\\\\n", + "&= - x'A'PAx - 2u'B'PAx - u'(Q + B'PB) u\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "For simplicity, denote by $ S := (Q + B'PB)^{-1} B'PA $, then $ u =\n", + "-Sx$\n", + "\n", + "Regarding the second term $ - 2u'B'PAx $,\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "-2u'B'PAx &= -2 x'S'B'PAx \\\\\n", + "& = 2 x'A'PB( Q + B'PB)^{-1} B'PAx\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "Notice that the term $ (Q + B'PB)^{-1} $ is symmetric as both P and Q\n", + "are symmetric\n", + "\n", + "Regarding the third term $ - u'(Q + B'PB) u $,\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "-u'(Q + B'PB) u &= - x'S' (Q + B'PB)Sx \\\\\n", + "&= -x'A'PB(Q + B'PB)^{-1}B'PAx\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "Hence, the summation of second and third terms is\n", + "$ x'A'PB(Q + B'PB)^{-1}B'PAx $\n", + "\n", + "This implies that\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + " v(x) &= - x'A'PAx - 2u'B'PAx - u'(Q + B'PB) u\\\\\n", + " &= - x'A'PAx + x'A'PB(Q + B'PB)^{-1}B'PAx \\\\\n", + " &= -x'[A'PA - A'PB(Q + B'PB)^{-1}B'PA] x\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "Therefore, the solution to the optimization problem\n", + "$ v(x) = -x' \\tilde{P}x $ follows the above result by denoting\n", + "$ \\tilde{P} := A'PA - A'PB(Q + B'PB)^{-1}B'PA $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Footnotes**\n", + "\n", + "

[1] Although there is a specialized matrix data type defined in NumPy, it’s more standard to work with ordinary NumPy arrays. See [this discussion](https://lectures.quantecon.org/py/numpy.html#numpy-matrix-multiplication).\n", + "\n", + "

[2] Suppose that $ \\|S \\| < 1 $. Take any nonzero vector $ x $, and let $ r := \\|x\\| $. We have $ \\| Sx \\| = r \\| S (x/r) \\| \\leq r \\| S \\| < r = \\| x\\| $. Hence every point is pulled towards the origin." + ] + } + ], + "metadata": { + "filename": "linear_algebra.rst", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + }, + "title": "Linear Algebra" + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/0-pre-requisitos/2-math/orth_proj.ipynb b/0-pre-requisitos/2-math/orth_proj.ipynb new file mode 100755 index 0000000..b147a81 --- /dev/null +++ b/0-pre-requisitos/2-math/orth_proj.ipynb @@ -0,0 +1,1141 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Orthogonal Projections and Their Applications\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + "\n", + "- [Orthogonal Projections and Their Applications](#Orthogonal-Projections-and-Their-Applications) \n", + " - [Overview](#Overview) \n", + " - [Key Definitions](#Key-Definitions) \n", + " - [The Orthogonal Projection Theorem](#The-Orthogonal-Projection-Theorem) \n", + " - [Orthonormal Basis](#Orthonormal-Basis) \n", + " - [Projection Using Matrix Algebra](#Projection-Using-Matrix-Algebra) \n", + " - [Least Squares Regression](#Least-Squares-Regression) \n", + " - [Orthogonalization and Decomposition](#Orthogonalization-and-Decomposition) \n", + " - [Exercises](#Exercises) \n", + " - [Solutions](#Solutions) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Overview\n", + "\n", + "Orthogonal projection is a cornerstone of vector space methods, with many diverse applications\n", + "\n", + "These include, but are not limited to,\n", + "\n", + "- Least squares projection, also known as linear regression \n", + "- Conditional expectations for multivariate normal (Gaussian) distributions \n", + "- Gram–Schmidt orthogonalization \n", + "- QR decomposition \n", + "- Orthogonal polynomials \n", + "- etc \n", + "\n", + "\n", + "In this lecture we focus on\n", + "\n", + "- key ideas \n", + "- least squares regression " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Further Reading\n", + "\n", + "For background and foundational concepts, see our lecture [on linear algebra](https://lectures.quantecon.org/py/linear_algebra.html)\n", + "\n", + "For more proofs and greater theoretical detail, see [A Primer in Econometric Theory](http://www.johnstachurski.net/emet.html)\n", + "\n", + "For a complete set of proofs in a general setting, see, for example, [[Rom05]](https://lectures.quantecon.org/py/zreferences.html#roman2005)\n", + "\n", + "For an advanced treatment of projection in the context of least squares prediction, see [this book chapter](http://www.tomsargent.com/books/TOMchpt.2.pdf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Key Definitions\n", + "\n", + "Assume $ x, z \\in \\mathbb R^n $\n", + "\n", + "Define $ \\langle x, z\\rangle = \\sum_i x_i z_i $\n", + "\n", + "Recall $ \\|x \\|^2 = \\langle x, x \\rangle $\n", + "\n", + "The **law of cosines** states that $ \\langle x, z \\rangle = \\| x \\| \\| z \\| \\cos(\\theta) $ where $ \\theta $ is the angle between the vectors $ x $ and $ z $\n", + "\n", + "When $ \\langle x, z\\rangle = 0 $, then $ \\cos(\\theta) = 0 $ and $ x $ and $ z $ are said to be **orthogonal** and we write $ x \\perp z $\n", + "\n", + "\n", + "\n", + " \n", + "For a linear subspace $ S \\subset \\mathbb R^n $, we call $ x \\in \\mathbb R^n $ **orthogonal to** $ S $ if $ x \\perp z $ for all $ z \\in S $, and write $ x \\perp S $\n", + "\n", + "\n", + "\n", + " \n", + "The **orthogonal complement** of linear subspace $ S \\subset \\mathbb R^n $ is the set $ S^{\\perp} := \\{x \\in \\mathbb R^n \\,:\\, x \\perp S\\} $\n", + "\n", + "\n", + "\n", + " \n", + "$ S^\\perp $ is a linear subspace of $ \\mathbb R^n $\n", + "\n", + "- To see this, fix $ x, y \\in S^{\\perp} $ and $ \\alpha, \\beta \\in \\mathbb R $ \n", + "- Observe that if $ z \\in S $, then \n", + "\n", + "\n", + "$$\n", + "\\langle \\alpha x + \\beta y, z \\rangle\n", + "= \\alpha \\langle x, z \\rangle + \\beta \\langle y, z \\rangle\n", + " = \\alpha \\times 0 + \\beta \\times 0 = 0\n", + "$$\n", + "\n", + "- Hence $ \\alpha x + \\beta y \\in S^{\\perp} $, as was to be shown \n", + "\n", + "\n", + "A set of vectors $ \\{x_1, \\ldots, x_k\\} \\subset \\mathbb R^n $ is called an **orthogonal set** if $ x_i \\perp x_j $ whenever $ i \\not= j $\n", + "\n", + "If $ \\{x_1, \\ldots, x_k\\} $ is an orthogonal set, then the **Pythagorean Law** states that\n", + "\n", + "$$\n", + "\\| x_1 + \\cdots + x_k \\|^2\n", + "= \\| x_1 \\|^2 + \\cdots + \\| x_k \\|^2\n", + "$$\n", + "\n", + "For example, when $ k=2 $, $ x_1 \\perp x_2 $ implies\n", + "\n", + "$$\n", + "\\| x_1 + x_2 \\|^2\n", + " = \\langle x_1 + x_2, x_1 + x_2 \\rangle\n", + " = \\langle x_1, x_1 \\rangle + 2 \\langle x_2, x_1 \\rangle + \\langle x_2, x_2 \\rangle\n", + " = \\| x_1 \\|^2 + \\| x_2 \\|^2\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Linear Independence vs Orthogonality\n", + "\n", + "If $ X \\subset \\mathbb R^n $ is an orthogonal set and $ 0 \\notin X $, then $ X $ is linearly independent\n", + "\n", + "Proving this is a nice exercise\n", + "\n", + "While the converse is not true, a kind of partial converse holds, as we’ll [see below](#gram-schmidt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Orthogonal Projection Theorem\n", + "\n", + "What vector within a linear subspace of $ \\mathbb R^n $ best approximates a given vector in $ \\mathbb R^n $?\n", + "\n", + "The next theorem provides answers this question\n", + "\n", + "**Theorem** (OPT) Given $ y \\in \\mathbb R^n $ and linear subspace $ S \\subset \\mathbb R^n $,\n", + "there exists a unique solution to the minimization problem\n", + "\n", + "$$\n", + "\\hat y := \\argmin_{z \\in S} \\|y - z\\|\n", + "$$\n", + "\n", + "The minimizer $ \\hat y $ is the unique vector in $ \\mathbb R^n $ that satisfies\n", + "\n", + "- $ \\hat y \\in S $ \n", + "- $ y - \\hat y \\perp S $ \n", + "\n", + "\n", + "The vector $ \\hat y $ is called the **orthogonal projection** of $ y $ onto $ S $\n", + "\n", + "The next figure provides some intuition\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Proof of sufficiency\n", + "\n", + "We’ll omit the full proof.\n", + "\n", + "But we will prove sufficiency of the asserted conditions\n", + "\n", + "To this end, let $ y \\in \\mathbb R^n $ and let $ S $ be a linear subspace of $ \\mathbb R^n $\n", + "\n", + "Let $ \\hat y $ be a vector in $ \\mathbb R^n $ such that $ \\hat y \\in S $ and $ y - \\hat y \\perp S $\n", + "\n", + "Let $ z $ be any other point in $ S $ and use the fact that $ S $ is a linear subspace to deduce\n", + "\n", + "$$\n", + "\\| y - z \\|^2\n", + "= \\| (y - \\hat y) + (\\hat y - z) \\|^2\n", + "= \\| y - \\hat y \\|^2 + \\| \\hat y - z \\|^2\n", + "$$\n", + "\n", + "Hence $ \\| y - z \\| \\geq \\| y - \\hat y \\| $, which completes the proof" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Orthogonal Projection as a Mapping\n", + "\n", + "For a linear space $ Y $ and a fixed linear subspace $ S $, we have a functional relationship\n", + "\n", + "$$\n", + "y \\in Y\\; \\mapsto \\text{ its orthogonal projection } \\hat y \\in S\n", + "$$\n", + "\n", + "By the OPT, this is a well-defined mapping or *operator* from $ \\mathbb R^n $ to $ \\mathbb R^n $\n", + "\n", + "In what follows we denote this operator by a matrix $ P $\n", + "\n", + "- $ P y $ represents the projection $ \\hat y $ \n", + "- This is sometimes expressed as $ \\hat E_S y = P y $, where $ \\hat E $ denotes a **wide-sense expectations operator** and the subscript $ S $ indicates that we are projecting $ y $ onto the linear subspace $ S $ \n", + "\n", + "\n", + "The operator $ P $ is called the **orthogonal projection mapping onto** $ S $\n", + "\n", + "\n", + "\n", + " \n", + "It is immediate from the OPT that for any $ y \\in \\mathbb R^n $\n", + "\n", + "1. $ P y \\in S $ and \n", + "1. $ y - P y \\perp S $ \n", + "\n", + "\n", + "From this we can deduce additional useful properties, such as\n", + "\n", + "1. $ \\| y \\|^2 = \\| P y \\|^2 + \\| y - P y \\|^2 $ and \n", + "1. $ \\| P y \\| \\leq \\| y \\| $ \n", + "\n", + "\n", + "For example, to prove 1, observe that $ y = P y + y - P y $ and apply the Pythagorean law" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Orthogonal Complement\n", + "\n", + "Let $ S \\subset \\mathbb R^n $.\n", + "\n", + "The **orthogonal complement** of $ S $ is the linear subspace $ S^{\\perp} $ that satisfies\n", + "$ x_1 \\perp x_2 $ for every $ x_1 \\in S $ and $ x_2 \\in S^{\\perp} $\n", + "\n", + "Let $ Y $ be a linear space with linear subspace $ S $ and its orthogonal complement $ S^{\\perp} $\n", + "\n", + "We write\n", + "\n", + "$$\n", + "Y = S \\oplus S^{\\perp}\n", + "$$\n", + "\n", + "to indicate that for every $ y \\in Y $ there is unique $ x_1 \\in S $ and a unique $ x_2 \\in S^{\\perp} $\n", + "such that $ y = x_1 + x_2 $\n", + "\n", + "Moreover, $ x_1 = \\hat E_S y $ and $ x_2 = y - \\hat E_S y $\n", + "\n", + "This amounts to another version of the OPT:\n", + "\n", + "**Theorem**. If $ S $ is a linear subspace of $ \\mathbb R^n $, $ \\hat E_S y = P y $ and $ \\hat E_{S^{\\perp}} y = M y $, then\n", + "\n", + "$$\n", + "P y \\perp M y\n", + " \\quad \\text{and} \\quad\n", + "y = P y + M y\n", + " \\quad \\text{for all } \\, y \\in \\mathbb R^n\n", + "$$\n", + "\n", + "The next figure illustrates\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Orthonormal Basis\n", + "\n", + "An orthogonal set of vectors $ O \\subset \\mathbb R^n $ is called an **orthonormal set** if $ \\| u \\| = 1 $ for all $ u \\in O $\n", + "\n", + "Let $ S $ be a linear subspace of $ \\mathbb R^n $ and let $ O \\subset S $\n", + "\n", + "If $ O $ is orthonormal and $ \\mathop{\\mathrm{span}} O = S $, then $ O $ is called an **orthonormal basis** of $ S $\n", + "\n", + "$ O $ is necessarily a basis of $ S $ (being independent by orthogonality and the fact that no element is the zero vector)\n", + "\n", + "One example of an orthonormal set is the canonical basis $ \\{e_1, \\ldots, e_n\\} $\n", + "that forms an orthonormal basis of $ \\mathbb R^n $, where $ e_i $ is the $ i $ th unit vector\n", + "\n", + "If $ \\{u_1, \\ldots, u_k\\} $ is an orthonormal basis of linear subspace $ S $, then\n", + "\n", + "$$\n", + "x = \\sum_{i=1}^k \\langle x, u_i \\rangle u_i\n", + "\\quad \\text{for all} \\quad\n", + "x \\in S\n", + "$$\n", + "\n", + "To see this, observe that since $ x \\in \\mathop{\\mathrm{span}}\\{u_1, \\ldots, u_k\\} $, we can find\n", + "scalars $ \\alpha_1, \\ldots, \\alpha_k $ that verify\n", + "\n", + "\n", + "\n", + "$$\n", + "x = \\sum_{j=1}^k \\alpha_j u_j \\tag{1}\n", + "$$\n", + "\n", + "Taking the inner product with respect to $ u_i $ gives\n", + "\n", + "$$\n", + "\\langle x, u_i \\rangle\n", + "= \\sum_{j=1}^k \\alpha_j \\langle u_j, u_i \\rangle\n", + "= \\alpha_i\n", + "$$\n", + "\n", + "Combining this result with [(1)](#equation-pob) verifies the claim" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Projection onto an Orthonormal Basis\n", + "\n", + "When the subspace onto which are projecting is orthonormal, computing the projection simplifies:\n", + "\n", + "**Theorem** If $ \\{u_1, \\ldots, u_k\\} $ is an orthonormal basis for $ S $, then\n", + "\n", + "\n", + "\n", + "$$\n", + "P y = \\sum_{i=1}^k \\langle y, u_i \\rangle u_i,\n", + "\\quad\n", + "\\forall \\; y \\in \\mathbb R^n \\tag{2}\n", + "$$\n", + "\n", + "Proof: Fix $ y \\in \\mathbb R^n $ and let $ P y $ be defined as in [(2)](#equation-exp-for-op)\n", + "\n", + "Clearly, $ P y \\in S $\n", + "\n", + "We claim that $ y - P y \\perp S $ also holds\n", + "\n", + "It sufficies to show that $ y - P y \\perp $ any basis vector $ u_i $ (why?)\n", + "\n", + "This is true because\n", + "\n", + "$$\n", + "\\left\\langle y - \\sum_{i=1}^k \\langle y, u_i \\rangle u_i, u_j \\right\\rangle\n", + "= \\langle y, u_j \\rangle - \\sum_{i=1}^k \\langle y, u_i \\rangle\n", + "\\langle u_i, u_j \\rangle = 0\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Projection Using Matrix Algebra\n", + "\n", + "Let $ S $ be a linear subspace of $ \\mathbb R^n $ and let $ y \\in \\mathbb R^n $\n", + "\n", + "We want to compute the matrix $ P $ that verifies\n", + "\n", + "$$\n", + "\\hat E_S y = P y\n", + "$$\n", + "\n", + "Evidently $ Py $ is a linear function from $ y \\in \\mathbb R^n $ to $ P y \\in \\mathbb R^n $\n", + "\n", + "This reference is useful [https://en.wikipedia.org/wiki/Linear_map#Matrices](https://en.wikipedia.org/wiki/Linear_map#Matrices)\n", + "\n", + "**Theorem.** Let the columns of $ n \\times k $ matrix $ X $ form a basis of $ S $. Then\n", + "\n", + "$$\n", + "P = X (X'X)^{-1} X'\n", + "$$\n", + "\n", + "Proof: Given arbitrary $ y \\in \\mathbb R^n $ and $ P = X (X'X)^{-1} X' $, our claim is that\n", + "\n", + "1. $ P y \\in S $, and \n", + "1. $ y - P y \\perp S $ \n", + "\n", + "\n", + "Claim 1 is true because\n", + "\n", + "$$\n", + "P y = X (X' X)^{-1} X' y = X a\n", + "\\quad \\text{when} \\quad\n", + "a := (X' X)^{-1} X' y\n", + "$$\n", + "\n", + "An expression of the form $ X a $ is precisely a linear combination of the\n", + "columns of $ X $, and hence an element of $ S $\n", + "\n", + "Claim 2 is equivalent to the statement\n", + "\n", + "$$\n", + "y - X (X' X)^{-1} X' y \\, \\perp\\, X b\n", + "\\quad \\text{for all} \\quad\n", + "b \\in \\mathbb R^K\n", + "$$\n", + "\n", + "This is true: If $ b \\in \\mathbb R^K $, then\n", + "\n", + "$$\n", + "(X b)' [y - X (X' X)^{-1} X'\n", + "y]\n", + "= b' [X' y - X' y]\n", + "= 0\n", + "$$\n", + "\n", + "The proof is now complete" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Starting with $ X $\n", + "\n", + "It is common in applications to start with $ n \\times k $ matrix $ X $ with linearly independent columns and let\n", + "\n", + "$$\n", + "S := \\mathop{\\mathrm{span}} X := \\mathop{\\mathrm{span}} \\{\\col_1 X, \\ldots, \\col_k X \\}\n", + "$$\n", + "\n", + "Then the columns of $ X $ form a basis of $ S $\n", + "\n", + "From the preceding theorem, $ P = X (X' X)^{-1} X' y $ projects $ y $ onto $ S $\n", + "\n", + "In this context, $ P $ is often called the **projection matrix**\n", + "\n", + "- The matrix $ M = I - P $ satisfies $ M y = \\hat E_{S^{\\perp}} y $ and is sometimes called the **annihilator matrix** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Orthonormal Case\n", + "\n", + "Suppose that $ U $ is $ n \\times k $ with orthonormal columns\n", + "\n", + "Let $ u_i := \\mathop{\\mathrm{col}} U_i $ for each $ i $, let $ S := \\mathop{\\mathrm{span}} U $ and let $ y \\in \\mathbb R^n $\n", + "\n", + "We know that the projection of $ y $ onto $ S $ is\n", + "\n", + "$$\n", + "P y = U (U' U)^{-1} U' y\n", + "$$\n", + "\n", + "Since $ U $ has orthonormal columns, we have $ U' U = I $\n", + "\n", + "Hence\n", + "\n", + "$$\n", + "P y\n", + "= U U' y\n", + "= \\sum_{i=1}^k \\langle u_i, y \\rangle u_i\n", + "$$\n", + "\n", + "We have recovered our earlier result about projecting onto the span of an orthonormal\n", + "basis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Application: Overdetermined Systems of Equations\n", + "\n", + "Let $ y \\in \\mathbb R^n $ and let $ X $ is $ n \\times k $ with linearly independent columns\n", + "\n", + "Given $ X $ and $ y $, we seek $ b \\in \\mathbb R^k $ satisfying the system of linear equations $ X b = y $\n", + "\n", + "If $ n > k $ (more equations than unknowns), then $ b $ is said to be **overdetermined**\n", + "\n", + "Intuitively, we may not be able find a $ b $ that satisfies all $ n $ equations\n", + "\n", + "The best approach here is to\n", + "\n", + "- Accept that an exact solution may not exist \n", + "- Look instead for an approximate solution \n", + "\n", + "\n", + "By approximate solution, we mean a $ b \\in \\mathbb R^k $ such that $ X b $ is as close to $ y $ as possible\n", + "\n", + "The next theorem shows that the solution is well defined and unique\n", + "\n", + "The proof uses the OPT\n", + "\n", + "**Theorem** The unique minimizer of $ \\| y - X b \\| $ over $ b \\in \\mathbb R^K $ is\n", + "\n", + "$$\n", + "\\hat \\beta := (X' X)^{-1} X' y\n", + "$$\n", + "\n", + "Proof: Note that\n", + "\n", + "$$\n", + "X \\hat \\beta = X (X' X)^{-1} X' y =\n", + "P y\n", + "$$\n", + "\n", + "Since $ P y $ is the orthogonal projection onto $ \\mathop{\\mathrm{span}}(X) $ we have\n", + "\n", + "$$\n", + "\\| y - P y \\|\n", + "\\leq \\| y - z \\| \\text{ for any } z \\in \\mathop{\\mathrm{span}}(X)\n", + "$$\n", + "\n", + "Because $ Xb \\in \\mathop{\\mathrm{span}}(X) $\n", + "\n", + "$$\n", + "\\| y - X \\hat \\beta \\|\n", + "\\leq \\| y - X b \\| \\text{ for any } b \\in \\mathbb R^K\n", + "$$\n", + "\n", + "This is what we aimed to show" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Least Squares Regression\n", + "\n", + "Let’s apply the theory of orthogonal projection to least squares regression\n", + "\n", + "This approach provides insights about many geometric properties of linear regression\n", + "\n", + "We treat only some examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Squared risk measures\n", + "\n", + "Given pairs $ (x, y) \\in \\mathbb R^K \\times \\mathbb R $, consider choosing $ f \\colon \\mathbb R^K \\to \\mathbb R $ to minimize\n", + "the **risk**\n", + "\n", + "$$\n", + "R(f) := \\mathbb{E}\\, [(y - f(x))^2]\n", + "$$\n", + "\n", + "If probabilities and hence $ \\mathbb{E}\\, $ are unknown, we cannot solve this problem directly\n", + "\n", + "However, if a sample is available, we can estimate the risk with the **empirical risk**:\n", + "\n", + "$$\n", + "\\min_{f \\in \\mathcal{F}} \\frac{1}{N} \\sum_{n=1}^N (y_n - f(x_n))^2\n", + "$$\n", + "\n", + "Minimizing this expression is called **empirical risk minimization**\n", + "\n", + "The set $ \\mathcal{F} $ is sometimes called the hypothesis space\n", + "\n", + "The theory of statistical learning tells us that to prevent overfitting we should take the set $ \\mathcal{F} $ to be relatively simple\n", + "\n", + "If we let $ \\mathcal{F} $ be the class of linear functions $ 1/N $, the problem is\n", + "\n", + "$$\n", + "\\min_{b \\in \\mathbb R^K} \\;\n", + "\\sum_{n=1}^N (y_n - b' x_n)^2\n", + "$$\n", + "\n", + "This is the sample **linear least squares problem**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Solution\n", + "\n", + "Define the matrices\n", + "\n", + "$$\n", + "y :=\n", + "\\left(\n", + "\\begin{array}{c}\n", + " y_1 \\\\\n", + " y_2 \\\\\n", + " \\vdots \\\\\n", + " y_N\n", + "\\end{array}\n", + "\\right),\n", + "\\quad\n", + "x_n :=\n", + "\\left(\n", + "\\begin{array}{c}\n", + " x_{n1} \\\\\n", + " x_{n2} \\\\\n", + " \\vdots \\\\\n", + " x_{nK}\n", + "\\end{array}\n", + "\\right)\n", + "= \\text{ $n$-th obs on all regressors}\n", + "$$\n", + "\n", + "and\n", + "\n", + "$$\n", + "X :=\n", + "\\left(\n", + "\\begin{array}{c}\n", + " x_1' \\\\\n", + " x_2' \\\\\n", + " \\vdots \\\\\n", + " x_N'\n", + "\\end{array}\n", + "\\right)\n", + ":=:\n", + "\\left(\n", + "\\begin{array}{cccc}\n", + " x_{11} & x_{12} & \\cdots & x_{1K} \\\\\n", + " x_{21} & x_{22} & \\cdots & x_{2K} \\\\\n", + " \\vdots & \\vdots & & \\vdots \\\\\n", + " x_{N1} & x_{N2} & \\cdots & x_{NK}\n", + "\\end{array}\n", + "\\right)\n", + "$$\n", + "\n", + "We assume throughout that $ N > K $ and $ X $ is full column rank\n", + "\n", + "If you work through the algebra, you will be able to verify that $ \\| y - X b \\|^2 = \\sum_{n=1}^N (y_n - b' x_n)^2 $\n", + "\n", + "Since monotone transforms don’t affect minimizers, we have\n", + "\n", + "$$\n", + "\\argmin_{b \\in \\mathbb R^K} \\sum_{n=1}^N (y_n - b' x_n)^2\n", + "= \\argmin_{b \\in \\mathbb R^K} \\| y - X b \\|\n", + "$$\n", + "\n", + "By our results about overdetermined linear systems of equations, the solution is\n", + "\n", + "$$\n", + "\\hat \\beta := (X' X)^{-1} X' y\n", + "$$\n", + "\n", + "Let $ P $ and $ M $ be the projection and annihilator associated with $ X $:\n", + "\n", + "$$\n", + "P := X (X' X)^{-1} X'\n", + "\\quad \\text{and} \\quad\n", + "M := I - P\n", + "$$\n", + "\n", + "The **vector of fitted values** is\n", + "\n", + "$$\n", + "\\hat y := X \\hat \\beta = P y\n", + "$$\n", + "\n", + "The **vector of residuals** is\n", + "\n", + "$$\n", + "\\hat u := y - \\hat y = y - P y = M y\n", + "$$\n", + "\n", + "Here are some more standard definitions:\n", + "\n", + "- The **total sum of squares** is $ := \\| y \\|^2 $ \n", + "- The **sum of squared residuals** is $ := \\| \\hat u \\|^2 $ \n", + "- The **explained sum of squares** is $ := \\| \\hat y \\|^2 $ \n", + "\n", + "\n", + "> TSS = ESS + SSR\n", + "\n", + "\n", + "We can prove this easily using the OPT\n", + "\n", + "From the OPT we have $ y = \\hat y + \\hat u $ and $ \\hat u \\perp \\hat y $\n", + "\n", + "Applying the Pythagorean law completes the proof" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Orthogonalization and Decomposition\n", + "\n", + "Let’s return to the connection between linear independence and orthogonality touched on above\n", + "\n", + "A result of much interest is a famous algorithm for constructing orthonormal sets from linearly independent sets\n", + "\n", + "The next section gives details\n", + "\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Gram-Schmidt Orthogonalization\n", + "\n", + "**Theorem** For each linearly independent set $ \\{x_1, \\ldots, x_k\\} \\subset \\mathbb R^n $, there exists an\n", + "orthonormal set $ \\{u_1, \\ldots, u_k\\} $ with\n", + "\n", + "$$\n", + "\\mathop{\\mathrm{span}} \\{x_1, \\ldots, x_i\\} =\n", + "\\mathop{\\mathrm{span}} \\{u_1, \\ldots, u_i\\}\n", + "\\quad \\text{for} \\quad\n", + "i = 1, \\ldots, k\n", + "$$\n", + "\n", + "The **Gram-Schmidt orthogonalization** procedure constructs an orthogonal set $ \\{ u_1, u_2, \\ldots, u_n\\} $\n", + "\n", + "One description of this procedure is as follows:\n", + "\n", + "- For $ i = 1, \\ldots, k $, form $ S_i := \\mathop{\\mathrm{span}}\\{x_1, \\ldots, x_i\\} $ and $ S_i^{\\perp} $ \n", + "- Set $ v_1 = x_1 $ \n", + "- For $ i \\geq 2 $ set $ v_i := \\hat E_{S_{i-1}^{\\perp}} x_i $ and $ u_i := v_i / \\| v_i \\| $ \n", + "\n", + "\n", + "The sequence $ u_1, \\ldots, u_k $ has the stated properties\n", + "\n", + "A Gram-Schmidt orthogonalization construction is a key idea behind the Kalman filter described in [A First Look at the Kalman filter](https://lectures.quantecon.org/py/kalman.html)\n", + "\n", + "In some exercises below you are asked to implement this algorithm and test it using projection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### QR Decomposition\n", + "\n", + "The following result uses the preceding algorithm to produce a useful decomposition\n", + "\n", + "**Theorem** If $ X $ is $ n \\times k $ with linearly independent columns, then there exists a factorization $ X = Q R $ where\n", + "\n", + "- $ R $ is $ k \\times k $, upper triangular, and nonsingular \n", + "- $ Q $ is $ n \\times k $ with orthonormal columns \n", + "\n", + "\n", + "Proof sketch: Let\n", + "\n", + "- $ x_j := \\col_j (X) $ \n", + "- $ \\{u_1, \\ldots, u_k\\} $ be orthonormal with same span as $ \\{x_1, \\ldots, x_k\\} $ (to be constructed using Gram–Schmidt) \n", + "- $ Q $ be formed from cols $ u_i $ \n", + "\n", + "\n", + "Since $ x_j \\in \\mathop{\\mathrm{span}}\\{u_1, \\ldots, u_j\\} $, we have\n", + "\n", + "$$\n", + "x_j = \\sum_{i=1}^j \\langle u_i, x_j \\rangle u_i\n", + "\\quad \\text{for } j = 1, \\ldots, k\n", + "$$\n", + "\n", + "Some rearranging gives $ X = Q R $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Linear Regression via QR Decomposition\n", + "\n", + "For matrices $ X $ and $ y $ that overdetermine $ beta $ in the linear\n", + "equation system $ y = X \\beta $, we found the least squares approximator $ \\hat \\beta = (X' X)^{-1} X' y $\n", + "\n", + "Using the QR decomposition $ X = Q R $ gives\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + " \\hat \\beta\n", + " & = (R'Q' Q R)^{-1} R' Q' y \\\\\n", + " & = (R' R)^{-1} R' Q' y \\\\\n", + " & = R^{-1} (R')^{-1} R' Q' y\n", + " = R^{-1} Q' y\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "Numerical routines would in this case use the alternative form $ R \\hat \\beta = Q' y $ and back substitution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1\n", + "\n", + "Show that, for any linear subspace $ S \\subset \\mathbb R^n $, $ S \\cap S^{\\perp} = \\{0\\} $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 2\n", + "\n", + "Let $ P = X (X' X)^{-1} X' $ and let $ M = I - P $. Show that\n", + "$ P $ and $ M $ are both idempotent and symmetric. Can you give any\n", + "intuition as to why they should be idempotent?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 3\n", + "\n", + "Using Gram-Schmidt orthogonalization, produce a linear projection of $ y $ onto the column space of $ X $ and verify this using the projection matrix $ P := X (X' X)^{-1} X' $ and also using QR decomposition, where:\n", + "\n", + "$$\n", + "y :=\n", + "\\left(\n", + "\\begin{array}{c}\n", + " 1 \\\\\n", + " 3 \\\\\n", + " -3\n", + "\\end{array}\n", + "\\right),\n", + "\\quad\n", + "$$\n", + "\n", + "and\n", + "\n", + "$$\n", + "X :=\n", + "\\left(\n", + "\\begin{array}{cc}\n", + " 1 & 0 \\\\\n", + " 0 & -6 \\\\\n", + " 2 & 2\n", + "\\end{array}\n", + "\\right)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solutions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 1\n", + "\n", + "If $ x \\in S $ and $ x \\in S^\\perp $, then we have in particular\n", + "that $ \\langle x, x \\rangle = 0 $, ut then $ x = 0 $" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 2\n", + "\n", + "Symmetry and idempotence of $ M $ and $ P $ can be established\n", + "using standard rules for matrix algebra. The intuition behind\n", + "idempotence of $ M $ and $ P $ is that both are orthogonal\n", + "projections. After a point is projected into a given subspace, applying\n", + "the projection again makes no difference. (A point inside the subspace\n", + "is not shifted by orthogonal projection onto that space because it is\n", + "already the closest point in the subspace to itself.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise 3\n", + "\n", + "Here’s a function that computes the orthonormal vectors using the GS\n", + "algorithm given in the lecture" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "hide-output": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "def gram_schmidt(X):\n", + " \"\"\"\n", + " Implements Gram-Schmidt orthogonalization.\n", + "\n", + " Parameters\n", + " ----------\n", + " X : an n x k array with linearly independent columns\n", + "\n", + " Returns\n", + " -------\n", + " U : an n x k array with orthonormal columns\n", + "\n", + " \"\"\"\n", + "\n", + " # Set up\n", + " n, k = X.shape\n", + " U = np.empty((n, k))\n", + " I = np.eye(n)\n", + "\n", + " # The first col of U is just the normalized first col of X\n", + " v1 = X[:,0]\n", + " U[:, 0] = v1 / np.sqrt(np.sum(v1 * v1))\n", + "\n", + " for i in range(1, k):\n", + " # Set up\n", + " b = X[:, i] # The vector we're going to project\n", + " Z = X[:, 0:i] # First i-1 columns of X\n", + "\n", + " # Project onto the orthogonal complement of the col span of Z\n", + " M = I - Z @ np.linalg.inv(Z.T @ Z) @ Z.T\n", + " u = M @ b\n", + "\n", + " # Normalize\n", + " U[:, i] = u / np.sqrt(np.sum(u * u))\n", + "\n", + " return U" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the arrays we’ll work with" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "hide-output": false + }, + "outputs": [], + "source": [ + "y = [1, 3, -3]\n", + "\n", + "X = [[1, 0],\n", + " [0, -6],\n", + " [2, 2]]\n", + "\n", + "X, y = [np.asarray(z) for z in (X, y)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First let’s try projection of $ y $ onto the column space of\n", + "$ X $ using the ordinary matrix expression:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.56521739, 3.26086957, -2.2173913 ])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Py1 = X @ np.linalg.inv(X.T @ X) @ X.T @ y\n", + "Py1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let’s do the same using an orthonormal basis created from our\n", + "`gram_schmidt` function" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.4472136 , -0.13187609],\n", + " [ 0. , -0.98907071],\n", + " [ 0.89442719, 0.06593805]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "U = gram_schmidt(X)\n", + "U" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.56521739, 3.26086957, -2.2173913 ])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Py2 = U @ U.T @ y\n", + "Py2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the same answer. So far so good. Finally, let’s try the same\n", + "thing but with the basis obtained via QR decomposition:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-0.4472136 , -0.13187609],\n", + " [-0. , -0.98907071],\n", + " [-0.89442719, 0.06593805]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from scipy.linalg import qr\n", + "\n", + "Q, R = qr(X, mode='economic')\n", + "Q" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "hide-output": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.56521739, 3.26086957, -2.2173913 ])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Py3 = Q @ Q.T @ y\n", + "Py3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, we obtain the same answer" + ] + } + ], + "metadata": { + "filename": "orth_proj.rst", + "kernelspec": { + "display_name": "Python", + "language": "python3", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + }, + "title": "Orthogonal Projections and Their Applications" + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/0-pre-requisitos/2-math/otimiza\303\247\303\243o-I.ipynb" "b/0-pre-requisitos/2-math/otimiza\303\247\303\243o-I.ipynb" old mode 100644 new mode 100755 index 649d31d..00ba88e --- "a/0-pre-requisitos/2-math/otimiza\303\247\303\243o-I.ipynb" +++ "b/0-pre-requisitos/2-math/otimiza\303\247\303\243o-I.ipynb" @@ -1,1128 +1,5916 @@ { - "cells": [ - { - "metadata": {}, - "cell_type": "markdown", - "source": "# Optimization" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "!pip install numdifftools", - "execution_count": 118, - "outputs": [ - { - "output_type": "stream", - "text": "Requirement already satisfied: numdifftools in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (0.9.20)\nRequirement already satisfied: numpy>=1.9 in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (from numdifftools) (1.15.2)\nRequirement already satisfied: scipy>=0.8 in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (from numdifftools) (1.1.0)\nRequirement already satisfied: algopy>=0.4 in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (from numdifftools) (0.5.7)\nRequirement already satisfied: setuptools>=9.0 in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (from numdifftools) (40.4.3)\n\u001b[33mYou are using pip version 18.0, however version 18.1 is available.\nYou should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\n", - "name": "stdout" - } - ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import numpy as np\nimport timeit\nfrom scipy import optimize as opt\nimport matplotlib.pyplot as plt\nfrom mpl_toolkits.mplot3d.axes3d import get_test_data\nimport numdifftools as nd", - "execution_count": 119, - "outputs": [] - }, + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Optimization - Otimização\n", + "\n", + "Instalando a biblioteca `numdifftools` e suas dependências." + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ { - "metadata": {}, - "cell_type": "markdown", - "source": "## Scalar functions" - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: numdifftools in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (0.9.20)\n", + "Requirement already satisfied: numpy>=1.9 in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (from numdifftools) (1.15.2)\n", + "Requirement already satisfied: scipy>=0.8 in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (from numdifftools) (1.1.0)\n", + "Requirement already satisfied: algopy>=0.4 in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (from numdifftools) (0.5.7)\n", + "Requirement already satisfied: setuptools>=9.0 in /home/nbuser/anaconda3_420/lib/python3.5/site-packages (from numdifftools) (40.4.3)\n", + "\u001b[33mYou are using pip version 18.0, however version 18.1 is available.\n", + "You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install numdifftools" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import timeit\n", + "from scipy import optimize as opt\n", + "import matplotlib.pyplot as plt\n", + "from mpl_toolkits.mplot3d.axes3d import get_test_data\n", + "import numdifftools as nd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Scalar functions - Funções Escalares" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [], + "source": [ + "def f(x):\n", + " return (x+3)*(x-1)**2" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "X = np.arange(-5, 5, .1)\n", + "Y = f(X)\n", + "plt.plot(X, Y)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def f(x):\n return (x+3)*(x-1)**2", - "execution_count": 120, - "outputs": [] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "567 µs ± 16.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" + ] + } + ], + "source": [ + "%timeit opt.minimize_scalar(f, bracket=(-2, 2, 4), method='golden')" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ { - "metadata": { - "scrolled": false, - "trusted": true - }, - "cell_type": "code", - "source": "X = np.arange(-5, 5, .1)\nY = f(X)\nplt.plot(X, Y)\nplt.show()", - "execution_count": 121, - "outputs": [] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "714 µs ± 33.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" + ] + } + ], + "source": [ + "%timeit opt.minimize_scalar(f, bracket=(-2, 2, 4), method='brent')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Function to calculate first derivative of $f$ at $x_{0}$" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [], + "source": [ + "def d1(x, f, h=1e-5):\n", + " return (f(x+h)-f(x-h))/(2*h)" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%timeit opt.minimize_scalar(f, bracket=(-2, 2, 4), method='golden')", - "execution_count": 122, - "outputs": [ - { - "output_type": "stream", - "text": "567 µs ± 16.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", - "name": "stdout" - } + "data": { + "text/plain": [ + "79.99999999697138" ] - }, + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Test\n", + "d1(5, f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Function to calculate second derivative of $f$ at $x_{0}$" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": {}, + "outputs": [], + "source": [ + "def d2(x, f, h=1e-5):\n", + " return (f(x+2*h)+f(x-2*h)-2*f(x))/(2*h)**2" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%timeit opt.minimize_scalar(f, bracket=(-2, 2, 4), method='brent')", - "execution_count": 123, - "outputs": [ - { - "output_type": "stream", - "text": "714 µs ± 33.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", - "name": "stdout" - } + "data": { + "text/plain": [ + "32.000002647691865" ] - }, + }, + "execution_count": 127, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Test\n", + "d2(5, f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Newton-Raphson" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [], + "source": [ + "def my_newton(f, x0, h=1e-5, delta=1e-5, eps=1e-5):\n", + " \n", + " dif = 1\n", + " der = 1\n", + " i = 0\n", + " \n", + " while dif>eps or der>delta:\n", + " \n", + " i += 1\n", + " d = d1(x0, f)\n", + " x1 = x0 - (d/d2(x0, f))\n", + " dif = abs(x1-x0)\n", + " der = abs(d)\n", + " x0 = x1\n", + " if i > 100:\n", + " break\n", + " \n", + " return x1" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ { - "metadata": {}, - "cell_type": "markdown", - "source": "Function to calculate first derivative of $f$ at $x_{0}$" - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "74.6 µs ± 4.27 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n" + ] + } + ], + "source": [ + "%timeit my_newton(f, 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Derivatives - Derivativas" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [], + "source": [ + "df1 = nd.Derivative(f)\n", + "df2 = nd.Derivative(f, n=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def d1(x, f, h=1e-5):\n return (f(x+h)-f(x-h))/(2*h)", - "execution_count": 124, - "outputs": [] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "185 ms ± 10.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "%timeit opt.minimize(f, 10, method='Newton-CG', jac=df1, hess=df2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Refresher of matrix algebra" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Quadratic form: $Q(x_{1}, x_{2}) = a_{1}\\,x_{1}^2 + a_{2}\\,x_{2}^2 + a_{3}\\,x_{1}\\,x_{2}$

\n", + "\n", + "This a algebraic expression can be written with matrix notation:\n", + "$\n", + " x=\n", + " \\left[ {\\begin{array}{c}\n", + " x_{1} \\\\\n", + " x_{2} \\\\\n", + " \\end{array} } \\right]\n", + "$\n", + " and \n", + "$\n", + " A=\n", + " \\left[ {\\begin{array}{c}\n", + " a_{1} & a_{3}/2 \\\\\n", + " a_{3}/2 & a_{2} \\\\\n", + " \\end{array} } \\right]\n", + "$\n", + " imply $Q(x)=x^{T}\\,A\\,x$. Notice that $A$ is a square, **symmetric** matrix. Therefore, there is a one-to-one relationship between quadratic forms and symmetric matrices.

\n", + " \n", + "*Definitions*:
\n", + "* A quadratic form is *positive definite* iff $Q(x)>0$ for any $x\\neq0$.\n", + "* A quadratic form is *negative definite* iff $Q(x)<0$ for any $x\\neq0$." + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# Test\nd1(5, f)", - "execution_count": 125, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 125, - "data": { - "text/plain": "79.99999999697138" - }, - "metadata": {} - } + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('

');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " event.shiftKey = false;\n", + " // Send a \"J\" for go to next cell\n", + " event.which = 74;\n", + " event.keyCode = 74;\n", + " manager.command_mode();\n", + " manager.handle_keydown(event);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "metadata": {}, - "cell_type": "markdown", - "source": "### Derivatives" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "df1 = nd.Derivative(f)\ndf2 = nd.Derivative(f, n=2)", - "execution_count": 130, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%timeit opt.minimize(f, 10, method='Newton-CG', jac=df1, hess=df2)", - "execution_count": 131, - "outputs": [ - { - "output_type": "stream", - "text": "185 ms ± 10.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n", - "name": "stdout" - } + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Refresher of matrix algebra" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "Quadratic form: $Q(x_{1}, x_{2}) = a_{1}\\,x_{1}^2 + a_{2}\\,x_{2}^2 + a_{3}\\,x_{1}\\,x_{2}$

\n\nThis a algebraic expression can be written with matrix notation:\n$\n x=\n \\left[ {\\begin{array}{c}\n x_{1} \\\\\n x_{2} \\\\\n \\end{array} } \\right]\n$\n and \n$\n A=\n \\left[ {\\begin{array}{c}\n a_{1} & a_{3}/2 \\\\\n a_{3}/2 & a_{2} \\\\\n \\end{array} } \\right]\n$\n imply $Q(x)=x^{T}\\,A\\,x$. Notice that $A$ is a square, **symmetric** matrix. Therefore, there is a one-to-one relationship between quadratic forms and symmetric matrices.

\n \n*Definitions*:
\n* A quadratic form is *positive definite* iff $Q(x)>0$ for any $x\\neq0$.\n* A quadratic form is *negative definite* iff $Q(x)<0$ for any $x\\neq0$." - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib notebook\n", + "fig = plt.figure()\n", + "fig.suptitle('Semi-Definite Quadratic Forms', fontsize=16)\n", + "\n", + "ax1 = fig.add_subplot(121, projection='3d')\n", + "ax1.plot_wireframe(X, Y, (X+Y)**2, rstride=10, cstride=10)\n", + "ax1.set_title('Positive Semi-Definite')\n", + "\n", + "ax2 = fig.add_subplot(122, projection='3d')\n", + "ax2.plot_wireframe(X, Y, -(X+Y)**2, rstride=10, cstride=10)\n", + "ax2.set_title('Negative Semi-Definite')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Definitions*:
\n", + "* A quadratic form is *indefinite* iff $Q(x)>0$ for some $x$ and $Q(x)<0$ for another $x$." + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%matplotlib notebook\nplt.rcParams['figure.figsize'] = [8, 3]\nfig = plt.figure()\nfig.suptitle('Definite Quadratic Forms', fontsize=16)\n\nx = np.linspace(-5, 5, 101)\ny = np.linspace(-5, 5, 101)\nX, Y = np.meshgrid(x, y)\n\nax1 = fig.add_subplot(121, projection='3d')\nax1.plot_wireframe(X, Y, X**2+Y**2, rstride=10, cstride=10)\nax1.set_title('Positive Definite')\n\nax2 = fig.add_subplot(122, projection='3d')\nax2.plot_wireframe(X, Y, -X**2-Y**2, rstride=10, cstride=10)\nax2.set_title('Negative Definite')\n\nplt.show()", - "execution_count": 132, - "outputs": [ - { - "output_type": "display_data", - "data": { - "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support.' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
')\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " event.shiftKey = false;\n", + " // Send a \"J\" for go to next cell\n", + " event.which = 74;\n", + " event.keyCode = 74;\n", + " manager.command_mode();\n", + " manager.handle_keydown(event);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "metadata": {}, - "cell_type": "markdown", - "source": "*Definitions*:
\n* A quadratic form is *positive semi-definite* iff $Q(x)\\geq0$ for any $x$.\n* A quadratic form is *negative semi-definite* iff $Q(x)\\leq0$ for any $x$." - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "%matplotlib notebook\nfig = plt.figure()\nfig.suptitle('Semi-Definite Quadratic Forms', fontsize=16)\n\nax1 = fig.add_subplot(121, projection='3d')\nax1.plot_wireframe(X, Y, (X+Y)**2, rstride=10, cstride=10)\nax1.set_title('Positive Semi-Definite')\n\nax2 = fig.add_subplot(122, projection='3d')\nax2.plot_wireframe(X, Y, -(X+Y)**2, rstride=10, cstride=10)\nax2.set_title('Negative Semi-Definite')\n\nplt.show()", - "execution_count": 133, - "outputs": [ - { - "output_type": "display_data", - "data": { - "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support.' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
')\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('
');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n event.shiftKey = false;\n // Send a \"J\" for go to next cell\n event.which = 74;\n event.keyCode = 74;\n manager.command_mode();\n manager.handle_keydown(event);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n", - "text/plain": "" - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "text/html": "", - "text/plain": "" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "[1.0, -1.0, -4.000000000000001]" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Testing definiteness" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def principal_minors(M):\n if M.ndim == 2 and np.all(M == M.transpose()):\n lpm = []\n for k in np.arange(0, M.shape[0], 1):\n lpm.append(np.linalg.det(M[0:k+1, 0:k+1]))\n return lpm", - "execution_count": 135, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "A = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 9]])", - "execution_count": 136, - "outputs": [] - }, + }, + "execution_count": 137, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "principal_minors(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": {}, + "outputs": [], + "source": [ + "def positive_definite(M):\n", + " if M.ndim == 2 and np.all(M == M.transpose()):\n", + " return np.all(np.array(principal_minors(M))>0)" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "principal_minors(A)", - "execution_count": 137, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 137, - "data": { - "text/plain": "[1.0, -1.0, -4.000000000000001]" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "False" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def positive_definite(M):\n if M.ndim == 2 and np.all(M == M.transpose()):\n return np.all(np.array(principal_minors(M))>0)", - "execution_count": 138, - "outputs": [] - }, + }, + "execution_count": 139, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "positive_definite(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": {}, + "outputs": [], + "source": [ + "def negative_definite(M):\n", + " if M.ndim == 2 and np.all(M == M.transpose()):\n", + " n = M.shape[0]\n", + " c = [(-1)**(i+1) for i in np.arange(0, n, 1)]\n", + " return np.all((np.array(c)*np.array(principal_minors(M)))>0)" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "positive_definite(A)", - "execution_count": 139, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 139, - "data": { - "text/plain": "False" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "False" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def negative_definite(M):\n if M.ndim == 2 and np.all(M == M.transpose()):\n n = M.shape[0]\n c = [(-1)**(i+1) for i in np.arange(0, n, 1)]\n return np.all((np.array(c)*np.array(principal_minors(M)))>0)", - "execution_count": 140, - "outputs": [] - }, + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "negative_definite(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [], + "source": [ + "def indefinite(M):\n", + " if M.ndim == 2 and np.all(M == M.transpose()):\n", + " if not positive_definite(M) and not negative_definite(M):\n", + " n = M.shape[0]\n", + " return np.all(np.array(principal_minors(M)) != 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "negative_definite(A)", - "execution_count": 141, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 141, - "data": { - "text/plain": "False" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "True" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def indefinite(M):\n if M.ndim == 2 and np.all(M == M.transpose()):\n if not positive_definite(M) and not negative_definite(M):\n n = M.shape[0]\n return np.all(np.array(principal_minors(M)) != 0)", - "execution_count": 142, - "outputs": [] - }, + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "indefinite(A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Eigenvalues, Eigenvectors and Eigen Decomposition\n", + "\n", + "$A$: square matrix ($n \\times n$), $x$: column vector ($n \\times 1$), $\\lambda$: scalar.
\n", + "\n", + "*Definition*: $\\lambda$ is an **eigenvalue** of $A$ with corresponding $x$ **eigenvector** iff $A\\,x=\\lambda\\,x$.
\n", + "\n", + "Eigenvalues must solve $\\mathrm{det}(A-\\lambda\\,I)=0$.\n", + "\n", + "*Result*: If $A$ is a real symmetric matrix, all of its eigenvalues are real numbers, and eigenvectors corresponding to distinct eigenvalues are orthogonal.\n", + "\n", + "*Eigen Decomposition of Symmetric Matrices*:
\n", + "Let $P = [x_1, x_2, ..., x_n]$ and $D=diag(\\lambda_1, \\lambda_2, ..., \\lambda_n)$. Then $A = P\\,D\\,P^{-1}$.\n", + "\n", + "If $\\lambda_i>0, \\forall i$, then $A$ is **positive definite**.
\n", + "\n", + "If $\\lambda_i<0, \\forall i$, then $A$ is **negative definite**.
\n", + "\n", + "If $\\lambda_i\\geq0, \\forall i$, then $A$ is **positive semi-definite**.
\n", + "\n", + "If $\\lambda_i\\leq0, \\forall i$, then $A$ is **negative semi-definite**." + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "indefinite(A)", - "execution_count": 143, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 143, - "data": { - "text/plain": "True" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "(array([12.14984759, -0.28900503, 1.13915745]),\n", + " array([[ 0.30595473, 0.90505749, -0.29540249],\n", + " [ 0.43670868, -0.40912915, -0.80118592],\n", + " [ 0.84597709, -0.11612179, 0.52042146]]))" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Eigenvalues, Eigenvectors and Eigen Decomposition\n\n$A$: square matrix ($n \\times n$), $x$: column vector ($n \\times 1$), $\\lambda$: scalar.
\n\n*Definition*: $\\lambda$ is an **eigenvalue** of $A$ with corresponding $x$ **eigenvector** iff $A\\,x=\\lambda\\,x$.
\n\nEigenvalues must solve $\\mathrm{det}(A-\\lambda\\,I)=0$.\n\n*Result*: If $A$ is a real symmetric matrix, all of its eigenvalues are real numbers, and eigenvectors corresponding to distinct eigenvalues are orthogonal.\n\n*Eigen Decomposition of Symmetric Matrices*:
\nLet $P = [x_1, x_2, ..., x_n]$ and $D=diag(\\lambda_1, \\lambda_2, ..., \\lambda_n)$. Then $A = P\\,D\\,P^{-1}$.\n\nIf $\\lambda_i>0, \\forall i$, then $A$ is **positive definite**.
\n\nIf $\\lambda_i<0, \\forall i$, then $A$ is **negative definite**.
\n\nIf $\\lambda_i\\geq0, \\forall i$, then $A$ is **positive semi-definite**.
\n\nIf $\\lambda_i\\leq0, \\forall i$, then $A$ is **negative semi-definite**." - }, + }, + "execution_count": 144, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.eig(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [], + "source": [ + "def pos_def(A):\n", + " return (np.all(np.linalg.eig(A)[0]>0))" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "np.linalg.eig(A)", - "execution_count": 144, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 144, - "data": { - "text/plain": "(array([12.14984759, -0.28900503, 1.13915745]),\n array([[ 0.30595473, 0.90505749, -0.29540249],\n [ 0.43670868, -0.40912915, -0.80118592],\n [ 0.84597709, -0.11612179, 0.52042146]]))" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "False" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def pos_def(A):\n return (np.all(np.linalg.eig(A)[0]>0))", - "execution_count": 145, - "outputs": [] - }, + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pos_def(A)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multivariate functions" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [], + "source": [ + "def f(x):\n", + " return x[0]**2+x[1]**2-50*np.sin(.5*(x[0]+x[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [], + "source": [ + "x = np.array([1, 2, 3])\n", + "y = np.array([20, 40, 60])" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [], + "source": [ + "X, Y = np.meshgrid(x, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "pos_def(A)", - "execution_count": 146, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 146, - "data": { - "text/plain": "False" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [1, 2, 3],\n", + " [1, 2, 3]])" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Multivariate functions" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def f(x):\n return x[0]**2+x[1]**2-50*np.sin(.5*(x[0]+x[1]))", - "execution_count": 147, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x = np.array([1, 2, 3])\ny = np.array([20, 40, 60])", - "execution_count": 148, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "X, Y = np.meshgrid(x, y)", - "execution_count": 149, - "outputs": [] - }, + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "X", - "execution_count": 150, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 150, - "data": { - "text/plain": "array([[1, 2, 3],\n [1, 2, 3],\n [1, 2, 3]])" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "array([[20, 20, 20],\n", + " [40, 40, 40],\n", + " [60, 60, 60]])" ] - }, + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Y" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": { + "scrolled": true + }, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "Y", - "execution_count": 151, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 151, - "data": { - "text/plain": "array([[20, 20, 20],\n [40, 40, 40],\n [60, 60, 60]])" - }, - "metadata": {} - } + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('
');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n event.shiftKey = false;\n // Send a \"J\" for go to next cell\n event.which = 74;\n event.keyCode = 74;\n manager.command_mode();\n manager.handle_keydown(event);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n", - "text/plain": "" - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "text/html": "", - "text/plain": "" - }, - "metadata": {} - } + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" ] - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib notebook\n", + "plt.rcParams['figure.figsize'] = [5, 3]\n", + "\n", + "x = np.linspace(-10, 10, 101)\n", + "y = np.linspace(-10, 10, 101)\n", + "X, Y = np.meshgrid(x, y)\n", + "\n", + "fig = plt.figure()\n", + "fig.suptitle('$x^2+y^2-50\\,sin(.5(x+y))$', fontsize=16)\n", + "\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "ax.plot_wireframe(X, Y, f([X, Y]), rstride=10, cstride=10)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": { + "scrolled": true + }, + "outputs": [ { - "metadata": { - "trusted": true, - "scrolled": true - }, - "cell_type": "code", - "source": "%matplotlib notebook\nplt.rcParams['figure.figsize'] = [5, 3]\nx = np.linspace(-10, 10, 101)\ny = np.linspace(-10, 10, 101)\nX, Y = np.meshgrid(x, y)\n\nfig = plt.figure()\n\nax = fig.add_subplot(111)\nax.contour(X, Y, f([X, Y]))\n\nplt.show()", - "execution_count": 153, - "outputs": [ - { - "output_type": "display_data", - "data": { - "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support.' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
')\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " event.shiftKey = false;\n", + " // Send a \"J\" for go to next cell\n", + " event.which = 74;\n", + " event.keyCode = 74;\n", + " manager.command_mode();\n", + " manager.handle_keydown(event);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import numpy as np\nfrom scipy.optimize import minimize", - "execution_count": 154, - "outputs": [] - }, + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib notebook\n", + "plt.rcParams['figure.figsize'] = [5, 3]\n", + "x = np.linspace(-10, 10, 101)\n", + "y = np.linspace(-10, 10, 101)\n", + "X, Y = np.meshgrid(x, y)\n", + "\n", + "fig = plt.figure()\n", + "\n", + "ax = fig.add_subplot(111)\n", + "ax.contour(X, Y, f([X, Y]))\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy.optimize import minimize" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Nelder-Mead" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ { - "metadata": {}, - "cell_type": "markdown", - "source": "### Nelder-Mead" + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: -45.431122\n", + " Iterations: 76\n", + " Function evaluations: 137\n", + "[1.4541966 1.45419654]\n" + ] }, { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x0 = np.array([0, 0])\nres = minimize(f, x0, method='nelder-mead', options={'xtol': 1e-8, 'disp': True})\nprint(res.x)\nf(res.x)", - "execution_count": 155, - "outputs": [ - { - "output_type": "stream", - "text": "Optimization terminated successfully.\n Current function value: -45.431122\n Iterations: 76\n Function evaluations: 137\n[1.4541966 1.45419654]\n", - "name": "stdout" - }, - { - "output_type": "execute_result", - "execution_count": 155, - "data": { - "text/plain": "-45.43112199357746" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "-45.43112199357746" ] - }, + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x0 = np.array([0, 0])\n", + "res = minimize(f, x0, method='nelder-mead', options={'xtol': 1e-8, 'disp': True})\n", + "print(res.x)\n", + "f(res.x)" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "res", - "execution_count": 156, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 156, - "data": { - "text/plain": " final_simplex: (array([[1.4541966 , 1.45419654],\n [1.4541966 , 1.45419654],\n [1.4541966 , 1.45419654]]), array([-45.43112199, -45.43112199, -45.43112199]))\n fun: -45.43112199357746\n message: 'Optimization terminated successfully.'\n nfev: 137\n nit: 76\n status: 0\n success: True\n x: array([1.4541966 , 1.45419654])" - }, - "metadata": {} - } + "data": { + "text/plain": [ + " final_simplex: (array([[1.4541966 , 1.45419654],\n", + " [1.4541966 , 1.45419654],\n", + " [1.4541966 , 1.45419654]]), array([-45.43112199, -45.43112199, -45.43112199]))\n", + " fun: -45.43112199357746\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 137\n", + " nit: 76\n", + " status: 0\n", + " success: True\n", + " x: array([1.4541966 , 1.45419654])" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Gradient and Hessian" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "fgrad = nd.Gradient(f)\nfhess = nd.Hessian(f)", - "execution_count": 157, - "outputs": [] - }, + }, + "execution_count": 156, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Gradient and Hessian" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": {}, + "outputs": [], + "source": [ + "fgrad = nd.Gradient(f)\n", + "fhess = nd.Hessian(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "type(fgrad)", - "execution_count": 158, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 158, - "data": { - "text/plain": "numdifftools.core.Gradient" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "numdifftools.core.Gradient" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Conjugate Gradient" - }, + }, + "execution_count": 158, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(fgrad)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Conjugate Gradient" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x0 = np.array([0, 0])\nres = minimize(f, x0, method='CG', jac=fgrad, options={'disp': True})\nprint(res.x)", - "execution_count": 159, - "outputs": [ - { - "output_type": "stream", - "text": "Optimization terminated successfully.\n Current function value: -45.431122\n Iterations: 3\n Function evaluations: 8\n Gradient evaluations: 8\n[1.45419657 1.45419657]\n", - "name": "stdout" - } - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: -45.431122\n", + " Iterations: 3\n", + " Function evaluations: 8\n", + " Gradient evaluations: 8\n", + "[1.45419657 1.45419657]\n" + ] + } + ], + "source": [ + "x0 = np.array([0, 0])\n", + "res = minimize(f, x0, method='CG', jac=fgrad, options={'disp': True})\n", + "print(res.x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Broyden, Fletcher, Goldfarb, and Shanno (BFGS)" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [ { - "metadata": {}, - "cell_type": "markdown", - "source": "### Broyden, Fletcher, Goldfarb, and Shanno (BFGS)" + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: -45.431122\n", + " Iterations: 5\n", + " Function evaluations: 7\n", + " Gradient evaluations: 7\n", + "[1.45419657 1.45419657]\n" + ] }, { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x0 = np.array([0, 0])\nres = minimize(f, x0, method='BFGS', jac=fgrad, options={'gtol': 1e-8, 'disp': True})\nprint(res.x)\nf(res.x)", - "execution_count": 160, - "outputs": [ - { - "output_type": "stream", - "text": "Optimization terminated successfully.\n Current function value: -45.431122\n Iterations: 5\n Function evaluations: 7\n Gradient evaluations: 7\n[1.45419657 1.45419657]\n", - "name": "stdout" - }, - { - "output_type": "execute_result", - "execution_count": 160, - "data": { - "text/plain": "-45.43112199357746" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "-45.43112199357746" ] - }, + }, + "execution_count": 160, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x0 = np.array([0, 0])\n", + "res = minimize(f, x0, method='BFGS', jac=fgrad, options={'gtol': 1e-8, 'disp': True})\n", + "print(res.x)\n", + "f(res.x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Newton-CG" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [ { - "metadata": {}, - "cell_type": "markdown", - "source": "### Newton-CG" + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: -45.431122\n", + " Iterations: 5\n", + " Function evaluations: 9\n", + " Gradient evaluations: 13\n", + " Hessian evaluations: 5\n", + "[1.45419658 1.45419658]\n" + ] }, { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x0 = np.array([0, 0])\nres = minimize(f, x0, method='Newton-CG', jac=fgrad, hess=fhess, options={'xtol': 1e-8, 'disp': True})\nprint(res.x)\nf(res.x)", - "execution_count": 161, - "outputs": [ - { - "output_type": "stream", - "text": "Optimization terminated successfully.\n Current function value: -45.431122\n Iterations: 5\n Function evaluations: 9\n Gradient evaluations: 13\n Hessian evaluations: 5\n[1.45419658 1.45419658]\n", - "name": "stdout" - }, - { - "output_type": "execute_result", - "execution_count": 161, - "data": { - "text/plain": "-45.43112199357747" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "-45.43112199357747" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "### Maximum Likelihood" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "mu = 18\nsigma = 5\nn = 30\nS = np.random.normal(loc=mu, scale=sigma, size=n)", - "execution_count": 162, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def likelihood(par):\n # par[0]=mu\n # par[1]=sigma\n \n v = 0\n \n for x in S:\n v += -.5*((x-par[0])/par[1])**2-np.log(par[1])\n \n return -v", - "execution_count": 163, - "outputs": [] - }, + }, + "execution_count": 161, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x0 = np.array([0, 0])\n", + "res = minimize(f, x0, method='Newton-CG', jac=fgrad, hess=fhess, options={'xtol': 1e-8, 'disp': True})\n", + "print(res.x)\n", + "f(res.x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Maximum Likelihood" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": {}, + "outputs": [], + "source": [ + "mu = 18\n", + "sigma = 5\n", + "n = 30\n", + "S = np.random.normal(loc=mu, scale=sigma, size=n)" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": {}, + "outputs": [], + "source": [ + "def likelihood(par):\n", + " # par[0]=mu\n", + " # par[1]=sigma\n", + " \n", + " v = 0\n", + " \n", + " for x in S:\n", + " v += -.5*((x-par[0])/par[1])**2-np.log(par[1])\n", + " \n", + " return -v" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x0 = np.array([1, 1])\nres = minimize(likelihood, x0, method='nelder-mead', options={'xtol': 1e-8, 'disp': True})", - "execution_count": 164, - "outputs": [ - { - "output_type": "stream", - "text": "Optimization terminated successfully.\n Current function value: 62.562558\n Iterations: 94\n Function evaluations: 186\n", - "name": "stdout" - } - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 62.562558\n", + " Iterations: 94\n", + " Function evaluations: 186\n" + ] + } + ], + "source": [ + "x0 = np.array([1, 1])\n", + "res = minimize(likelihood, x0, method='nelder-mead', options={'xtol': 1e-8, 'disp': True})" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "res.x", - "execution_count": 165, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 165, - "data": { - "text/plain": "array([17.57308836, 4.88133418])" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "array([17.57308836, 4.88133418])" ] - }, + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res.x" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "S.mean()", - "execution_count": 166, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 166, - "data": { - "text/plain": "17.573088308542683" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "17.573088308542683" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Consumer´s problem with CES utility" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def utility(x, *args):\n return -(x**.25+(args[0]-args[1]*x)**.25)", - "execution_count": 167, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def demand(m, p):\n x = opt.minimize(utility, .3, args=(m, p), method=\"CG\").x[0]\n return (x, m-p*x)", - "execution_count": 168, - "outputs": [] - }, + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "S.mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Consumer´s problem with CES utility" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [], + "source": [ + "def utility(x, *args):\n", + " return -(x**.25+(args[0]-args[1]*x)**.25)" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [], + "source": [ + "def demand(m, p):\n", + " x = opt.minimize(utility, .3, args=(m, p), method=\"CG\").x[0]\n", + " return (x, m-p*x)" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "demand(5, 2)", - "execution_count": 169, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 169, - "data": { - "text/plain": "(1.1062334943922492, 2.7875330112155017)" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "(1.1062334943922492, 2.7875330112155017)" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "price = np.arange(.1, 5, .1)", - "execution_count": 170, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Regressão Múltipla" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x1 = np.random.uniform(0, 100, size=20000)", - "execution_count": 171, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x2 = np.random.uniform(0, 100, size=20000)", - "execution_count": 172, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x2 = .9*x2+.1*x1", - "execution_count": 173, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "sigma = 5\ny = 10+.4*x1+.7*x2+np.random.normal(loc=0, scale=sigma, size=20000)", - "execution_count": 174, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def my_ols(beta): \n return np.sum((y-beta[0]-beta[1]*x1-beta[2]*x2)**2) ", - "execution_count": 175, - "outputs": [] - }, + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "demand(5, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [], + "source": [ + "price = np.arange(.1, 5, .1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Regressão Múltipla" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [], + "source": [ + "x1 = np.random.uniform(0, 100, size=20000)" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [], + "source": [ + "x2 = np.random.uniform(0, 100, size=20000)" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [], + "source": [ + "x2 = .9*x2+.1*x1" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [], + "source": [ + "sigma = 5\n", + "y = 10+.4*x1+.7*x2+np.random.normal(loc=0, scale=sigma, size=20000)" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [], + "source": [ + "def my_ols(beta): \n", + " return np.sum((y-beta[0]-beta[1]*x1-beta[2]*x2)**2) " + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "opt.minimize(my_ols, (10.1, .5, .6), method=\"CG\")", - "execution_count": 176, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 176, - "data": { - "text/plain": " fun: 497096.51526724786\n jac: array([0.09375 , 0.31640625, 0.15625 ])\n message: 'Desired error not necessarily achieved due to precision loss.'\n nfev: 626\n nit: 24\n njev: 123\n status: 2\n success: False\n x: array([9.91014709, 0.4020818 , 0.70068662])" - }, - "metadata": {} - } + "data": { + "text/plain": [ + " fun: 497096.51526724786\n", + " jac: array([0.09375 , 0.31640625, 0.15625 ])\n", + " message: 'Desired error not necessarily achieved due to precision loss.'\n", + " nfev: 626\n", + " nit: 24\n", + " njev: 123\n", + " status: 2\n", + " success: False\n", + " x: array([9.91014709, 0.4020818 , 0.70068662])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "markdown", - "source": "## OLS with matrices" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import io", - "execution_count": 178, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "DATA = np.loadtxt(\"data/regression.csv\", delimiter=\";\")", - "execution_count": 185, - "outputs": [] - }, + }, + "execution_count": 176, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "opt.minimize(my_ols, (10.1, .5, .6), method=\"CG\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## OLS with matrices" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [], + "source": [ + "import io" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [], + "source": [ + "DATA = np.loadtxt(\"data/regression.csv\", delimiter=\";\")" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "DATA", - "execution_count": 186, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 186, - "data": { - "text/plain": "array([[ 19.1503647 , 19.86175115, 37.76143252],\n [ 74.48652608, 36.51600696, 118.1015082 ],\n [ 92.52296518, 65.04593036, 415.2253619 ],\n ...,\n [ 71.10202338, 84.71663564, 470.9957971 ],\n [ 57.05130161, 63.70372631, 382.7933641 ],\n [ 30.32013916, 58.94863735, 200.9883957 ]])" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "array([[ 19.1503647 , 19.86175115, 37.76143252],\n", + " [ 74.48652608, 36.51600696, 118.1015082 ],\n", + " [ 92.52296518, 65.04593036, 415.2253619 ],\n", + " ...,\n", + " [ 71.10202338, 84.71663564, 470.9957971 ],\n", + " [ 57.05130161, 63.70372631, 382.7933641 ],\n", + " [ 30.32013916, 58.94863735, 200.9883957 ]])" ] - }, + }, + "execution_count": 186, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "DATA" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "DATA.shape", - "execution_count": 187, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 187, - "data": { - "text/plain": "(500, 3)" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "(500, 3)" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "y = DATA[:, 2].reshape(500, 1)", - "execution_count": 188, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "X = DATA[:, 0:2].reshape(500, 2)", - "execution_count": 189, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "c = np.ones(500).reshape(500, 1)\nX = np.concatenate((c, X), axis=1)", - "execution_count": 192, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def my_ols(y, X):\n \n results = {}\n \n (n, k) = X.shape\n results['n'] = n\n results['k'] = k\n \n beta = np.linalg.inv(X.T @ X) @ X.T @ y\n results['beta'] = beta\n \n e = y - X @ beta\n results['residuas'] = e\n \n SSE = sum([e**2 for e in e])[0]\n results['SSE'] = SSE\n \n sigma = np.sqrt(SSE/(n-k))\n results['sigma'] = sigma\n \n V = sigma**2*np.linalg.inv(X.T @ X)\n results['V'] = V\n \n stderr_beta = np.sqrt(np.diag(V))\n results['stderr_beta'] = stderr_beta\n \n t = beta/stderr_beta\n results['t'] = t\n \n # results['p-values'] = \n \n ybar = np.mean(y)\n SQT = sum([(q-ybar)**2 for q in y])[0]\n results['SQT'] = SQT\n \n results['R2'] = 1-(SSE/SQT)\n \n return results ", - "execution_count": 193, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "res = my_ols(y, X)", - "execution_count": 195, - "outputs": [] - }, + }, + "execution_count": 187, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "DATA.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [], + "source": [ + "y = DATA[:, 2].reshape(500, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": {}, + "outputs": [], + "source": [ + "X = DATA[:, 0:2].reshape(500, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [], + "source": [ + "c = np.ones(500).reshape(500, 1)\n", + "X = np.concatenate((c, X), axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": {}, + "outputs": [], + "source": [ + "def my_ols(y, X):\n", + " \n", + " results = {}\n", + " \n", + " (n, k) = X.shape\n", + " results['n'] = n\n", + " results['k'] = k\n", + " \n", + " beta = np.linalg.inv(X.T @ X) @ X.T @ y\n", + " results['beta'] = beta\n", + " \n", + " e = y - X @ beta\n", + " results['residuas'] = e\n", + " \n", + " SSE = sum([e**2 for e in e])[0]\n", + " results['SSE'] = SSE\n", + " \n", + " sigma = np.sqrt(SSE/(n-k))\n", + " results['sigma'] = sigma\n", + " \n", + " V = sigma**2*np.linalg.inv(X.T @ X)\n", + " results['V'] = V\n", + " \n", + " stderr_beta = np.sqrt(np.diag(V))\n", + " results['stderr_beta'] = stderr_beta\n", + " \n", + " t = beta/stderr_beta\n", + " results['t'] = t\n", + " \n", + " # results['p-values'] = \n", + " \n", + " ybar = np.mean(y)\n", + " SQT = sum([(q-ybar)**2 for q in y])[0]\n", + " results['SQT'] = SQT\n", + " \n", + " results['R2'] = 1-(SSE/SQT)\n", + " \n", + " return results " + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": {}, + "outputs": [], + "source": [ + "res = my_ols(y, X)" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "res", - "execution_count": 196, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 196, - "data": { - "text/plain": "{'R2': 0.5985995381650879,\n 'SQT': 9376178.724748027,\n 'SSE': 3763602.4703605347,\n 'V': array([[ 1.15445286e+02, -5.91775326e-01, -1.40469455e+00],\n [-5.91775326e-01, 2.16566265e-02, -1.01166076e-02],\n [-1.40469455e+00, -1.01166076e-02, 3.83194387e-02]]),\n 'beta': array([[46.56424501],\n [ 3.13088995],\n [ 1.65078469]]),\n 'k': 3,\n 'n': 500,\n 'residuas': array([[-101.5479714 ],\n [-221.95191746],\n [ -28.39493021],\n [ -55.33220907],\n [ 46.99151994],\n [ -61.49876145],\n [ -10.97375688],\n [ 56.04286631],\n [-107.07201378],\n [ -22.64234823],\n [ 18.65252702],\n [ 4.20478851],\n [ 58.73792368],\n [ -96.97502295],\n [ -32.86295192],\n [ -20.22262579],\n [ -67.86712849],\n [ 31.87090306],\n [-162.09171263],\n [ -30.01260059],\n [ 11.30891441],\n [ 158.79214349],\n [-114.42340488],\n [ 142.02318218],\n [ -7.57932036],\n [ -6.49910448],\n [ -44.32843848],\n [ 6.77717352],\n [ 27.23886701],\n [ 39.42746732],\n [-125.27544158],\n [-312.31561908],\n [ 35.88072314],\n [-104.09877123],\n [ -79.13277739],\n [ 62.99108447],\n [ -91.41741639],\n [ 18.04156839],\n [ 81.20209596],\n [ 167.03597417],\n [ 42.0640298 ],\n [ 105.40291713],\n [ 16.97150062],\n [ -44.58504449],\n [ 21.74017311],\n [-119.24943519],\n [ 44.37169876],\n [ 46.01439546],\n [ 76.43506709],\n [ -3.24526726],\n [-202.64255128],\n [ 31.20018425],\n [ 189.10460729],\n [ -23.35534431],\n [ 111.06580827],\n [ 122.03248408],\n [ 19.6059557 ],\n [ 85.72600805],\n [ 199.40993468],\n [ -15.16393386],\n [ 30.05152467],\n [ -24.64764002],\n [ -21.39643233],\n [ 109.15564929],\n [ -96.8452832 ],\n [ 10.6165261 ],\n [ 44.98996026],\n [ 17.5538346 ],\n [ 74.99139838],\n [ 57.08109974],\n [-103.42989143],\n [ -54.15445582],\n [ -80.42379658],\n [ 105.22613221],\n [ 17.60163826],\n [ -84.46223973],\n [ 58.74487388],\n [ -98.38843651],\n [ -57.53132956],\n [ -86.94008465],\n [ 74.25321121],\n [ 66.92698085],\n [ -59.01239301],\n [-182.26613088],\n [ -37.75723997],\n [ -28.90642743],\n [ 10.86710065],\n [ 141.34484921],\n [ 93.36643912],\n [ 79.22696845],\n [ -13.49699548],\n [ 31.19637282],\n [ 28.09608592],\n [ 107.61569733],\n [ 85.52565333],\n [ 67.63855529],\n [ 4.370889 ],\n [ 10.2535358 ],\n [-110.85158432],\n [ -99.42686928],\n [ 28.80679849],\n [ -41.13217022],\n [ 82.26697646],\n [ 0.84861706],\n [ -52.83297938],\n [ 104.87647745],\n [ -5.12211887],\n [ 31.24030526],\n [ -49.3991086 ],\n [-120.22473235],\n [ 67.42246154],\n [ 22.78784737],\n [ 62.42370371],\n [ -44.05909589],\n [ 33.27995053],\n [-123.29471171],\n [ -85.16575008],\n [ -75.75880457],\n [ -37.87498583],\n [ -62.96929899],\n [ 101.86481092],\n [ 94.23284647],\n [ 73.07195268],\n [-117.88512509],\n [ 79.72472231],\n [ -64.44538218],\n [ 14.22644226],\n [ -34.61251184],\n [ 85.21693507],\n [ -3.38182631],\n [ 159.57932115],\n [-133.65984906],\n [-220.12187744],\n [ -52.28391002],\n [ -62.61818894],\n [ -63.10637861],\n [ 14.74703647],\n [ -78.82130204],\n [ 10.9336829 ],\n [-108.21194236],\n [ 108.41923868],\n [ -93.71377032],\n [ 105.88677136],\n [ 36.01765966],\n [ -84.08827417],\n [ 79.33084495],\n [ -17.56642068],\n [ 1.61921415],\n [ 52.11176536],\n [ 21.24481943],\n [ -4.83874205],\n [ 34.4028412 ],\n [ -41.1694442 ],\n [ -71.97469513],\n [ -10.5282205 ],\n [ 132.42414377],\n [ -41.14052994],\n [ 93.85825104],\n [ 5.54528063],\n [-102.08421457],\n [-101.2525261 ],\n [ -26.34363365],\n [ -92.82507213],\n [ -95.64195275],\n [ 102.86431787],\n [-125.75170496],\n [ -61.04351189],\n [ 36.53242613],\n [ 63.19604717],\n [-121.94036996],\n [ -29.08640409],\n [ -37.81013073],\n [ 71.66432807],\n [ 139.07554448],\n [ 98.0285007 ],\n [ 13.75349943],\n [ 0.66487986],\n [ 80.80062849],\n [ 149.18500181],\n [-104.23506815],\n [ 35.42054448],\n [ 37.19662996],\n [ 75.85221312],\n [ 47.49472216],\n [ 99.36408343],\n [-124.56424503],\n [-136.76910575],\n [ -21.60461406],\n [ -2.85575289],\n [ 13.40534834],\n [ 6.87101313],\n [-144.10257391],\n [ -13.37941404],\n [ -31.98826158],\n [ 51.15112054],\n [ -56.68792921],\n [ 42.41272565],\n [ -6.59041779],\n [ 64.75262061],\n [ 30.59657478],\n [ 0.70872505],\n [ 34.5089948 ],\n [ 37.74967398],\n [-122.9368161 ],\n [ 51.1430415 ],\n [ 12.74621679],\n [ 109.12818117],\n [ -92.6956237 ],\n [ 1.44006582],\n [ 132.61012448],\n [-112.54238589],\n [ 154.62747078],\n [ -33.22687664],\n [ 106.4492505 ],\n [-137.45651495],\n [ 28.81481772],\n [ -67.06380283],\n [ 23.44887046],\n [ 10.0924554 ],\n [ 114.89782724],\n [ -20.31846722],\n [ 21.73272829],\n [ 149.54119515],\n [ 111.24471443],\n [ 99.48539882],\n [ -35.16836302],\n [-101.03350911],\n [ 5.97295888],\n [ 7.25257305],\n [ 51.40076171],\n [ -30.86662914],\n [ 18.5159811 ],\n [ 23.16362683],\n [-209.4508955 ],\n [ 18.32657647],\n [ -17.78768718],\n [ 123.10046595],\n [ -9.64742725],\n [ 69.10647314],\n [-164.90965008],\n [ 33.90077698],\n [ -8.34156276],\n [ 81.03494855],\n [ -91.18612226],\n [ -25.95547259],\n [ -57.68636868],\n [ 52.21787164],\n [ -79.80093395],\n [ -96.93575685],\n [ 40.20106337],\n [ -84.97110081],\n [-176.65211321],\n [ 8.84422442],\n [ 46.25082615],\n [ -78.30918897],\n [-160.69327075],\n [ 11.4988301 ],\n [ -68.91145975],\n [ 159.72108347],\n [ -96.1293634 ],\n [ 93.29661842],\n [ -3.34290725],\n [ -44.37403604],\n [ 72.78003375],\n [ 58.9726092 ],\n [-120.2722184 ],\n [ -10.23962428],\n [ -15.23178661],\n [ -72.45067441],\n [ -24.58103381],\n [ -52.95582732],\n [ -32.68445947],\n [ 22.92107052],\n [ 58.30793965],\n [ -1.94134787],\n [-195.81366884],\n [ -68.38699782],\n [-133.16039657],\n [ 176.34274647],\n [ 119.58028278],\n [ -11.16733305],\n [ -36.53320335],\n [ -29.89061742],\n [ -8.5470335 ],\n [ 253.78529229],\n [ 73.91284241],\n [ -56.34987242],\n [ -7.53272516],\n [ 32.47293837],\n [ 45.3525632 ],\n [ -62.21617915],\n [ 12.03373577],\n [ 71.69315111],\n [ 51.26931421],\n [ 82.19307397],\n [-161.8850339 ],\n [ 65.16107598],\n [ 55.05160744],\n [ 132.12975865],\n [ -7.72943068],\n [ 115.02356431],\n [ 62.30344601],\n [ 85.52811036],\n [-146.2041484 ],\n [-114.01867649],\n [-146.59243508],\n [ 24.68708032],\n [-166.22366955],\n [ 21.05365449],\n [-135.30194749],\n [ 128.71733593],\n [ 139.90881929],\n [ 84.5286062 ],\n [ -18.7346335 ],\n [-162.76454329],\n [ -83.63409885],\n [ -34.3897405 ],\n [ -2.30820206],\n [-142.94615367],\n [ 143.00421992],\n [ -30.33643127],\n [ 0.70105601],\n [ -81.80772148],\n [ -52.18366292],\n [ 131.82395509],\n [ 116.4002786 ],\n [ 87.21203659],\n [ 55.19493985],\n [ 0.73477336],\n [ 59.55495105],\n [ 154.46364059],\n [-225.37742167],\n [ 100.21140938],\n [ -98.4036096 ],\n [ 52.63610646],\n [ 11.21453164],\n [ 71.22375439],\n [ -20.14484612],\n [ -86.31817529],\n [ 81.97505105],\n [ 145.00287557],\n [ -27.14528074],\n [ -35.40432235],\n [-138.65037835],\n [ -50.8112898 ],\n [ 8.05796719],\n [ -86.45810587],\n [ -99.40024209],\n [ 54.44078033],\n [ 13.20265305],\n [ -83.12674952],\n [ 54.23072453],\n [ 142.61263906],\n [ -94.10693382],\n [ -51.6455085 ],\n [-167.74786399],\n [ -14.9176615 ],\n [ 124.56501798],\n [-147.92842575],\n [-123.26242741],\n [ 67.91845291],\n [ 85.94901879],\n [ 56.8292938 ],\n [ 36.38058081],\n [ 2.50780512],\n [ 30.39006654],\n [ 127.20394344],\n [-117.73165514],\n [ -2.91657795],\n [ 130.09466648],\n [ -65.3558783 ],\n [ -77.74367354],\n [ -93.52577826],\n [ 22.82638954],\n [ 97.91688948],\n [ 53.87450743],\n [ 13.75402425],\n [ -28.26171893],\n [ -99.63714579],\n [ 16.60563733],\n [ 69.64217385],\n [ -48.15398647],\n [-118.63089411],\n [ 111.87660506],\n [ 24.72343764],\n [ -78.08036474],\n [ -33.88756366],\n [ 33.82069537],\n [ 93.46996659],\n [-247.63913812],\n [ 125.80897024],\n [ 89.26976925],\n [ -3.17516635],\n [ 6.49234628],\n [ 50.69214318],\n [ -96.48176485],\n [ 64.27828339],\n [ 45.58814614],\n [ -57.13311006],\n [ -9.63702525],\n [ 97.76026444],\n [ 9.9760717 ],\n [ -61.11679856],\n [-172.90145046],\n [ 28.449908 ],\n [ 27.95965117],\n [ 97.41121182],\n [-111.4052245 ],\n [ 24.42075129],\n [ -6.03706554],\n [ 19.2155579 ],\n [ 79.78392442],\n [ 63.53156487],\n [ -30.25166355],\n [ 133.04310397],\n [-148.69858107],\n [ 29.30858162],\n [ 202.30977745],\n [ -8.43015243],\n [ -78.15001325],\n [ -3.32114832],\n [ 71.20823193],\n [ 49.14825274],\n [ -12.91143505],\n [ 17.58689208],\n [ -32.32333969],\n [ 68.64015904],\n [ -18.49234881],\n [-155.71407156],\n [ -53.08093331],\n [ -40.04314427],\n [ -96.77421987],\n [ 75.09998225],\n [-142.26316309],\n [ 144.07657567],\n [ -0.9142981 ],\n [ -46.88141109],\n [ 104.18149192],\n [ -7.3838574 ],\n [ 122.98792883],\n [ -25.1067871 ],\n [ -38.86438531],\n [ -29.94311814],\n [ -20.84379604],\n [ -45.63977493],\n [ 120.47849375],\n [ 54.38004088],\n [ -4.38531758],\n [ -33.28213529],\n [ 83.76194741],\n [ 141.38514588],\n [ 66.76231509],\n [-122.11997948],\n [ -34.56647166],\n [ 6.10989168],\n [-281.5787354 ],\n [ 176.19837602],\n [ 44.85378175],\n [ 88.58657353],\n [ 33.0908565 ],\n [ -38.92066434],\n [ 21.62952278],\n [ -4.22175343],\n [ -60.49997326],\n [-109.4640204 ],\n [ -60.48590219],\n [ -27.57076231],\n [ 62.39724201],\n [ 61.39945488],\n [-117.07550313],\n [ 31.65153877],\n [ 20.12100501],\n [ 85.92539889],\n [ -61.86124012],\n [ 61.49792896],\n [ 165.73461627],\n [ 37.26269992],\n [ -21.53092624],\n [ -65.38451959],\n [ -68.93437777],\n [ -99.90633439],\n [ 160.65240439],\n [ -5.26000289],\n [ 72.74214152],\n [ 85.47600172],\n [ -75.87006958],\n [ -82.28498281],\n [ -53.84139672],\n [ 32.14703738],\n [ 111.38677626],\n [ -36.82556496],\n [ 207.45035291],\n [ -75.70162734],\n [ -9.97591029],\n [ 104.25785348],\n [ 39.10952468],\n [ 35.37869775],\n [ 61.97001728],\n [ 52.44663671],\n [ -37.8163759 ]]),\n 'sigma': 87.02092153863731,\n 'stderr_beta': array([10.74454682, 0.14716191, 0.19575352]),\n 't': array([[4.33375607e+00, 3.16415072e+02, 2.37871820e+02],\n [2.91393392e-01, 2.12751386e+01, 1.59940420e+01],\n [1.53639303e-01, 1.12174729e+01, 8.43297595e+00]])}" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "{'R2': 0.5985995381650879,\n", + " 'SQT': 9376178.724748027,\n", + " 'SSE': 3763602.4703605347,\n", + " 'V': array([[ 1.15445286e+02, -5.91775326e-01, -1.40469455e+00],\n", + " [-5.91775326e-01, 2.16566265e-02, -1.01166076e-02],\n", + " [-1.40469455e+00, -1.01166076e-02, 3.83194387e-02]]),\n", + " 'beta': array([[46.56424501],\n", + " [ 3.13088995],\n", + " [ 1.65078469]]),\n", + " 'k': 3,\n", + " 'n': 500,\n", + " 'residuas': array([[-101.5479714 ],\n", + " [-221.95191746],\n", + " [ -28.39493021],\n", + " [ -55.33220907],\n", + " [ 46.99151994],\n", + " [ -61.49876145],\n", + " [ -10.97375688],\n", + " [ 56.04286631],\n", + " [-107.07201378],\n", + " [ -22.64234823],\n", + " [ 18.65252702],\n", + " [ 4.20478851],\n", + " [ 58.73792368],\n", + " [ -96.97502295],\n", + " [ -32.86295192],\n", + " [ -20.22262579],\n", + " [ -67.86712849],\n", + " [ 31.87090306],\n", + " [-162.09171263],\n", + " [ -30.01260059],\n", + " [ 11.30891441],\n", + " [ 158.79214349],\n", + " [-114.42340488],\n", + " [ 142.02318218],\n", + " [ -7.57932036],\n", + " [ -6.49910448],\n", + " [ -44.32843848],\n", + " [ 6.77717352],\n", + " [ 27.23886701],\n", + " [ 39.42746732],\n", + " [-125.27544158],\n", + " [-312.31561908],\n", + " [ 35.88072314],\n", + " [-104.09877123],\n", + " [ -79.13277739],\n", + " [ 62.99108447],\n", + " [ -91.41741639],\n", + " [ 18.04156839],\n", + " [ 81.20209596],\n", + " [ 167.03597417],\n", + " [ 42.0640298 ],\n", + " [ 105.40291713],\n", + " [ 16.97150062],\n", + " [ -44.58504449],\n", + " [ 21.74017311],\n", + " [-119.24943519],\n", + " [ 44.37169876],\n", + " [ 46.01439546],\n", + " [ 76.43506709],\n", + " [ -3.24526726],\n", + " [-202.64255128],\n", + " [ 31.20018425],\n", + " [ 189.10460729],\n", + " [ -23.35534431],\n", + " [ 111.06580827],\n", + " [ 122.03248408],\n", + " [ 19.6059557 ],\n", + " [ 85.72600805],\n", + " [ 199.40993468],\n", + " [ -15.16393386],\n", + " [ 30.05152467],\n", + " [ -24.64764002],\n", + " [ -21.39643233],\n", + " [ 109.15564929],\n", + " [ -96.8452832 ],\n", + " [ 10.6165261 ],\n", + " [ 44.98996026],\n", + " [ 17.5538346 ],\n", + " [ 74.99139838],\n", + " [ 57.08109974],\n", + " [-103.42989143],\n", + " [ -54.15445582],\n", + " [ -80.42379658],\n", + " [ 105.22613221],\n", + " [ 17.60163826],\n", + " [ -84.46223973],\n", + " [ 58.74487388],\n", + " [ -98.38843651],\n", + " [ -57.53132956],\n", + " [ -86.94008465],\n", + " [ 74.25321121],\n", + " [ 66.92698085],\n", + " [ -59.01239301],\n", + " [-182.26613088],\n", + " [ -37.75723997],\n", + " [ -28.90642743],\n", + " [ 10.86710065],\n", + " [ 141.34484921],\n", + " [ 93.36643912],\n", + " [ 79.22696845],\n", + " [ -13.49699548],\n", + " [ 31.19637282],\n", + " [ 28.09608592],\n", + " [ 107.61569733],\n", + " [ 85.52565333],\n", + " [ 67.63855529],\n", + " [ 4.370889 ],\n", + " [ 10.2535358 ],\n", + " [-110.85158432],\n", + " [ -99.42686928],\n", + " [ 28.80679849],\n", + " [ -41.13217022],\n", + " [ 82.26697646],\n", + " [ 0.84861706],\n", + " [ -52.83297938],\n", + " [ 104.87647745],\n", + " [ -5.12211887],\n", + " [ 31.24030526],\n", + " [ -49.3991086 ],\n", + " [-120.22473235],\n", + " [ 67.42246154],\n", + " [ 22.78784737],\n", + " [ 62.42370371],\n", + " [ -44.05909589],\n", + " [ 33.27995053],\n", + " [-123.29471171],\n", + " [ -85.16575008],\n", + " [ -75.75880457],\n", + " [ -37.87498583],\n", + " [ -62.96929899],\n", + " [ 101.86481092],\n", + " [ 94.23284647],\n", + " [ 73.07195268],\n", + " [-117.88512509],\n", + " [ 79.72472231],\n", + " [ -64.44538218],\n", + " [ 14.22644226],\n", + " [ -34.61251184],\n", + " [ 85.21693507],\n", + " [ -3.38182631],\n", + " [ 159.57932115],\n", + " [-133.65984906],\n", + " [-220.12187744],\n", + " [ -52.28391002],\n", + " [ -62.61818894],\n", + " [ -63.10637861],\n", + " [ 14.74703647],\n", + " [ -78.82130204],\n", + " [ 10.9336829 ],\n", + " [-108.21194236],\n", + " [ 108.41923868],\n", + " [ -93.71377032],\n", + " [ 105.88677136],\n", + " [ 36.01765966],\n", + " [ -84.08827417],\n", + " [ 79.33084495],\n", + " [ -17.56642068],\n", + " [ 1.61921415],\n", + " [ 52.11176536],\n", + " [ 21.24481943],\n", + " [ -4.83874205],\n", + " [ 34.4028412 ],\n", + " [ -41.1694442 ],\n", + " [ -71.97469513],\n", + " [ -10.5282205 ],\n", + " [ 132.42414377],\n", + " [ -41.14052994],\n", + " [ 93.85825104],\n", + " [ 5.54528063],\n", + " [-102.08421457],\n", + " [-101.2525261 ],\n", + " [ -26.34363365],\n", + " [ -92.82507213],\n", + " [ -95.64195275],\n", + " [ 102.86431787],\n", + " [-125.75170496],\n", + " [ -61.04351189],\n", + " [ 36.53242613],\n", + " [ 63.19604717],\n", + " [-121.94036996],\n", + " [ -29.08640409],\n", + " [ -37.81013073],\n", + " [ 71.66432807],\n", + " [ 139.07554448],\n", + " [ 98.0285007 ],\n", + " [ 13.75349943],\n", + " [ 0.66487986],\n", + " [ 80.80062849],\n", + " [ 149.18500181],\n", + " [-104.23506815],\n", + " [ 35.42054448],\n", + " [ 37.19662996],\n", + " [ 75.85221312],\n", + " [ 47.49472216],\n", + " [ 99.36408343],\n", + " [-124.56424503],\n", + " [-136.76910575],\n", + " [ -21.60461406],\n", + " [ -2.85575289],\n", + " [ 13.40534834],\n", + " [ 6.87101313],\n", + " [-144.10257391],\n", + " [ -13.37941404],\n", + " [ -31.98826158],\n", + " [ 51.15112054],\n", + " [ -56.68792921],\n", + " [ 42.41272565],\n", + " [ -6.59041779],\n", + " [ 64.75262061],\n", + " [ 30.59657478],\n", + " [ 0.70872505],\n", + " [ 34.5089948 ],\n", + " [ 37.74967398],\n", + " [-122.9368161 ],\n", + " [ 51.1430415 ],\n", + " [ 12.74621679],\n", + " [ 109.12818117],\n", + " [ -92.6956237 ],\n", + " [ 1.44006582],\n", + " [ 132.61012448],\n", + " [-112.54238589],\n", + " [ 154.62747078],\n", + " [ -33.22687664],\n", + " [ 106.4492505 ],\n", + " [-137.45651495],\n", + " [ 28.81481772],\n", + " [ -67.06380283],\n", + " [ 23.44887046],\n", + " [ 10.0924554 ],\n", + " [ 114.89782724],\n", + " [ -20.31846722],\n", + " [ 21.73272829],\n", + " [ 149.54119515],\n", + " [ 111.24471443],\n", + " [ 99.48539882],\n", + " [ -35.16836302],\n", + " [-101.03350911],\n", + " [ 5.97295888],\n", + " [ 7.25257305],\n", + " [ 51.40076171],\n", + " [ -30.86662914],\n", + " [ 18.5159811 ],\n", + " [ 23.16362683],\n", + " [-209.4508955 ],\n", + " [ 18.32657647],\n", + " [ -17.78768718],\n", + " [ 123.10046595],\n", + " [ -9.64742725],\n", + " [ 69.10647314],\n", + " [-164.90965008],\n", + " [ 33.90077698],\n", + " [ -8.34156276],\n", + " [ 81.03494855],\n", + " [ -91.18612226],\n", + " [ -25.95547259],\n", + " [ -57.68636868],\n", + " [ 52.21787164],\n", + " [ -79.80093395],\n", + " [ -96.93575685],\n", + " [ 40.20106337],\n", + " [ -84.97110081],\n", + " [-176.65211321],\n", + " [ 8.84422442],\n", + " [ 46.25082615],\n", + " [ -78.30918897],\n", + " [-160.69327075],\n", + " [ 11.4988301 ],\n", + " [ -68.91145975],\n", + " [ 159.72108347],\n", + " [ -96.1293634 ],\n", + " [ 93.29661842],\n", + " [ -3.34290725],\n", + " [ -44.37403604],\n", + " [ 72.78003375],\n", + " [ 58.9726092 ],\n", + " [-120.2722184 ],\n", + " [ -10.23962428],\n", + " [ -15.23178661],\n", + " [ -72.45067441],\n", + " [ -24.58103381],\n", + " [ -52.95582732],\n", + " [ -32.68445947],\n", + " [ 22.92107052],\n", + " [ 58.30793965],\n", + " [ -1.94134787],\n", + " [-195.81366884],\n", + " [ -68.38699782],\n", + " [-133.16039657],\n", + " [ 176.34274647],\n", + " [ 119.58028278],\n", + " [ -11.16733305],\n", + " [ -36.53320335],\n", + " [ -29.89061742],\n", + " [ -8.5470335 ],\n", + " [ 253.78529229],\n", + " [ 73.91284241],\n", + " [ -56.34987242],\n", + " [ -7.53272516],\n", + " [ 32.47293837],\n", + " [ 45.3525632 ],\n", + " [ -62.21617915],\n", + " [ 12.03373577],\n", + " [ 71.69315111],\n", + " [ 51.26931421],\n", + " [ 82.19307397],\n", + " [-161.8850339 ],\n", + " [ 65.16107598],\n", + " [ 55.05160744],\n", + " [ 132.12975865],\n", + " [ -7.72943068],\n", + " [ 115.02356431],\n", + " [ 62.30344601],\n", + " [ 85.52811036],\n", + " [-146.2041484 ],\n", + " [-114.01867649],\n", + " [-146.59243508],\n", + " [ 24.68708032],\n", + " [-166.22366955],\n", + " [ 21.05365449],\n", + " [-135.30194749],\n", + " [ 128.71733593],\n", + " [ 139.90881929],\n", + " [ 84.5286062 ],\n", + " [ -18.7346335 ],\n", + " [-162.76454329],\n", + " [ -83.63409885],\n", + " [ -34.3897405 ],\n", + " [ -2.30820206],\n", + " [-142.94615367],\n", + " [ 143.00421992],\n", + " [ -30.33643127],\n", + " [ 0.70105601],\n", + " [ -81.80772148],\n", + " [ -52.18366292],\n", + " [ 131.82395509],\n", + " [ 116.4002786 ],\n", + " [ 87.21203659],\n", + " [ 55.19493985],\n", + " [ 0.73477336],\n", + " [ 59.55495105],\n", + " [ 154.46364059],\n", + " [-225.37742167],\n", + " [ 100.21140938],\n", + " [ -98.4036096 ],\n", + " [ 52.63610646],\n", + " [ 11.21453164],\n", + " [ 71.22375439],\n", + " [ -20.14484612],\n", + " [ -86.31817529],\n", + " [ 81.97505105],\n", + " [ 145.00287557],\n", + " [ -27.14528074],\n", + " [ -35.40432235],\n", + " [-138.65037835],\n", + " [ -50.8112898 ],\n", + " [ 8.05796719],\n", + " [ -86.45810587],\n", + " [ -99.40024209],\n", + " [ 54.44078033],\n", + " [ 13.20265305],\n", + " [ -83.12674952],\n", + " [ 54.23072453],\n", + " [ 142.61263906],\n", + " [ -94.10693382],\n", + " [ -51.6455085 ],\n", + " [-167.74786399],\n", + " [ -14.9176615 ],\n", + " [ 124.56501798],\n", + " [-147.92842575],\n", + " [-123.26242741],\n", + " [ 67.91845291],\n", + " [ 85.94901879],\n", + " [ 56.8292938 ],\n", + " [ 36.38058081],\n", + " [ 2.50780512],\n", + " [ 30.39006654],\n", + " [ 127.20394344],\n", + " [-117.73165514],\n", + " [ -2.91657795],\n", + " [ 130.09466648],\n", + " [ -65.3558783 ],\n", + " [ -77.74367354],\n", + " [ -93.52577826],\n", + " [ 22.82638954],\n", + " [ 97.91688948],\n", + " [ 53.87450743],\n", + " [ 13.75402425],\n", + " [ -28.26171893],\n", + " [ -99.63714579],\n", + " [ 16.60563733],\n", + " [ 69.64217385],\n", + " [ -48.15398647],\n", + " [-118.63089411],\n", + " [ 111.87660506],\n", + " [ 24.72343764],\n", + " [ -78.08036474],\n", + " [ -33.88756366],\n", + " [ 33.82069537],\n", + " [ 93.46996659],\n", + " [-247.63913812],\n", + " [ 125.80897024],\n", + " [ 89.26976925],\n", + " [ -3.17516635],\n", + " [ 6.49234628],\n", + " [ 50.69214318],\n", + " [ -96.48176485],\n", + " [ 64.27828339],\n", + " [ 45.58814614],\n", + " [ -57.13311006],\n", + " [ -9.63702525],\n", + " [ 97.76026444],\n", + " [ 9.9760717 ],\n", + " [ -61.11679856],\n", + " [-172.90145046],\n", + " [ 28.449908 ],\n", + " [ 27.95965117],\n", + " [ 97.41121182],\n", + " [-111.4052245 ],\n", + " [ 24.42075129],\n", + " [ -6.03706554],\n", + " [ 19.2155579 ],\n", + " [ 79.78392442],\n", + " [ 63.53156487],\n", + " [ -30.25166355],\n", + " [ 133.04310397],\n", + " [-148.69858107],\n", + " [ 29.30858162],\n", + " [ 202.30977745],\n", + " [ -8.43015243],\n", + " [ -78.15001325],\n", + " [ -3.32114832],\n", + " [ 71.20823193],\n", + " [ 49.14825274],\n", + " [ -12.91143505],\n", + " [ 17.58689208],\n", + " [ -32.32333969],\n", + " [ 68.64015904],\n", + " [ -18.49234881],\n", + " [-155.71407156],\n", + " [ -53.08093331],\n", + " [ -40.04314427],\n", + " [ -96.77421987],\n", + " [ 75.09998225],\n", + " [-142.26316309],\n", + " [ 144.07657567],\n", + " [ -0.9142981 ],\n", + " [ -46.88141109],\n", + " [ 104.18149192],\n", + " [ -7.3838574 ],\n", + " [ 122.98792883],\n", + " [ -25.1067871 ],\n", + " [ -38.86438531],\n", + " [ -29.94311814],\n", + " [ -20.84379604],\n", + " [ -45.63977493],\n", + " [ 120.47849375],\n", + " [ 54.38004088],\n", + " [ -4.38531758],\n", + " [ -33.28213529],\n", + " [ 83.76194741],\n", + " [ 141.38514588],\n", + " [ 66.76231509],\n", + " [-122.11997948],\n", + " [ -34.56647166],\n", + " [ 6.10989168],\n", + " [-281.5787354 ],\n", + " [ 176.19837602],\n", + " [ 44.85378175],\n", + " [ 88.58657353],\n", + " [ 33.0908565 ],\n", + " [ -38.92066434],\n", + " [ 21.62952278],\n", + " [ -4.22175343],\n", + " [ -60.49997326],\n", + " [-109.4640204 ],\n", + " [ -60.48590219],\n", + " [ -27.57076231],\n", + " [ 62.39724201],\n", + " [ 61.39945488],\n", + " [-117.07550313],\n", + " [ 31.65153877],\n", + " [ 20.12100501],\n", + " [ 85.92539889],\n", + " [ -61.86124012],\n", + " [ 61.49792896],\n", + " [ 165.73461627],\n", + " [ 37.26269992],\n", + " [ -21.53092624],\n", + " [ -65.38451959],\n", + " [ -68.93437777],\n", + " [ -99.90633439],\n", + " [ 160.65240439],\n", + " [ -5.26000289],\n", + " [ 72.74214152],\n", + " [ 85.47600172],\n", + " [ -75.87006958],\n", + " [ -82.28498281],\n", + " [ -53.84139672],\n", + " [ 32.14703738],\n", + " [ 111.38677626],\n", + " [ -36.82556496],\n", + " [ 207.45035291],\n", + " [ -75.70162734],\n", + " [ -9.97591029],\n", + " [ 104.25785348],\n", + " [ 39.10952468],\n", + " [ 35.37869775],\n", + " [ 61.97001728],\n", + " [ 52.44663671],\n", + " [ -37.8163759 ]]),\n", + " 'sigma': 87.02092153863731,\n", + " 'stderr_beta': array([10.74454682, 0.14716191, 0.19575352]),\n", + " 't': array([[4.33375607e+00, 3.16415072e+02, 2.37871820e+02],\n", + " [2.91393392e-01, 2.12751386e+01, 1.59940420e+01],\n", + " [1.53639303e-01, 1.12174729e+01, 8.43297595e+00]])}" ] - }, + }, + "execution_count": 196, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res" + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "res['R2']", - "execution_count": 197, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 197, - "data": { - "text/plain": "0.5985995381650879" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "0.5985995381650879" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "", - "execution_count": null, - "outputs": [] - } - ], - "metadata": { - "kernelspec": { - "name": "python3", - "display_name": "Python 3", - "language": "python" - }, - "language_info": { - "mimetype": "text/x-python", - "nbconvert_exporter": "python", - "name": "python", - "pygments_lexer": "ipython3", - "version": "3.5.4", - "file_extension": ".py", - "codemirror_mode": { - "version": 3, - "name": "ipython" - } + }, + "execution_count": 197, + "metadata": {}, + "output_type": "execute_result" } + ], + "source": [ + "res['R2']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 2 -} \ No newline at end of file + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/0-pre-requisitos/2-math/otimiza\303\247\303\243o-II.ipynb" "b/0-pre-requisitos/2-math/otimiza\303\247\303\243o-II.ipynb" old mode 100644 new mode 100755 index d051859..3900c73 --- "a/0-pre-requisitos/2-math/otimiza\303\247\303\243o-II.ipynb" +++ "b/0-pre-requisitos/2-math/otimiza\303\247\303\243o-II.ipynb" @@ -1,539 +1,665 @@ { - "cells": [ - { - "metadata": {}, - "cell_type": "markdown", - "source": "# Optimization with equality constraints" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import math\nimport numpy as np\nfrom scipy import optimize as opt", - "execution_count": 1, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "maximize $.4\\,\\log(x_1)+.6\\,\\log(x_2)$ s.t. $x_1+3\\,x_2=50$." - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "I = 50\np = np.array([1, 3])", - "execution_count": 2, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "U = lambda x: (.4*math.log(x[0])+.6*math.log(x[1]))", - "execution_count": 3, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x0 = (I/len(p))/np.array(p)", - "execution_count": 6, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "budget = ({'type': 'eq', 'fun': lambda x: I-np.sum(np.multiply(x, p))})", - "execution_count": 8, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "opt.minimize(lambda x: -U(x), x0, method='SLSQP', constraints=budget, tol=1e-08, \n options={'disp': True, 'ftol': 1e-08})", - "execution_count": 9, - "outputs": [ - { - "output_type": "stream", - "text": "Optimization terminated successfully. (Exit mode 0)\n Current function value: -2.5798439652115133\n Iterations: 8\n Function evaluations: 32\n Gradient evaluations: 8\n", - "name": "stdout" - }, - { - "output_type": "execute_result", - "execution_count": 9, - "data": { - "text/plain": " fun: -2.5798439652115133\n jac: array([-0.01999989, -0.06000018])\n message: 'Optimization terminated successfully.'\n nfev: 32\n nit: 8\n njev: 8\n status: 0\n success: True\n x: array([20.00008839, 9.99997054])" - }, - "metadata": {} - } + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Optimization with equality constraints" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import numpy as np\n", + "from scipy import optimize as opt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "maximize $.4\\,\\log(x_1)+.6\\,\\log(x_2)$ s.t. $x_1+3\\,x_2=50$." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "I = 50\n", + "p = np.array([1, 3])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "U = lambda x: (.4*math.log(x[0])+.6*math.log(x[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "x0 = (I/len(p))/np.array(p)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "budget = ({'type': 'eq', 'fun': lambda x: I-np.sum(np.multiply(x, p))})" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully. (Exit mode 0)\n", + " Current function value: -2.5798439652115133\n", + " Iterations: 8\n", + " Function evaluations: 32\n", + " Gradient evaluations: 8\n" + ] + }, + { + "data": { + "text/plain": [ + " fun: -2.5798439652115133\n", + " jac: array([-0.01999989, -0.06000018])\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 32\n", + " nit: 8\n", + " njev: 8\n", + " status: 0\n", + " success: True\n", + " x: array([20.00008839, 9.99997054])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def consumer(U, p, I):\n budget = ({'type': 'eq', 'fun': lambda x: I-np.sum(np.multiply(x, p))})\n x0 = (I/len(p))/np.array(p)\n sol = opt.minimize(lambda x: -U(x), x0, method='SLSQP', constraints=budget, tol=1e-08, \n options={'disp': False, 'ftol': 1e-08})\n if sol.status == 0:\n return {'x': sol.x, 'V': -sol.fun, 'MgU': -sol.jac, 'mult': -sol.jac[0]/p[0]}\n else:\n return 0", - "execution_count": 16, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "consumer(U, p, I)", - "execution_count": 19, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 19, - "data": { - "text/plain": "{'MgU': array([0.01999989, 0.06000018]),\n 'V': 2.5798439652115133,\n 'mult': 0.01999989151954651,\n 'x': array([20.00008839, 9.99997054])}" - }, - "metadata": {} - } + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "opt.minimize(lambda x: -U(x), x0, method='SLSQP', constraints=budget, tol=1e-08, \n", + " options={'disp': True, 'ftol': 1e-08})" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "def consumer(U, p, I):\n", + " budget = ({'type': 'eq', 'fun': lambda x: I-np.sum(np.multiply(x, p))})\n", + " x0 = (I/len(p))/np.array(p)\n", + " sol = opt.minimize(lambda x: -U(x), x0, method='SLSQP', constraints=budget, tol=1e-08, \n", + " options={'disp': False, 'ftol': 1e-08})\n", + " if sol.status == 0:\n", + " return {'x': sol.x, 'V': -sol.fun, 'MgU': -sol.jac, 'mult': -sol.jac[0]/p[0]}\n", + " else:\n", + " return 0" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'MgU': array([0.01999989, 0.06000018]),\n", + " 'V': 2.5798439652115133,\n", + " 'mult': 0.01999989151954651,\n", + " 'x': array([20.00008839, 9.99997054])}" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "delta=.01", - "execution_count": 14, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "(consumer(U, p, I+delta)['V']-consumer(U, p, I-delta)['V'])/(2*delta)", - "execution_count": 17, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 17, - "data": { - "text/plain": "0.020000000351583225" - }, - "metadata": {} - } + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consumer(U, p, I)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "delta=.01" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.020000000351583225" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "delta=.001", - "execution_count": null, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "numerador = (consumer(U,p+np.array([delta, 0]), I)['V']-consumer(U,p+np.array([-delta, 0]), I)['V'])/(2*delta)", - "execution_count": 20, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "denominador = (consumer(U, p, I+delta)['V']-consumer(U, p, I-delta)['V'])/(2*delta)", - "execution_count": 21, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "-numerador/denominador", - "execution_count": 22, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 22, - "data": { - "text/plain": "20.000666372514335" - }, - "metadata": {} - } + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(consumer(U, p, I+delta)['V']-consumer(U, p, I-delta)['V'])/(2*delta)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "delta=.001" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "numerador = (consumer(U,p+np.array([delta, 0]), I)['V']-consumer(U,p+np.array([-delta, 0]), I)['V'])/(2*delta)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "denominador = (consumer(U, p, I+delta)['V']-consumer(U, p, I-delta)['V'])/(2*delta)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20.000666372514335" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Cost function" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# Production function\nF = lambda x: (x[0]**.8)*(x[1]**.2)", - "execution_count": 23, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "w = np.array([5, 4])", - "execution_count": 24, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "y = 1", - "execution_count": 25, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "constraint = ({'type': 'eq', 'fun': lambda x: y-F(x)})", - "execution_count": 26, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x0 = np.array([.5, .5])", - "execution_count": 30, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "cost = opt.minimize(lambda x: w@x, x0, method='SLSQP', constraints=constraint, tol=1e-08, \n options={'disp': True, 'ftol': 1e-08})", - "execution_count": 31, - "outputs": [ - { - "output_type": "stream", - "text": "Optimization terminated successfully. (Exit mode 0)\n Current function value: 7.886966805999761\n Iterations: 8\n Function evaluations: 33\n Gradient evaluations: 8\n", - "name": "stdout" - }, - { - "output_type": "stream", - "text": "/home/nbuser/anaconda3_420/lib/python3.5/site-packages/ipykernel/__main__.py:2: RuntimeWarning: invalid value encountered in double_scalars\n from ipykernel import kernelapp as app\n", - "name": "stderr" - } + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "-numerador/denominador" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cost function" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# Production function\n", + "F = lambda x: (x[0]**.8)*(x[1]**.2)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "w = np.array([5, 4])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "y = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "constraint = ({'type': 'eq', 'fun': lambda x: y-F(x)})" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "x0 = np.array([.5, .5])" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully. (Exit mode 0)\n", + " Current function value: 7.886966805999761\n", + " Iterations: 8\n", + " Function evaluations: 33\n", + " Gradient evaluations: 8\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/nbuser/anaconda3_420/lib/python3.5/site-packages/ipykernel/__main__.py:2: RuntimeWarning: invalid value encountered in double_scalars\n", + " from ipykernel import kernelapp as app\n" + ] + } + ], + "source": [ + "cost = opt.minimize(lambda x: w@x, x0, method='SLSQP', constraints=constraint, tol=1e-08, \n", + " options={'disp': True, 'ftol': 1e-08})" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9999999999996633" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "F(cost.x)", - "execution_count": 33, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 33, - "data": { - "text/plain": "0.9999999999996633" - }, - "metadata": {} - } + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F(cost.x)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " fun: 7.886966805999761\n", + " jac: array([5., 4.])\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 33\n", + " nit: 8\n", + " njev: 8\n", + " status: 0\n", + " success: True\n", + " x: array([1.26191469, 0.39434834])" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "cost", - "execution_count": 34, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 34, - "data": { - "text/plain": " fun: 7.886966805999761\n jac: array([5., 4.])\n message: 'Optimization terminated successfully.'\n nfev: 33\n nit: 8\n njev: 8\n status: 0\n success: True\n x: array([1.26191469, 0.39434834])" - }, - "metadata": {} - } + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cost" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "a = 2\n", + "u = lambda c: -np.exp(-a*c)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "R = 2\n", + "Z2 = np.array([.72, .92, 1.12, 1.32])\n", + "Z3 = np.array([.86, .96, 1.06, 1.16])" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "def U(x):\n", + " states = len(Z2)*len(Z3)\n", + " U = u(x[0])\n", + " \n", + " for z2 in Z2:\n", + " for z3 in Z3:\n", + " U += (1/states)*u(x[1]*R+x[2]*z2+x[3]*z3)\n", + " \n", + " return U" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "p = np.array([1, 1, .5, .5])\n", + "I = 4" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'MgU': array([0.08731231, 0.08730633, 0.04365353, 0.04365407]),\n", + " 'V': -0.13096546963056768,\n", + " 'mult': 0.08731230534613132,\n", + " 'x': array([2.43826386, 0.96156249, 0.40056072, 0.79978658])}" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Exercise" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "a = 2\nu = lambda c: -np.exp(-a*c)", - "execution_count": 15, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "R = 2\nZ2 = np.array([.72, .92, 1.12, 1.32])\nZ3 = np.array([.86, .96, 1.06, 1.16])", - "execution_count": 37, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def U(x):\n states = len(Z2)*len(Z3)\n U = u(x[0])\n \n for z2 in Z2:\n for z3 in Z3:\n U += (1/states)*u(x[1]*R+x[2]*z2+x[3]*z3)\n \n return U", - "execution_count": 57, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "p = np.array([1, 1, .5, .5])\nI = 4", - "execution_count": 35, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# a=1\nconsumer(U, p, I)", - "execution_count": 39, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 39, - "data": { - "text/plain": "{'MgU': array([0.08731231, 0.08730633, 0.04365353, 0.04365407]),\n 'V': -0.13096546963056768,\n 'mult': 0.08731230534613132,\n 'x': array([2.43826386, 0.96156249, 0.40056072, 0.79978658])}" - }, - "metadata": {} - } + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# a=1\n", + "consumer(U, p, I)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'MgU': array([1.46733761e-05, 1.62503376e-05, 6.30933317e-06, 7.55005789e-06]),\n", + " 'V': -4.5597092009686085e-06,\n", + " 'mult': 1.467337608573871e-05,\n", + " 'x': array([ 2.54778275, -0.03185392, 1.48407021, 1.48407214])}" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# a=5\nconsumer(U, p, I)", - "execution_count": 55, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 55, - "data": { - "text/plain": "{'MgU': array([1.46733761e-05, 1.62503376e-05, 6.30933317e-06, 7.55005789e-06]),\n 'V': -4.5597092009686085e-06,\n 'mult': 1.467337608573871e-05,\n 'x': array([ 2.54778275, -0.03185392, 1.48407021, 1.48407214])}" - }, - "metadata": {} - } + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# a=5\n", + "consumer(U, p, I)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'MgU': array([0.01213578, 0.01212819, 0.00606456, 0.00606509]),\n", + " 'V': -0.009099936642525175,\n", + " 'mult': 0.012135779834352434,\n", + " 'x': array([2.55237217, 1.15077956, 0.19958579, 0.39411074])}" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# a=2\nconsumer(U, p, I)", - "execution_count": 58, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 58, - "data": { - "text/plain": "{'MgU': array([0.01213578, 0.01212819, 0.00606456, 0.00606509]),\n 'V': -0.009099936642525175,\n 'mult': 0.012135779834352434,\n 'x': array([2.55237217, 1.15077956, 0.19958579, 0.39411074])}" - }, - "metadata": {} - } + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# a=2\n", + "consumer(U, p, I)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "x = np.arange(0.0, 2.0, 0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" }, { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import matplotlib.pyplot as plt", - "execution_count": 3, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x = np.arange(0.0, 2.0, 0.01)", - "execution_count": 6, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "a = 2\nu = lambda c: -np.exp(-a*c)\nplt.plot(x, u(x))", - "execution_count": 12, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 12, - "data": { - "text/plain": "[]" - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": "" - }, - "metadata": {} - } + "data": { + "image/png": "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\n", + "text/plain": [ + "" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "a = -2\nplt.plot(x, u(x))", - "execution_count": 16, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 16, - "data": { - "text/plain": "[]" - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": "" - }, - "metadata": {} - } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "a = 2\n", + "u = lambda c: -np.exp(-a*c)\n", + "plt.plot(x, u(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" }, { - "metadata": { - "trusted": true - }, - "cell_type": "markdown", - "source": "# Optimization with inequality constraints" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "f = lambda x: -x[0]**3+x[1]**2-2*x[0]*(x[2]**2)", - "execution_count": 13, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "constraints =({'type': 'eq', 'fun': lambda x: 2*x[0]+x[1]**2+x[2]-5}, \n {'type': 'ineq', 'fun': lambda x: 5*x[0]**2-x[1]**2-x[2]-2})", - "execution_count": 8, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "constraints =({'type': 'eq', 'fun': lambda x: x[0]**3-x[1]})", - "execution_count": 10, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "x0 = np.array([.5, .5, 2])\nopt.minimize(f, x0, method='SLSQP', constraints=constraints, tol=1e-08, \n options={'disp': True, 'ftol': 1e-08})", - "execution_count": 18, - "outputs": [ - { - "output_type": "stream", - "text": "Optimization terminated successfully. (Exit mode 0)\n Current function value: -19.000000000000256\n Iterations: 11\n Function evaluations: 56\n Gradient evaluations: 11\n", - "name": "stdout" - }, - { - "output_type": "execute_result", - "execution_count": 18, - "data": { - "text/plain": " fun: -19.000000000000256\n jac: array([-21., 0., -12.])\n message: 'Optimization terminated successfully.'\n nfev: 56\n nit: 11\n njev: 11\n status: 0\n success: True\n x: array([ 1.0000000e+00, -2.6438182e-09, 3.0000000e+00])" - }, - "metadata": {} - } + "data": { + "image/png": "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\n", + "text/plain": [ + "" ] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "", - "execution_count": null, - "outputs": [] + }, + "metadata": {}, + "output_type": "display_data" } - ], - "metadata": { - "kernelspec": { - "name": "python3", - "display_name": "Python 3", - "language": "python" - }, - "language_info": { - "mimetype": "text/x-python", - "nbconvert_exporter": "python", - "name": "python", - "file_extension": ".py", - "version": "3.5.4", - "pygments_lexer": "ipython3", - "codemirror_mode": { - "version": 3, - "name": "ipython" - } + ], + "source": [ + "a = -2\n", + "plt.plot(x, u(x))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Optimization with inequality constraints" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "f = lambda x: -x[0]**3+x[1]**2-2*x[0]*(x[2]**2)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "constraints =({'type': 'eq', 'fun': lambda x: 2*x[0]+x[1]**2+x[2]-5}, \n", + " {'type': 'ineq', 'fun': lambda x: 5*x[0]**2-x[1]**2-x[2]-2})" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "constraints =({'type': 'eq', 'fun': lambda x: x[0]**3-x[1]})" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully. (Exit mode 0)\n", + " Current function value: -19.000000000000256\n", + " Iterations: 11\n", + " Function evaluations: 56\n", + " Gradient evaluations: 11\n" + ] + }, + { + "data": { + "text/plain": [ + " fun: -19.000000000000256\n", + " jac: array([-21., 0., -12.])\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 56\n", + " nit: 11\n", + " njev: 11\n", + " status: 0\n", + " success: True\n", + " x: array([ 1.0000000e+00, -2.6438182e-09, 3.0000000e+00])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" } + ], + "source": [ + "x0 = np.array([.5, .5, 2])\n", + "opt.minimize(f, x0, method='SLSQP', constraints=constraints, tol=1e-08, \n", + " options={'disp': True, 'ftol': 1e-08})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 2 -} \ No newline at end of file + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/0-pre-requisitos/2-math/otimiza\303\247\303\243o-III.ipynb" "b/0-pre-requisitos/2-math/otimiza\303\247\303\243o-III.ipynb" old mode 100644 new mode 100755 index ff00af2..c87fe18 --- "a/0-pre-requisitos/2-math/otimiza\303\247\303\243o-III.ipynb" +++ "b/0-pre-requisitos/2-math/otimiza\303\247\303\243o-III.ipynb" @@ -1,279 +1,582 @@ { - "cells": [ - { - "metadata": { - "collapsed": true - }, - "cell_type": "markdown", - "source": "# Dynamic Optimization" - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "Imagine an infinitely-living individual who has an endowment of capital at the beginning of each period. This endowment is used to produce more goods according, and a fraction of it depreciates. The individual then decides what fraction of the output to consume, and the remaining becomes the endowment of capital available on the next period. Notice that there is just one good in this economy, which can be consumed or used in production (as capital).\n\nThe objective in period $t$ is to *maximize* the intertemporal utility\n$$U_{t} = \\sum_{s=0}^{+\\infty} \\beta^{s}\\,u(c_{t+s})$$\nsubject to\n$$k_{t+s}\\,(1-\\delta) + f(k_{t+s}) = c_{t+s} + k_{t+s+1},\\, t\\in\\mathcal{N}$$\n$k_{t+s}$ is the capital stock at the beginning of period $t+s$, $c_{t+s}$ is the consumption, $f()$ is a production function, $\\delta$ is the depreciation rate, and the discount rate is such that $0<\\beta<1$.\n\nAccording to [Bellman's Principle of Optimality](https://youtu.be/_zE5z-KZGRw) the solution to this problem must also solve\n$$V(k) = \\max \\{u(c)+\\beta\\,V(k^{\\prime})\\}$$\n$$s.t.\\;k^{\\prime}=f(k)+(1-\\delta)k-c$$\n\n*We want to find:*\n* a *value function* $V(k)$ that satisfies the conditions above\n* the associated *policy function* $h(k)$ that indicates what is the (intertemporal) optimal consumption $c$ given the amount of capital at the beginning of the period.\n\nFunctions:\n* $f(k)=k^\\alpha$\n* $u(c)=\\ln(c)$\n\nFirst order condition (wrt $k^{\\prime}$): $-u^{\\prime}(c)+\\beta\\,V^{\\prime}(k^{\\prime})=0$\n\nBenveniste-Scheinkman condition: $V^{\\prime}(k)=u^{\\prime}(c)\\,(1-\\delta+f^{\\prime}(k))$\n\nRe-arranging terms: \n$$k^{\\prime}+c=k^{\\alpha}+(1-\\delta)k$$\n$$c^{\\prime}=\\beta\\,c\\,\\left[1-\\delta+\\alpha\\,(k^{\\prime})^{\\alpha-1}\\right]$$\n\nIn steady state: $c=c^{\\prime}$ and $k=k^{\\prime}$\n\n$$k^{\\ast}=\\left[\\frac{\\alpha\\beta}{1-\\beta(1-\\delta)}\\right]^{\\frac{1}{1-\\alpha}}$$\n$$c^{\\ast}=(k^{\\ast})^{\\alpha}-\\delta k^{\\ast}$$\n\nParameters:\n* $\\alpha = .4$\n* $\\beta = .8$\n* $\\delta = .05$" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import math\nimport numpy as np\nfrom scipy import stats, optimize\nimport time\nimport matplotlib.pyplot as plt", - "execution_count": 2, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# parameters\nalpha = .4\nbeta = .8\ndelta = .05\npar = (alpha, beta, delta)", - "execution_count": 3, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# utility function\nu = lambda c: math.log(c)", - "execution_count": 4, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# production function\nf = lambda k: k**alpha", - "execution_count": 5, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# function to calculate distance between two lists with the same indices\ndef dist(V, W):\n d = 0\n for (_, v), (_, w) in zip(V.items(), W.items()):\n d = d + (v-w)**2\n return math.sqrt(d)", - "execution_count": 6, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 1: calculate steady-state" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "k_ss = (alpha*beta/(1-beta*(1-delta)))**(1/(1-alpha))\nc_ss = f(k_ss)-delta*k_ss\nprint(\"steady-state values:\\ncapital: {0:.1f}\\nconsumption: {1:.1f}\".format(k_ss, c_ss))", - "execution_count": 7, - "outputs": [ - { - "output_type": "stream", - "text": "steady-state values:\ncapital: 1.6\nconsumption: 1.1\n", - "name": "stdout" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 2: define a grid for $k$ (and $k^{\\prime}$)" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "g_size = 1000\nkmin = 0\nkmax = k_ss*2\nstep = kmax/g_size\n\nk_grid = np.arange(kmin+step, kmax+step, step)", - "execution_count": 8, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 3: define initial value function over grid" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# V0 is dictionary. V0(k)=k\nV0 = {}\nfor k in k_grid:\n V0[k] = math.log(k+1)", - "execution_count": 9, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 4: construct maximizer function" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# given a value of k and a (proposed) value function V, find k' that maximizes V over grid of k. \n\ndef maximizer(k, V0, u, f, k_grid):\n \n i = 0\n for K in k_grid:\n \n c = f(k)+(1-delta)*k-K\n if c>0:\n i += 1\n v = u(c)+beta*V0[K]\n if i == 1:\n vmax = v\n cmax = c\n kmax = K\n elif v>vmax:\n vmax = v\n cmax = c\n kmax = K\n \n return (vmax, cmax, kmax)", - "execution_count": 10, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 5: iteration over value function" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def bellman(V0, u, f, k_grid, eps=1e-3):\n \n T = {}\n T[0] = (1, 1)\n t0 = time.time()\n d = 1\n i = 0\n \n while d>eps:\n \n V = {}\n C = {}\n K = {}\n \n i += 1\n \n for k in k_grid:\n v = maximizer(k, V0, u, f, k_grid)\n V[k] = v[0]\n C[k] = v[1]\n K[k] = v[2]\n \n d = abs(dist(V, V0))\n V0 = V\n T[i] = (d, time.time()-t0)\n print('i: {0}, d = {1:.5f} ({2:.2%})'.format(i,d,(d/T[i-1][0])-1))\n \n print('i: {0}, d = {1:.5f})'.format(i,d))\n return (V, C, K, T)", - "execution_count": 12, - "outputs": [] - }, + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dynamic Optimization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Imagine an infinitely-living individual who has an endowment of capital at the beginning of each period. This endowment is used to produce more goods according, and a fraction of it depreciates. The individual then decides what fraction of the output to consume, and the remaining becomes the endowment of capital available on the next period. Notice that there is just one good in this economy, which can be consumed or used in production (as capital).\n", + "\n", + "The objective in period $t$ is to *maximize* the intertemporal utility\n", + "$$U_{t} = \\sum_{s=0}^{+\\infty} \\beta^{s}\\,u(c_{t+s})$$\n", + "subject to\n", + "$$k_{t+s}\\,(1-\\delta) + f(k_{t+s}) = c_{t+s} + k_{t+s+1},\\, t\\in\\mathcal{N}$$\n", + "$k_{t+s}$ is the capital stock at the beginning of period $t+s$, $c_{t+s}$ is the consumption, $f()$ is a production function, $\\delta$ is the depreciation rate, and the discount rate is such that $0<\\beta<1$.\n", + "\n", + "According to [Bellman's Principle of Optimality](https://youtu.be/_zE5z-KZGRw) the solution to this problem must also solve\n", + "$$V(k) = \\max \\{u(c)+\\beta\\,V(k^{\\prime})\\}$$\n", + "$$s.t.\\;k^{\\prime}=f(k)+(1-\\delta)k-c$$\n", + "\n", + "*We want to find:*\n", + "* a *value function* $V(k)$ that satisfies the conditions above\n", + "* the associated *policy function* $h(k)$ that indicates what is the (intertemporal) optimal consumption $c$ given the amount of capital at the beginning of the period.\n", + "\n", + "Functions:\n", + "* $f(k)=k^\\alpha$\n", + "* $u(c)=\\ln(c)$\n", + "\n", + "First order condition (wrt $k^{\\prime}$): $-u^{\\prime}(c)+\\beta\\,V^{\\prime}(k^{\\prime})=0$\n", + "\n", + "Benveniste-Scheinkman condition: $V^{\\prime}(k)=u^{\\prime}(c)\\,(1-\\delta+f^{\\prime}(k))$\n", + "\n", + "Re-arranging terms: \n", + "$$k^{\\prime}+c=k^{\\alpha}+(1-\\delta)k$$\n", + "$$c^{\\prime}=\\beta\\,c\\,\\left[1-\\delta+\\alpha\\,(k^{\\prime})^{\\alpha-1}\\right]$$\n", + "\n", + "In steady state: $c=c^{\\prime}$ and $k=k^{\\prime}$\n", + "\n", + "$$k^{\\ast}=\\left[\\frac{\\alpha\\beta}{1-\\beta(1-\\delta)}\\right]^{\\frac{1}{1-\\alpha}}$$\n", + "$$c^{\\ast}=(k^{\\ast})^{\\alpha}-\\delta k^{\\ast}$$\n", + "\n", + "Parameters:\n", + "* $\\alpha = .4$\n", + "* $\\beta = .8$\n", + "* $\\delta = .05$" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import numpy as np\n", + "from scipy import stats, optimize\n", + "import time\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# parameters\n", + "alpha = .4\n", + "beta = .8\n", + "delta = .05\n", + "par = (alpha, beta, delta)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# utility function\n", + "u = lambda c: math.log(c)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# production function\n", + "f = lambda k: k**alpha" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# function to calculate distance between two lists with the same indices\n", + "def dist(V, W):\n", + " d = 0\n", + " for (_, v), (_, w) in zip(V.items(), W.items()):\n", + " d = d + (v-w)**2\n", + " return math.sqrt(d)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 1: calculate steady-state" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ { - "metadata": {}, - "cell_type": "markdown", - "source": "## Shazam!" - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "steady-state values:\n", + "capital: 1.6\n", + "consumption: 1.1\n" + ] + } + ], + "source": [ + "k_ss = (alpha*beta/(1-beta*(1-delta)))**(1/(1-alpha))\n", + "c_ss = f(k_ss)-delta*k_ss\n", + "print(\"steady-state values:\\ncapital: {0:.1f}\\nconsumption: {1:.1f}\".format(k_ss, c_ss))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 2: define a grid for $k$ (and $k^{\\prime}$)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "g_size = 1000\n", + "kmin = 0\n", + "kmax = k_ss*2\n", + "step = kmax/g_size\n", + "\n", + "k_grid = np.arange(kmin+step, kmax+step, step)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 3: define initial value function over grid" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# V0 is dictionary. V0(k)=k\n", + "V0 = {}\n", + "for k in k_grid:\n", + " V0[k] = math.log(k+1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 4: construct maximizer function" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# given a value of k and a (proposed) value function V, find k' that maximizes V over grid of k. \n", + "\n", + "def maximizer(k, V0, u, f, k_grid):\n", + " \n", + " i = 0\n", + " for K in k_grid:\n", + " \n", + " c = f(k)+(1-delta)*k-K\n", + " if c>0:\n", + " i += 1\n", + " v = u(c)+beta*V0[K]\n", + " if i == 1:\n", + " vmax = v\n", + " cmax = c\n", + " kmax = K\n", + " elif v>vmax:\n", + " vmax = v\n", + " cmax = c\n", + " kmax = K\n", + " \n", + " return (vmax, cmax, kmax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 5: iteration over value function" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def bellman(V0, u, f, k_grid, eps=1e-3):\n", + " \n", + " T = {}\n", + " T[0] = (1, 1)\n", + " t0 = time.time()\n", + " d = 1\n", + " i = 0\n", + " \n", + " while d>eps:\n", + " \n", + " V = {}\n", + " C = {}\n", + " K = {}\n", + " \n", + " i += 1\n", + " \n", + " for k in k_grid:\n", + " v = maximizer(k, V0, u, f, k_grid)\n", + " V[k] = v[0]\n", + " C[k] = v[1]\n", + " K[k] = v[2]\n", + " \n", + " d = abs(dist(V, V0))\n", + " V0 = V\n", + " T[i] = (d, time.time()-t0)\n", + " print('i: {0}, d = {1:.5f} ({2:.2%})'.format(i,d,(d/T[i-1][0])-1))\n", + " \n", + " print('i: {0}, d = {1:.5f})'.format(i,d))\n", + " return (V, C, K, T)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Shazam!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ { - "metadata": { - "scrolled": true, - "trusted": true - }, - "cell_type": "code", - "source": "S = bellman(V0, u, f, k_grid)", - "execution_count": 13, - "outputs": [ - { - "output_type": "stream", - "text": "i: 1, d = 11.47116 (1047.12%)\ni: 2, d = 8.71175 (-24.06%)\ni: 3, d = 6.23321 (-28.45%)\ni: 4, d = 4.50341 (-27.75%)\ni: 5, d = 3.30647 (-26.58%)\ni: 6, d = 2.46702 (-25.39%)\ni: 7, d = 1.86775 (-24.29%)\ni: 8, d = 1.43191 (-23.33%)\ni: 9, d = 1.10911 (-22.54%)\ni: 10, d = 0.86617 (-21.90%)\ni: 11, d = 0.68077 (-21.40%)\ni: 12, d = 0.53760 (-21.03%)\ni: 13, d = 0.42600 (-20.76%)\ni: 14, d = 0.33841 (-20.56%)\ni: 15, d = 0.26932 (-20.42%)\ni: 16, d = 0.21461 (-20.31%)\ni: 17, d = 0.17118 (-20.24%)\ni: 18, d = 0.13663 (-20.18%)\ni: 19, d = 0.10912 (-20.14%)\ni: 20, d = 0.08718 (-20.11%)\ni: 21, d = 0.06967 (-20.08%)\ni: 22, d = 0.05569 (-20.07%)\ni: 23, d = 0.04452 (-20.05%)\ni: 24, d = 0.03560 (-20.04%)\ni: 25, d = 0.02847 (-20.03%)\ni: 26, d = 0.02277 (-20.03%)\ni: 27, d = 0.01821 (-20.02%)\ni: 28, d = 0.01456 (-20.02%)\ni: 29, d = 0.01165 (-20.01%)\ni: 30, d = 0.00932 (-20.01%)\ni: 31, d = 0.00745 (-20.01%)\ni: 32, d = 0.00596 (-20.01%)\ni: 33, d = 0.00477 (-20.00%)\ni: 34, d = 0.00382 (-20.00%)\ni: 35, d = 0.00305 (-20.00%)\ni: 36, d = 0.00244 (-20.00%)\ni: 37, d = 0.00195 (-20.00%)\ni: 38, d = 0.00156 (-20.00%)\ni: 39, d = 0.00125 (-20.00%)\ni: 40, d = 0.00100 (-20.00%)\ni: 41, d = 0.00080 (-20.00%)\ni: 41, d = 0.00080)\n", - "name": "stdout" - } - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "i: 1, d = 11.47116 (1047.12%)\n", + "i: 2, d = 8.71175 (-24.06%)\n", + "i: 3, d = 6.23321 (-28.45%)\n", + "i: 4, d = 4.50341 (-27.75%)\n", + "i: 5, d = 3.30647 (-26.58%)\n", + "i: 6, d = 2.46702 (-25.39%)\n", + "i: 7, d = 1.86775 (-24.29%)\n", + "i: 8, d = 1.43191 (-23.33%)\n", + "i: 9, d = 1.10911 (-22.54%)\n", + "i: 10, d = 0.86617 (-21.90%)\n", + "i: 11, d = 0.68077 (-21.40%)\n", + "i: 12, d = 0.53760 (-21.03%)\n", + "i: 13, d = 0.42600 (-20.76%)\n", + "i: 14, d = 0.33841 (-20.56%)\n", + "i: 15, d = 0.26932 (-20.42%)\n", + "i: 16, d = 0.21461 (-20.31%)\n", + "i: 17, d = 0.17118 (-20.24%)\n", + "i: 18, d = 0.13663 (-20.18%)\n", + "i: 19, d = 0.10912 (-20.14%)\n", + "i: 20, d = 0.08718 (-20.11%)\n", + "i: 21, d = 0.06967 (-20.08%)\n", + "i: 22, d = 0.05569 (-20.07%)\n", + "i: 23, d = 0.04452 (-20.05%)\n", + "i: 24, d = 0.03560 (-20.04%)\n", + "i: 25, d = 0.02847 (-20.03%)\n", + "i: 26, d = 0.02277 (-20.03%)\n", + "i: 27, d = 0.01821 (-20.02%)\n", + "i: 28, d = 0.01456 (-20.02%)\n", + "i: 29, d = 0.01165 (-20.01%)\n", + "i: 30, d = 0.00932 (-20.01%)\n", + "i: 31, d = 0.00745 (-20.01%)\n", + "i: 32, d = 0.00596 (-20.01%)\n", + "i: 33, d = 0.00477 (-20.00%)\n", + "i: 34, d = 0.00382 (-20.00%)\n", + "i: 35, d = 0.00305 (-20.00%)\n", + "i: 36, d = 0.00244 (-20.00%)\n", + "i: 37, d = 0.00195 (-20.00%)\n", + "i: 38, d = 0.00156 (-20.00%)\n", + "i: 39, d = 0.00125 (-20.00%)\n", + "i: 40, d = 0.00100 (-20.00%)\n", + "i: 41, d = 0.00080 (-20.00%)\n", + "i: 41, d = 0.00080)\n" + ] + } + ], + "source": [ + "S = bellman(V0, u, f, k_grid)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "S[3]", - "execution_count": 16, - "outputs": [ - { - "output_type": "execute_result", - "execution_count": 16, - "data": { - "text/plain": "{0: (1, 1),\n 1: (11.471163339929898, 11.620864152908325),\n 2: (8.711751727405229, 24.175007581710815),\n 3: (6.233207992621637, 37.45667099952698),\n 4: (4.503406692265431, 50.7048454284668),\n 5: (3.306469822288683, 63.64902210235596),\n 6: (2.467018540510849, 76.81420135498047),\n 7: (1.8677475739998395, 89.01143765449524),\n 8: (1.4319148954993604, 100.75852632522583),\n 9: (1.1091069779636689, 113.11196255683899),\n 10: (0.86616526516008, 125.26574158668518),\n 11: (0.6807749115680007, 137.06682467460632),\n 12: (0.5375994977798054, 148.5941891670227),\n 13: (0.4260043505473527, 160.18138718605042),\n 14: (0.33841249069847884, 172.33310961723328),\n 15: (0.26931662426805536, 184.27857446670532),\n 16: (0.21460923643192942, 196.00503754615784),\n 17: (0.17117894724320826, 207.51750993728638),\n 18: (0.1366336975348204, 219.02280259132385),\n 19: (0.10911729721855218, 231.41397738456726),\n 20: (0.08717613476214513, 243.08990097045898),\n 21: (0.06966772355821278, 254.6827666759491),\n 22: (0.05568814245179515, 266.64171719551086),\n 23: (0.04452161208020133, 278.3515884876251),\n 24: (0.035598941252427484, 290.5835506916046),\n 25: (0.028467578026808594, 302.8230154514313),\n 26: (0.022766594712928367, 314.76684737205505),\n 27: (0.01820850416251944, 327.0457673072815),\n 28: (0.0145636707576875, 339.1297814846039),\n 29: (0.011649095366938398, 351.3482563495636),\n 30: (0.009317977551900567, 363.70199179649353),\n 31: (0.007453545960504198, 375.41989493370056),\n 32: (0.005962193499606321, 388.3381025791168),\n 33: (0.0047694662863360495, 400.3460953235626),\n 34: (0.0038154180630221098, 412.2888388633728),\n 35: (0.003052163370817199, 424.21188163757324),\n 36: (0.002441615428970485, 435.95243740081787),\n 37: (0.0019532613639854386, 448.54394912719727),\n 38: (0.0015626052734961952, 460.12600922584534),\n 39: (0.0012500874972857857, 472.09953689575195),\n 40: (0.0010000568097899912, 483.8269262313843),\n 41: (0.0008000134337702209, 495.6525139808655)}" - }, - "metadata": {} - } + "data": { + "text/plain": [ + "{0: (1, 1),\n", + " 1: (11.471163339929898, 11.620864152908325),\n", + " 2: (8.711751727405229, 24.175007581710815),\n", + " 3: (6.233207992621637, 37.45667099952698),\n", + " 4: (4.503406692265431, 50.7048454284668),\n", + " 5: (3.306469822288683, 63.64902210235596),\n", + " 6: (2.467018540510849, 76.81420135498047),\n", + " 7: (1.8677475739998395, 89.01143765449524),\n", + " 8: (1.4319148954993604, 100.75852632522583),\n", + " 9: (1.1091069779636689, 113.11196255683899),\n", + " 10: (0.86616526516008, 125.26574158668518),\n", + " 11: (0.6807749115680007, 137.06682467460632),\n", + " 12: (0.5375994977798054, 148.5941891670227),\n", + " 13: (0.4260043505473527, 160.18138718605042),\n", + " 14: (0.33841249069847884, 172.33310961723328),\n", + " 15: (0.26931662426805536, 184.27857446670532),\n", + " 16: (0.21460923643192942, 196.00503754615784),\n", + " 17: (0.17117894724320826, 207.51750993728638),\n", + " 18: (0.1366336975348204, 219.02280259132385),\n", + " 19: (0.10911729721855218, 231.41397738456726),\n", + " 20: (0.08717613476214513, 243.08990097045898),\n", + " 21: (0.06966772355821278, 254.6827666759491),\n", + " 22: (0.05568814245179515, 266.64171719551086),\n", + " 23: (0.04452161208020133, 278.3515884876251),\n", + " 24: (0.035598941252427484, 290.5835506916046),\n", + " 25: (0.028467578026808594, 302.8230154514313),\n", + " 26: (0.022766594712928367, 314.76684737205505),\n", + " 27: (0.01820850416251944, 327.0457673072815),\n", + " 28: (0.0145636707576875, 339.1297814846039),\n", + " 29: (0.011649095366938398, 351.3482563495636),\n", + " 30: (0.009317977551900567, 363.70199179649353),\n", + " 31: (0.007453545960504198, 375.41989493370056),\n", + " 32: (0.005962193499606321, 388.3381025791168),\n", + " 33: (0.0047694662863360495, 400.3460953235626),\n", + " 34: (0.0038154180630221098, 412.2888388633728),\n", + " 35: (0.003052163370817199, 424.21188163757324),\n", + " 36: (0.002441615428970485, 435.95243740081787),\n", + " 37: (0.0019532613639854386, 448.54394912719727),\n", + " 38: (0.0015626052734961952, 460.12600922584534),\n", + " 39: (0.0012500874972857857, 472.09953689575195),\n", + " 40: (0.0010000568097899912, 483.8269262313843),\n", + " 41: (0.0008000134337702209, 495.6525139808655)}" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Exploring the results" - }, + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "S[3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exploring the results" + ] + }, + { + "cell_type": "code", + "execution_count": 240, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "V = S[0]\nX = []\nY = []\nZ = []\n\nfor k in k_grid:\n if k < 1.5*k_ss:\n X.append(k)\n Y.append(V[k])\n Z.append(V0[k])\n \nplt.plot(X, Y, color=\"green\", linewidth=2, label=\"Optimum\")\nplt.plot(X, Z, \"--\", color=\"gray\", linewidth=1, label=\"Initial guess\")\nplt.xlabel(\"$k$\", fontsize=14)\nplt.ylabel(\"$V$\", fontsize=14)\nplt.title(\"Value Function\")\nplt.legend(loc='lower right')\nplt.show()", - "execution_count": 240, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": "" - }, - "metadata": {}, - "output_type": "display_data" - } + "data": { + "image/png": "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\n", + "text/plain": [ + "" ] - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "V = S[0]\n", + "X = []\n", + "Y = []\n", + "Z = []\n", + "\n", + "for k in k_grid:\n", + " if k < 1.5*k_ss:\n", + " X.append(k)\n", + " Y.append(V[k])\n", + " Z.append(V0[k])\n", + " \n", + "plt.plot(X, Y, color=\"green\", linewidth=2, label=\"Optimum\")\n", + "plt.plot(X, Z, \"--\", color=\"gray\", linewidth=1, label=\"Initial guess\")\n", + "plt.xlabel(\"$k$\", fontsize=14)\n", + "plt.ylabel(\"$V$\", fontsize=14)\n", + "plt.title(\"Value Function\")\n", + "plt.legend(loc='lower right')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 229, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "C = S[1]\nX = []\nY = []\nZ = []\nfor k in k_grid:\n if k < 1.5*k_ss:\n X.append(k)\n Y.append(C[k])\n Z.append(f(k)-delta*k)\n\nplt.plot(X, Y, color=\"blue\", linewidth=2, label=\"capital stock: $k$\")\nplt.plot(X, Z, \"--\", color=\"gray\", linewidth=1, label=\"net product: $f(k)-\\delta k$\")\nplt.plot([k_ss], [c_ss], marker='o', color='r')\nplt.xlabel(\"$k$\", fontsize=14)\nplt.ylabel(\"$c$\", fontsize=14)\nplt.title(\"Policy Function: $c$\")\nplt.legend(loc='lower right')\nplt.show()", - "execution_count": 229, - "outputs": [ - { - "data": { - "image/png": "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\nJfr163fiGWPefq4FbdiwgQEDBtC4cWMWLlxIgwYNTvR17NiRfv368cUXX5zy/S1evJjOnTvr9k1F\ns9ZW2S8gFrCJiYm2OElJSXbKlCl23759xR5zMp99Zm3duta6WSTW9upl7e7dpTqVSKWQmJhoT/X/\nXbAbN26crVatmk1KSir2mIyMjEJtS5YsscYY+9Zbb51omzJlijXG2BEjRngcO2nSJBsSEmKXL19u\nrbV2xowZNiQkxG7ZsuXEMc8880yhtpJev6jzFqV+/fr2tttuK7b/ZLVcfvnltmbNmnbz5s0n2nbt\n2mXDw8Ntv379TrR587lOmTLFhoSE2H379tnVq1fb5s2b2169etmDBw8WOjYkJMQOGDDgpO8r1y23\n3GInTZpkrbX2hx9+sA8++KBt2rTpic+/svHm/9PcY4BYW06/l3X75iSstfz444+0a9eOhg0blvj1\ny5a5OSTp6e777t3hiy+gnPZdE6kSevSAFi0q9qs8l+Jba5k9ezaXXXYZZ511VrHH1ahR48TfMzMz\n2b9/PzExMdSvX5+kpCSPY40xTJo0yaPttttuw1rLxx9/XKo6S3J9b9SvX58lS5awK/cetZeys7NZ\nuHAhI0aMoFWrVifamzZtypgxY/j2229JT0/3+nPNtXz5cvr160dMTAwLFy4kIiKi0DFZWVl8/vnn\nXtW5ePFi+vbty6JFi9i3bx/XXnst1lqys7O9f7NySrp9cxK7du1i9+7d9O/fv8Sv3bsXRo6E3Fu+\n7dq5eSXl+Pw+kSph927YscPfVXgvOTmZtLQ0OnfufNLjMjIyePzxx5kxYwY7duw4MRHUGENqamqh\n49u2bevx/emnn05ISAibN28uVZ0lvf6pPP3001x33XVER0cTFxfH0KFDGTduHG3atDnp65KTkzl8\n+DDt27cv1NexY0eys7PZtm0bjRo18upzBRcMhw0bRtOmTZk/f36pb73nSktLY+XKlWzYsIHIyEiG\n5my5vXv37jKdVwpTKDmJZcuWUbdu3UI/DE5lwwbo29f9MAWIjXXPt8n3DxMR8VLTppXjGgXdeuut\nvP7660yePJlevXoRERGBMYbRo0d79a/vsu7FUdbrF3TVVVdx/vnn88EHH7BgwQKeeeYZnnrqKT74\n4AMGDx5cplpLyhjDyJEjef3113nrrbe48cYby3S+77//noYNG7JmzRrWrl1Lq1ataNeuXTlVK/kp\n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\njB49ejBnzhxmzZrF7bffXqz763333UfdunUZOHAg8+fPJzk5mW7dupV4ae65556jadOm3HrrrTz5\n5JMsXryYpKQkrr/++sJRVsuqlw4dOpR6WawkmZmZHDp0iE6dOvmtv+aaa9i3b1+xyzh5eXmsX7+e\nm2++uXBdwX01OTk5xS6HHThwgJYtWwYcT6BuueUW9u3bx+nTpwFYvHgx99xzD3FxcUHHGBEqqhtP\nVXzg6xLctGmKgVnjxma5uaX2fhKRClBTugR7PB47ePCg3/olS5YU68KanZ1tjz32mF1xxRV28cUX\nW8uWLa1Xr172+uuv+207a9Ysu/zyywu72ZbVPbjg+BkZGTZ06FCLjY21xo0b2+OPP26nTp0KKFYz\ns40bN1rfvn0tJibG6tWrZ3feeaetW7euxGN+/fXX1rVrV4uKirK2bdvaokWLSuzqm5KSYh07drSo\nqCjr0KGD/fnPfy6xnJm3i+vo0aOtWbNmFh0dbW3btrVJkybZ6dOnz1svwXYJXr58uXXs2LHE1+69\n995iXZOzsrKsffv2hbHk5OTYgAEDbPr06bZly5Zi+3j66adt3rx5AccTjJSUFHvooYdsypQpNn78\n+ML/42BjLCpcXYKdWWiHL44kzrkuQNpFF6WSm3sL48fDq6+GOyqR6i09PZ34+HjS0tLo0qVLuMOp\nlpKSkpg5cybZ2dk0atQo3OFEtBkzZtC3b18++ugj8vLyeO6554qVWbFiBStXrmRW0TlIgtSrVy9+\n//vfF46yGukC+TstKAPEm1n5+68Xocs3QG7uxYB3WHkREakZDhw4QHJyMocOHSI1NZVx48aVWK5P\nnz588803xaYICNSePXswsyqTkISTkhIAHB4PFLnsJiIi1VxcXBxjx44lNTWVESNGlDgvT4EZM2aQ\nlJRUruO89NJLPP300+UNs0ZRl2CfG26AqjAtgIiIVJwFCxYEVO7GG29k165dfPnll9x2220B73/T\npk3k5ubSs2fP8oZYo6ilxMc3KaaISJU3Y8YM8vLydD9JBRsyZEhQCQl4Z+194YUXKimi6kctJT5K\nSkREpKJNnTo13CFUKWop8bnxxnBHICIiUrMpKQGioqDIgHgiIiISBkpKgDZtIAKnABAREalR9FWM\nNykRERGR8FJSAlx5ZbgjEBERESUlwIgR4Y5ARERE1CUYuOiicEcgUvNs3bo13CGISCnC9feppERE\nQiouLo66desycuTIcIciImWoW7cucXFxIT2mkhIRCalWrVqxdetWDhw4EO5QRKQMcXFxtGrVKqTH\nVFIiIiHXqlWrkJ/sRCTyRfSNrs65ic65nc65HOfcWudc1/OUH+qc2+orv8k51zdUsUrgli5dGu4Q\nahzVeeipzkNPdV71RWxS4py7F/gdMAPoDGwCVjjnSrzA5Zy7BfgzsBi4AfgAWO6c+1loIpZA6cQR\neqrz0FOdh57qvOqL2KQEmAwsNLM/mlkG8AvgBDCmlPKTgE/MbK6ZbTOz/wekA4+GJlwRERG5EBGZ\nlDjn6gDxwOcF68zMgBTg5lI2u9n3elEryigvIiIiESQikxIgDqgF7Dtn/T6geSnbNA+yvIiIiESQ\nmt77Jgo0iFOoHTlyhPT09HCHUaOozkNPdR56qvPQKvLdGVVR+4zUpOQAkAc0O2d9M+CHUrb5Icjy\nAK0BDeIUBvHx8eEOocZRnYee6jz0VOdh0RpYXRE7isikxMxOO+fSgDuADwGcc863PL+UzdaU8Hov\n3/rSrABGALuAkxcWtYiISI0ShTchWVFRO3Te+0cjj3NuGLAEb6+b9Xh74wwBrjGzbOfcH4HdZjbN\nV/5m4F/AVOAjYDgwBehiZv8N+RsQERGRoERkSwmAmS3zjUkyE+9lmI1AHzPL9hW5DDhTpPwa59z9\nwCzfYwdwtxISERGRqiFiW0pERESkZonULsEiIiJSwygpERERkYhQ7ZMSTeoXesHUuXPuQedcvnMu\nz/dvvnPuRCjjrcqccwnOuQ+dc3t8dTcggG0SnXNpzrmTzrntzrkHQxFrdRFsnTvnehb5bOcX+bw3\nDVXMVZ1zbqpzbr1z7qhzbp9z7n3nXLsAttP5vJzKU+cVcT6v1kmJJvULvWDr3OcI3pF3Cx5XVHac\n1cgleG8CnwCc9wYx51xr4B94p3DoBMwDXnPO9aq8EKudoOrcx4CrOfsZb2Fm+ysnvGopAXgJuAm4\nE6gDfOqciy5tA53PL1jQde5zQefzan2jq3NuLbDOzB73LTsgE5hvZnNKKP8OUNfMBhRZtwbYYGYT\nQhR2lVaOOn8QeNHMGoU20urHOZcPDDSzD8so8zzQ18w6Flm3FIg1s34hCLNaCbDOewJfAA3N7GjI\ngqvGfD9y9gO3mtmqUsrofF6BAqzzCz6fV9uWEk3qF3rlrHOAes65Xc65751z+iVTubqhz3g4OGCj\nc26vc+5T3694Kb8GeFufDpVRRufzihVIncMFns+rbVKCJvULh/LU+TZgDDAA7+i6HmC1c65lZQVZ\nw5X2GY9xzl0chnhqgizgEeAeYDDelsN/OeduCGtUVZSv9fX/gFXnGYdK5/MKEkSdX/D5PGIHT5Oa\nwczWAmsLln3Nq1vxnsRnhCsukYpiZtuB7UVWrXXOXYV3lGrdZBy8V4GfAd3DHUgNElCdV8T5vDq3\nlIRqUj85qzx17sfMzgAbgLYVG5r4lPYZP2pmp8IQT021Hn3Gg+acexnoBySaWdZ5iut8XgGCrHM/\n5TmfV9ukxMxOAwWT+gF+k/qVNpvhmqLlfc43qZ/4lLPO/TjnPMD1eJu8peKV9BnvjT7joXYD+owH\nxffleDdwm5l9H8AmOp9foHLU+bnbB30+r+6Xb+YCS5x3xuGCSf3q4p3oD3fOpH54u0f+yzn3JGcn\n9YsHxoU47qosqDp3zj2Nt7nvW7w3Uj0FtAJeC3nkVZBz7hK8v0Kcb9WVzrlOwCEzy3TOJQMtzazg\nMsHvgYm+Xjhv4D1pD8H7S0gCEGydO+ceB3YCW/DOqjoOuA3vF6QEwDn3Kt7z8QDgJ+dcQQvIETM7\n6SvzJrBH5/OKUZ46r5DzuZlV6wfesQR2ATl4M+Qbi7z2BfDGOeXvATJ85b/BOwlg2N9HVXoEU+d4\nk5idvrJ7gb8DHcP9HqrKA+gJ5OO9bFb08Ybv9T8AX5yzza14W7Ry8E5cOSrc76MqPYKtc+DXvnr+\nCcjG2zvt1nC/j6r0KKW+84AHipTR+TzMdV4R5/NqPU6JiIiIVB3V9p4SERERqVqUlIiIiEhEUFIi\nIiIiEUFJiYiIiEQEJSUiIiISEZSUiIiISERQUiIiIiIRQUmJiIiIRITqPsy8iFQxzrmGwI1AE+AH\nM/sizCGJSIiopUREIs1VeOfbeBtICHMsIhJCGmZeRCKOc64lsBvobWYp4Y5HREJDLSUiEokS8E4I\nti7cgYhI6CgpEZFI1AP4r5kdC3cgIhI6SkpEJBLdCqwOdxAiElrqfSMiEcU51wC4DvidbzkOmAoY\nsN/M5oQxPBGpRGopEZFI08P37xpfgjIeb1LSDhgRtqhEpNIpKRGRSJMAHAR+AB4FnjOzXOAiYEE4\nAxORyqUuwSISUZxzq4F6wMfAM2Z2MswhiUiIqKVERCKGcy4KiAe+A1oDbznn2oc1KBEJGSUlIhJJ\nbsF7A/7TZnYfsBf4R8GLzrmYcAUmIpVPSYmIRJIewCEz2+xb/hbvpRycc22Bh8IVmIhUPiUlIhJJ\nEoCviiyfAnb6ng8H3gl5RCISMkpKRCSS1Mc/8XgHOOycmw/sMrO94QlLREJBvW9EREQkIqilRERE\nRCKCkhIRERGJCEpKREREJCIoKREREZGIoKREREREIoKSEhEREYkISkpEREQkIigpERERkYigpERE\nREQigpISERERiQhKSkRERCQiKCkRERGRiKCkRERERCLC/wencU6y3SaINAAAAABJRU5ErkJggg==\n", - "text/plain": "" - }, - "metadata": {}, - "output_type": "display_data" - } + "data": { + "image/png": "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\nJfr163fiGWPefq4FbdiwgQEDBtC4cWMWLlxIgwYNTvR17NiRfv368cUXX5zy/S1evJjOnTvr9k1F\ns9ZW2S8gFrCJiYm2OElJSXbKlCl23759xR5zMp99Zm3duta6WSTW9upl7e7dpTqVSKWQmJhoT/X/\nXbAbN26crVatmk1KSir2mIyMjEJtS5YsscYY+9Zbb51omzJlijXG2BEjRngcO2nSJBsSEmKXL19u\nrbV2xowZNiQkxG7ZsuXEMc8880yhtpJev6jzFqV+/fr2tttuK7b/ZLVcfvnltmbNmnbz5s0n2nbt\n2mXDw8Ntv379TrR587lOmTLFhoSE2H379tnVq1fb5s2b2169etmDBw8WOjYkJMQOGDDgpO8r1y23\n3GInTZpkrbX2hx9+sA8++KBt2rTpic+/svHm/9PcY4BYW06/l3X75iSstfz444+0a9eOhg0blvj1\ny5a5OSTp6e777t3hiy+gnPZdE6kSevSAFi0q9qs8l+Jba5k9ezaXXXYZZ511VrHH1ahR48TfMzMz\n2b9/PzExMdSvX5+kpCSPY40xTJo0yaPttttuw1rLxx9/XKo6S3J9b9SvX58lS5awK/cetZeys7NZ\nuHAhI0aMoFWrVifamzZtypgxY/j2229JT0/3+nPNtXz5cvr160dMTAwLFy4kIiKi0DFZWVl8/vnn\nXtW5ePFi+vbty6JFi9i3bx/XXnst1lqys7O9f7NySrp9cxK7du1i9+7d9O/fv8Sv3bsXRo6E3Fu+\n7dq5eSXl+Pw+kSph927YscPfVXgvOTmZtLQ0OnfufNLjMjIyePzxx5kxYwY7duw4MRHUGENqamqh\n49u2bevx/emnn05ISAibN28uVZ0lvf6pPP3001x33XVER0cTFxfH0KFDGTduHG3atDnp65KTkzl8\n+DDt27cv1NexY0eys7PZtm0bjRo18upzBRcMhw0bRtOmTZk/f36pb73nSktLY+XKlWzYsIHIyEiG\n5my5vXv37jKdVwpTKDmJZcuWUbdu3UI/DE5lwwbo29f9MAWIjXXPt8n3DxMR8VLTppXjGgXdeuut\nvP7660yePJlevXoRERGBMYbRo0d79a/vsu7FUdbrF3TVVVdx/vnn88EHH7BgwQKeeeYZnnrqKT74\n4AMGDx5cplpLyhjDyJEjef3113nrrbe48cYby3S+77//noYNG7JmzRrWrl1Lq1ataNeuXTlVK/kp\nlBQjMzOTFStWcNZZZxES4v1drvR097Tf3EASHu52b1UgESmdn3/2dwUl07hxY8LDw1mxYsVJj3v/\n/S2VUCAAAB0MSURBVPe57rrrePrpp0+0HT16tNh9PNavX+9xe+PXX38lOzub1q1bF3uNkwWXkl7f\nG02aNOHmm2/m5ptvJiUlhbPOOovHHnuMwYMHF1tL48aNqV27NmvXri3Ut3r1akJCQoiOjqZOnTpe\nfa65/vrXvxIaGsrEiRMJDw/n6quvLvX7Wrx4MQMHDuTNN9/k6aef5rLLLmP16tVkZ2eX6PeDnJo+\nzWKsX7+eI0eO0K1bN69fk5YGvXq5vUfAzR357ju3Y6uIVA3GGC6//HLmzp170rkZoaGhhUYkXnjh\nBbJyt3rOx1rLtGnTCh1rjGHIkCHFXqNOnToARQaNklz/VLKzswvt1BoZGUlUVNSJZcvF1RISEsKg\nQYOYPXu2xxLhPXv2kJCQwHnnnUfdunW9/lxzGWN4+eWXGTlyJOPGjeOjjz4qdIy3S4IXL15Mr169\nAOjcuTP79u0DYNq0aRw5cuSUrxfvaaSkGL/88gtRUVGc5uVWq9bC7be7DdIAwsLcdvJe3P4UkUrm\n8ccf5//bu/foqKrz/+PvPYAmCAmXcFURFEGqghBZohCJF6CwEAEBRUBZIFpAUWxrgYU/DEsMYotf\n8EIBtVhtsVQr2qpFo1Yk3FYTwEIJoAtqgAgB5CaBQPL8/phJyJALMyGZmSSf11qzmHNmn3Oe2UzO\nPLPP2Xt/9tln3HrrrTz88MN06NCBvXv38u6775KamkpMTAz9+/fnrbfeIiYmhp/97GesWbOGzz//\nnLi4uBL3uXPnTu6++25+/vOfs3r1av70pz8xcuRIrr/++lLjiI+Px8yYNm0a9913H3Xq1GHAgAFE\nR0cHffyyHDt2jMsuu4whQ4bQqVMn6tWrx2effca///1v5s6de95Ynn32WVJSUujevTsTJkygVq1a\nLFq0iNzcXL+WnEDqtSjnHG+//TYDBw5k6NChfPzxx373CAbSJTgvL4/169eTnJxcuK7gkn5OTg7R\nulGwYlVUN56q+KCMLsEZGRm2Y8eOUjpCFffww2e7/UZHm61cGfCmIjVKTegSbGaWmZlpo0ePtmbN\nmll0dLS1bdvWJk2aZKdPnzYzsyNHjtjYsWOtadOmFhMTY/369bPt27dbmzZtbMyYMYX7KejimpGR\nYUOHDrXY2Fhr3LixPf7443bq1KnCcqV13Z01a5ZdfvnlVrt2bb/XDx8+HNDxA+kSnJuba7/5zW+s\nc+fOFhsba/Xr17fOnTvbwoULA4rFzGzjxo3Wt29fi4mJsXr16tmdd95p69atC7pei3YJLpCTk2O3\n3XabxcTE2Pr16wvXB9IlOCsry9q3b1+4/5ycHBswYIBNnz7dtmzZUua2VVm4ugQ7s6o99O+FcM51\nAdLS0tLo0qVLufezfDkMGnR2eeFCuMD7qkSqrfT0dOLj47nQv7uaIikpiZkzZ5KdnV2uoQlEyiOQ\nv9OCMkC8mQXfj7wEuqfkAn39tXe01gLPP6+EREREpDyUlFyA48dh+HD46Sfvct++8OtfhzcmERGR\nqkpJSTnl58Pjj58d1KlLF/jTnzTBnoiISHkpKSmnF16AN97wPr/4Yli2DIrM8yQiUiFmzJhBXl6e\n7ieRGkFJSTl88glMn352+cUX4aqrwhePiIhIdaCkJEiHDsHYsXDmjHd54kQYPz68MYmIiFQHEZ2U\nOOcmOud2OudynHNrnXNdyyj7kHNupXPukO/xWVnlS7Jp0yZWrFhR6utm3q6/BZNgJibC734XzBFE\nRESkNBGblDjn7gV+B8wAOgObgBXOudKGG+wJ/BlIBLoBmcCnzrkWgR5z8+bN7N+/v9TXlyyBlSu9\nzxs2hMWLNaeNiIhIRYnYpASYDCw0sz+aWQbwC+AEMKakwmY2ysx+b2bfmNl24CG87++OQA6Wn5/P\n999/X+o02zt3wi9+cXb59dc1p42IiEhFisikxDlXB4gHPi9YZ96hZ1OAmwPczSVAHeBQIIX3799P\nbm4urVq1KvZafj788peQm+tdHjUKBg4MMAoREREJSEQmJUAcUAvYd876fUDzAPfxPLAHbyJzXpmZ\nmXg8Hlq0KH61Z9kyeP997/OYGJg3T+ORiIiIVLRqOUuwc24KMAzoaWa5gWyTmZlJixYtqFOnjt/6\nkyfh2WfPLr/2msYjERERqQyRmpQcAPKAZuesbwb8UNaGzrlfAU8Bd5jZlkAONnnyZA4ePEi9evX4\n8MMPARg+fDjDhw/nl7+ELb69dO0KQ4YE9T5ERESqvKVLl7J06VK/dUeOHKnw40RkUmJmp51zaXhv\nUv0QwDnnfMvzS9vOOfcUMBXobWYbAj3ec889R0pKCkOGDOHaa68tXP/uu/Dqq97nUVHeVhJdthER\nkZqm4Id6UUVmCa4wEZmU+MwFlviSk/V4e+PUBZYAOOf+COw2s2m+5d8AScBw4HvnXEEry3Ez++l8\nB0tMTOTyyy8vXDbzH7X1pZegY8cLf1MiIiJSski90RUzWwb8CpgJbAA6An3MLNtX5DL8b3r9Bd7e\nNu8Ce4s8fnm+Y0VHR9OzZ09iYmIK133+OWzb5n2ekOAdxVVERAL3zDPP4PFE7NdM0L7++mtSU1PD\nHUa1FtGfFjN71cxam1m0md1sZv8u8trtZjamyHIbM6tVwmNmsMc9cwaefPLs8vjxumwjIuGzZs0a\nkpKSOHr0aLhDCYpzDleJJ89Q1su3337LP/7xD7p37+63/le/+hW9evVi0qRJJW43ZcoUfvrpvI31\nlep8MUaSiE5KwmXxYvjPf7zPb7wR7r03vPGISM22evVqZs6cyeHDh8MdSkSprHqZPXs2kyZNon//\n/oUJz7Rp05he9Jq+z/PPP09+fr5fS3tRjz76KJMnT67Q+Eqzfft2Hn30UTp27Ei3bt345z//GVCM\nkURJyTlOnoRZs84uv/QSVKPWRxGpgrxjR4bOiRMnQnq88qqMeklJSeHNN99k8ODBpKWlcfz4cdas\nWUPTpk2pX79+sfK1atVi27Zt9OjRo8T9XXbZZbRr147ly5dXeKznWrZsGS+//DIbN25kzJgxXH31\n1QHFGEn0dXuO11+HPXu8z+++G7p1C288IlL1FNxL8d133zF69GgaNmxIgwYNGDNmDCdPnvQru3fv\nXsaMGUPz5s2Jioriuuuu4w9/+EPh60lJSTz11FMAtG7dGo/HQ61atfj+++/Pe/xt27YxbNgwYmNj\niYuL44knnuDUqVMllt26dSv3338/jRo1IiEhAYANGzbQt29fYmNjqV+/PnfeeSfr1q0r8ZirVq2i\na9euREdHc/XVV7No0aJiZUaPHl3iVB6l3Xuyd+9exo4dy6WXXkpUVBRXXnklEyZM4MyZM+etl23b\ntpGZmVlqHZXmvffeIyEhgcTERLKysmjZsiWvvvoqo0aNKrH8rl272LdvH7fcckup+xw3bhwvvvhi\n0LGUx8cff4zH4+Hhhx/mqquuCjjGSBHJvW9CLj8f5s49uzxjRvhiEZGqq+A+imHDhnHllVcye/Zs\n0tPTee2112jWrBnJycmAd3qLm266iVq1ajFp0iTi4uL45JNPGDt2LMeOHWPSpEkMHjyY7du38847\n7zBv3jwaN24MQJMmTQI6fps2bZg9ezZr165l/vz5HD58mCVLlhQrO3ToUNq1a0dycjJmxn//+18S\nEhJo0KABU6ZMoXbt2ixcuJDExERWrlxJ165nJ2HfvHkzffr0oWnTpsycOZPTp0/zzDPP0LRp02Jx\nlXSPSUnrs7Ky6Nq1K0ePHuWRRx6hffv27Nmzh3fffZcTJ06ct146dOhAYmIiX3zxxfn/w4pYvXo1\nTzzxhN+6VatW+SWKRaWmpnLttdeWeWkkNjaWBg0asHnzZq677rqg4glG//796devHxs2bKBZs7PD\nfAUSY8Qwsxr7ALoAlpaWZmZmH31k5u0MbNarl4lIJUhLS7Oif3fV0TPPPGPOORs3bpzf+sGDB1uT\nJk0Kl8eOHWuXXnqp/fjjj37lhg8fbg0bNrSTJ0+amdlvf/tb83g89r///S+o4w8aNMhv/cSJE83j\n8dh//vOfYmVHjhzpV3bgwIEWFRVlu3btKlyXlZVlMTExlpiYWKxs3bp1bffu3YXrMjIyrHbt2ubx\neArXjR492tq0aVNivEXLmZk98MADVrt2bUtPTy/1fZZVLx6Px26//fZStz3X22+/bffee29hvT3w\nwAN2+PBh27Fjh3Xt2rXU7caPH28TJ040M7O1a9fa9OnTrXnz5n51bGaWnJxsc+bMCTie8sjMzLQ2\nbdpYr3O+wAKNsahA/k4LygBdrIK+l3X5BsjO9vYyfvnls+smTgxTMCJSzLFjx8jKyir1UfA3XJbs\n7OwStz127FilxOyc45FHHvFbl5CQwMGDBzl+/DgAf/vb37jrrrvIy8vj4MGDhY/evXtz5MgR0tPT\nL+j4E885kT322GOYGR9//HGZsebn5/PZZ58xaNAgrrjiisL1zZs35/7772fVqlWF7yE/P59PP/2U\nQYMGcemllxaWbd++PX369ClX7GbGBx98wIABA+jcuXO59pGXl8fnn39+/oI+I0aMYOrUqdSpU4dl\ny5bx5ptvEhsby549e4q1+BSVmppKjx49+PLLLzl48CCjRo3CzMjPz/cr16lTJzZu3Fiu9xKIuXPn\nMn/+fObNm0dKSgqffvpp0DFGAl2+AdLS0rjkkj588ol3uVUr6N8/vDGJyFlpaWl89dVXpb7epEkT\nJkyYUOY+/vrXv5aYvPTs2ZPExMQLDbFE58463tA3cdaPP/5ITk4Ohw8fZtGiRSxcuLDYts459u/f\nf0HHb9u2rd/yVVddhcfjYdeuXcXKFr3XIzs7mxMnTtCuXbti5Tp06EB+fj6ZmZl06NCB7OxscnJy\nih0LvInJJwUn1iBkZ2dz9OhRvxG2Q2HTpk1cc8011K599qsxOzub2NjYEssfPXqULVu28N133xEX\nF0e/fv0A+OGH4rOhNGrUiO+++65S4l6wYAGpqam89957gPcem6+++orevXsHFWMkUFIC1K9fn1de\nObs8fTrUqhW+eETEX3x8PO3bty/19aJfIqUZOnQoZ86cKba+Xr16FxRbWWqVciIp+it15MiRPPjg\ngyWW61jBw0iXNWZIdHR0hR4rmOPn5eVV+rEDsWnTJm644Qa/dWW1JqxZs4ZGjRqRkZHBtm3buOKK\nKwp7vJyrYcOGpc4Vs2zZMt5///1S68fMcM5x//330/+cX8wnTpxg6tSpfoO6XXfddYU3VAcTYyRQ\nUgJER9fjo4+8zxs2hNGjwxqOiJyjfv36JXbHDEZZN4aGQ5MmTahfvz55eXncfvvtZZYt7wBkO3bs\n8Lv88u2335Kfn0/r1q3PG1vdunXZVjCsdRFbt27F4/EUTsvRpEkToqOj2bFjR7GyGRkZfssNGzYs\ncUyRc1tumjRpQkxMDJs3by4zzooemO2bb76hb9++fuvi4uJKHQclNTWVO+64g7feeos5c+YwYMAA\ntm7dSn5+frHeRHl5eVx00UUl7mfYsGEMGzasXDGvXLmS2NhYv1alEydOFCbxwcQYCSIvojDYvbsu\nBZeV77oL6tQJbzwiUv15PB7uuece3nvvPbZsKT6h+YEDBwqfX3LJJQBBDRJmZrxStAkYmD9/Ps65\nYl+8JcXWu3dvPvjgA7+ux/v27WPp0qUkJCQUtjB5PB769OnD8uXL2b17d2HZrVu3+t3XAN7LR0eO\nHPFLNrKysoqN4eGcY+DAgfz9738v876asuqlPF2CN27cWKylpEWLFhw8eLDE8qmpqXTzjRtx7bXX\nFpZ75ZVXyMnJ8Sv7448/VkpinJOT4zdv2/Hjx9mwYQODBw8OOsZIoKQESE8/22x5331hDEREapTZ\ns2fTokULbrrpJiZPnszixYt5/vnnGTZsGNdcc01hufj4eMyMadOm8fbbb/OXv/wloC+UnTt3cvfd\nd7NgwQJGjRrFggULGDFiBNdff/15t3322WepXbs23bt3Jzk5mTlz5tC9e3dyc3OZM2eOX9mkpCTM\njB49ejBnzhxmzZrF7bffXqz763333UfdunUZOHAg8+fPJzk5mW7dupV4ae65556jadOm3HrrrTz5\n5JMsXryYpKQkrr/++sJRVsuqlw4dOpR6WawkmZmZHDp0iE6dOvmtv+aaa9i3b1+xyzh5eXmsX7+e\nm2++uXBdwX01OTk5xS6HHThwgJYtWwYcT6BuueUW9u3bx+nTpwFYvHgx99xzD3FxcUHHGBEqqhtP\nVXzg6xLctGmKgVnjxma5uaX2fhKRClBTugR7PB47ePCg3/olS5YU68KanZ1tjz32mF1xxRV28cUX\nW8uWLa1Xr172+uuv+207a9Ysu/zyywu72ZbVPbjg+BkZGTZ06FCLjY21xo0b2+OPP26nTp0KKFYz\ns40bN1rfvn0tJibG6tWrZ3feeaetW7euxGN+/fXX1rVrV4uKirK2bdvaokWLSuzqm5KSYh07drSo\nqCjr0KGD/fnPfy6xnJm3i+vo0aOtWbNmFh0dbW3btrVJkybZ6dOnz1svwXYJXr58uXXs2LHE1+69\n995iXZOzsrKsffv2hbHk5OTYgAEDbPr06bZly5Zi+3j66adt3rx5AccTjJSUFHvooYdsypQpNn78\n+ML/42BjLCpcXYKdWWiHL44kzrkuQNpFF6WSm3sL48fDq6+GOyqR6i09PZ34+HjS0tLo0qVLuMOp\nlpKSkpg5cybZ2dk0atQo3OFEtBkzZtC3b18++ugj8vLyeO6554qVWbFiBStXrmRW0TlIgtSrVy9+\n//vfF46yGukC+TstKAPEm1n5+68Xocs3QG7uxYB3WHkREakZDhw4QHJyMocOHSI1NZVx48aVWK5P\nnz588803xaYICNSePXswsyqTkISTkhIAHB4PFLnsJiIi1VxcXBxjx44lNTWVESNGlDgvT4EZM2aQ\nlJRUruO89NJLPP300+UNs0ZRl2CfG26AqjAtgIiIVJwFCxYEVO7GG29k165dfPnll9x2220B73/T\npk3k5ubSs2fP8oZYo6ilxMc3KaaISJU3Y8YM8vLydD9JBRsyZEhQCQl4Z+194YUXKimi6kctJT5K\nSkREpKJNnTo13CFUKWop8bnxxnBHICIiUrMpKQGioqDIgHgiIiISBkpKgDZtIAKnABAREalR9FWM\nNykRERGR8FJSAlx5ZbgjEBERESUlwIgR4Y5ARERE1CUYuOiicEcgUvNs3bo13CGISCnC9feppERE\n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\n", + "text/plain": [ + "" ] - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "C = S[1]\n", + "X = []\n", + "Y = []\n", + "Z = []\n", + "for k in k_grid:\n", + " if k < 1.5*k_ss:\n", + " X.append(k)\n", + " Y.append(C[k])\n", + " Z.append(f(k)-delta*k)\n", + "\n", + "plt.plot(X, Y, color=\"blue\", linewidth=2, label=\"capital stock: $k$\")\n", + "plt.plot(X, Z, \"--\", color=\"gray\", linewidth=1, label=\"net product: $f(k)-\\delta k$\")\n", + "plt.plot([k_ss], [c_ss], marker='o', color='r')\n", + "plt.xlabel(\"$k$\", fontsize=14)\n", + "plt.ylabel(\"$c$\", fontsize=14)\n", + "plt.title(\"Policy Function: $c$\")\n", + "plt.legend(loc='lower right')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 220, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "K = S[2]\nX = []\nY = []\n\nfor k in k_grid:\n if k < 1.5*k_ss:\n X.append(k)\n Y.append(K[k])\n\nplt.plot(X, Y, color=\"black\", linewidth=2)\nplt.plot(X, X, \"--\", color=\"gray\", linewidth=1)\nplt.plot([k_ss], [k_ss], marker='o', color='r')\nplt.xlabel(\"$k$\", fontsize=14)\nplt.ylabel(\"$k^{\\prime}$\", fontsize=14)\nplt.title(\"Policy Function: $k^{\\prime}$\")\nplt.show()", - "execution_count": 220, - "outputs": [ - { - "data": { - "image/png": "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\nWUJ6ejoJCQl07tyZSpUqhWx/zjkWLFjALbfcwpVXXsmiRYtCtq+S0l05IiIiERTuviQ//fQTDzzw\nAO+//75/rEePHvznP/+hRo0aIdtvcSmYiIiIRIDH42HZsmVh6976zTff0L9/fxYuXBgwfsopp/D0\n009TvXr1kO27JBRMREREIuCHH35g1apVIa+SrF27lqeeeoq5c+cGXLdy5plnMmLECDp27EitWrVC\nsu/SUDARERGJgHPPPZe0tLSQhYLdu3fz1FNPMW7cODwej3+8cuXK3H///TzxxBOccsopIdl3WSiY\niIiIREgoQsn+/fsZNGgQU6ZMCRg3M/r06cMTTzzBySefHPT9BouCiYiISBz45ZdfePnll5k8eTL/\n+9///OOVKlVi8ODBPPLII1F1yqYwCiYiIiIhkp2dTeXKlUO+n7fffpu//OUvbN++3T9WuXJl7rjj\nDoYMGcLll18e8jkEi/qYiIiIBFlOTg5Llixh0qRJ7N+/PyT7cM7x8ssvc95553HnnXcGhJKUlBS+\n+uor5syZE1OhBFQxERERCarMzEzmzZvHzp07SU5OpmrVqkHdvsfjIT09nSlTpvD5558HvNamTRv6\n9+9PcnIyCQmxWXtQMBEREQmCcPQlWbt2Lb179+bjjz8OGG/UqBGjRo3i7rvvjvknDyuYiIiIlFGo\nu7euWbOGHj16sH79+oDxs88+mxdffJHWrVsHbV+RpmAiIiJSBjt27CA9PT0kVZLVq1fz4osvMnv2\n7IBeJI0aNWLixInccsstMXvKpjAKJiIiImVw+umnc+edd3LhhRcGrUqyb98+Bg4cyEsvvRQwXr9+\nfXr06MHDDz8c1b1IykLBREREpIwuueSSoGxn586dDBkyhFmzZpGdne0fr1SpEiNHjmTQoEEhfepw\nNFAwERERibDdu3fz2muv8dhjj7Fjxw7/eLVq1ejfvz/du3fnrLPOiuAMw0fBREREJEKys7OZPn06\ngwcPZt++fQGvdejQgfHjx9OwYcMIzS4y4uuKGRERkSDLzMxk1qxZHDx4MGjb9Hg8PPPMM9SuXZte\nvXoFhJL27duTlZXFO++8U+5CCahiIiIiUqCcnByWL1/u70ty6NChoFxwum7dOnr27Mknn3wSMN6m\nTRt69erFH//4x5jvRVIWCiYiIiL55O3eGqy+JJ9++impqanH9SK58cYb6d+/P3/84x/LtP14oWAi\nIiLik79KEoy+JIsXL2b48OHHVUjOP/98Zs6cybXXXlum7ccbBRMRERHg0KFDZGRkBK1K8tlnnzFh\nwgQyMjICxs866yxSU1N55JFHgv4cnXigYCIiIgJUqVKF8847j9tvv71MVZIdO3bQu3dv3nzzzYDx\nU045hf79+zNgwIC470VSFgomIiIigJnRqlWrUq+/ZcsWnn76aWbPns3evXv949WqVePpp5/mwQcf\njLv28aGgYCIiIlIGR48eZfr06QwaNCjgtt9TTjmFBx54gL/85S80aNAgchOMMQomIiIipeDxeBg/\nfjyPPvoohw4dCnjtjjvu4IUXXgjqA/3KC9WURESkXPB4PKxYsYLDhw+XaTuHDx9m1KhRJCYmMmjQ\noIBQ0rVrVzZv3sxbb72lUFJKqpiIiEjcy8rKYu7cuezcuZO6detywQUXlGo7q1evpmvXrnz11VcB\n4zfeeCMDBgzglltuCcZ0y7WorZiY2RAzW21me81sm5m9Y2bnF2O9P5vZ12Z2yMw2mtmt4ZiviIhE\nH4/Hw5IlS0hPTychIYEHHnigVKFk8eLFNG/enKuvvjoglFxzzTWsWrWKxYsXK5QESTRXTJKA54E1\neOc5FvjQzC5yzh0qaAUzuxZ4HRgELAI6AXPNrIlz7quC1hERkfiUt0qSnJxMUlJSifuSfP7550yY\nMIGZM2cGjDdr1oyMjAwuvfTSYE5ZiOJg4pxrnfd7M+sCbAeaASsLWS0NeM8596zv+5Fm1groDfQM\n0VRFRCSK5ObmsnTp0jJ1b/3pp5945JFHjutFUrt2bQYMGKBeJCEUtcGkALUBB+w6wTLNgfH5xj4A\n2odqUiIiEl3MjJ9//rlUVZItW7bQs2dPFi1aFDCuXiThExPBxLyPWXwOWFnEKZl6wLZ8Y9t84yIi\nUg6YGR07dizRE3r/+9//kp6ezpQpU47rRdK9e3d69uypXiRhEhPBBJgCXAy0iPREREQk+hU3lOTk\n5DB+/HhGjRrFkSNH/OM1atTg3nvvZfjw4brtN8yiPpiY2WSgNZDknMsqYvGfgcR8Y4m+8UL169eP\nWrVqBYx17NiRjh07lnC2IiISCw4fPswbb7zBxIkT2bBhQ8Br3bp1Y/z48dSuXTtCs4s+c+bMYc6c\nOQFje/bsCcm+zDkXkg0Hgy+UtAdSnHObi7H8G0BV51z7PGOrgI3OueMufjWzpsDatWvX0rRp0yDO\nXEREQikrK4tTTz2Vk046qUTrHTlyhAULFjBy5Ei+/vpr/7iZ0b17d3r37s3ll18e7OnGpXXr1tGs\nWTOAZs65dcHabtRWTMxsCtARaAccMLNjlZA9zrnDvmVeAbY654b6XpsILDWzh/HeLtwR7108D4R1\n8iIiEhI5OTksX76clStXct1115GcnFzsdT/66CO6d+/Oli1bAsbPP/98Zs6cybXXXhvs6UopRG0w\nAR7EexfO0nzjXYFZvn/XBzzHXnDO/dvM7gae8H1tAtqrh4mISOzL25ckJSWFFi2Kd9nhF198wfjx\n48nIyAgYb9KkCYMGDaJ9+/ZUqVIlBDOW0ojaYOKcK/J+LOfcDQWMvQW8FZJJiYhI2Hk8HpYtW1bi\nviRbt26lb9++/P3vfw8Yb9asGb169aJz585UrBi1vwbLLf0vIiIiUas03Vt//PFHevXqVWAvkmee\neYbU1FT1IoliCiYiIhK1PvroI/8zboqqkng8HqZNm8agQYOO60Vy//3306tXL/UiiQEKJiIiErXu\nvPNOqlSpcsIqybFeJH/96185dOi3R6nVqFGDzp07M3LkSBIT83eSkGilYCIiIlGrWrVqhb52+PBh\n/va3vzFx4kTWr18f8Fr37t0ZN27ccT2qJPopmIiISMxZvXo1Xbp0CehFAnD99dczePBgbr755gjN\nTMpKwURERCLG4/GQm5tb7Cf1fvTRRzz66KP861//Chi/4IILyMjI4JprrgnFNCWMdFmyiIhERFZW\nFtOmTeMf//hHkct+8cUXdO3alZtvvjkglDRt2pQ33niDDRs2KJTECVVMREQkrPL3JWncuHGhy2Zl\nZZGWlnZcL5JatWoxaNAgBgwYoF4kcUb/a4qISNjk797asmXLAu+4US+S8kvBREREQq643Vs3b95M\neno6kydPZv/+/f7xU045hW7dutG7d2/1IolzCiYiIhJyCxcu5LPPPiu0SpKTk8O4ceMYNWoU2dnZ\n/vEaNWpw7733MnLkSOrWrRvuaUsEKJiIiEjItWzZkquvvvq4Ksnhw4d58803mTBhAhs2bAh4Tb1I\nyicFExERCbnTTjvtuLFPPvmELl268J///Mc/lpCQ4D9lc8UVV4RzihIlFExERCSsPvzwQ/7617+q\nF4kUSMFERETC4ssvv2TcuHFkZGQEjDdt2pQBAwbQoUMHqlSpEpnJSdRQMBERkTI5dscNwA033HDc\n69u3b6dnz5689dZbAeM1a9Zk8ODB6kUiAfSTICIipZa/L0leP/zwAxMmTOCVV15hz549/vHq1asz\nbtw4evTogZmFe8oS5RRMRESkxE7UlyQ3N5epU6cycODAgF4ktWvXplu3bqSlpXHOOedEauoS5RRM\nRESkRPJWSZKTk0lKSqJChQrk5OTwzDPPMHr0aA4dOhSwzp/+9CdeeOEF9SKRIimYiIhIsa1du5ZF\nixYFVEkOHz7M66+/zoQJE1i/fn3A8t26dWPw4ME0atQoQjOWWKNgIiIixXbWWWcFdG8tqBcJQEpK\nCkOHDuXmm2+O0EwlVimYiIhIsSUmJpKYmMiHH37I6NGjWblyZcDrF154IRkZGVx99dURmqHEOgUT\nEREptr179/LII48wffr0gPGmTZvSv39/br/9dvUikTJRMBERkSJt376dkSNHMmvWrIALW2vUqMHQ\noUPp37+/epFIUOinSERE/LKyssjMzKRZs2YA7N+/n1mzZjFy5Eh++eUX/3LqRSKhomAiIiIBfUnO\nOOMMrrjiCqZPn86AAQMCepEAtGvXjkmTJqkXiYSEgomISDmXty9JUlISmzZt4sorr2Tjxo0By6kX\niYSDgomISDmVv3vr9ddfT79+/VizZk3Acrfeeiu9evWiTZs2EZqplCcKJiIi5dC2bdt4++232blz\nJw0bNmTSpEl8+umnAcucffbZTJ8+nVatWkVollIeKZiIiJRDHo+HhIQE9u/fz3333Udubq7/tQsv\nvJAnn3ySNm3a6E4bCTv9xImIlDN79uzhscceY+rUqQHjZ5xxBqmpqQwaNEi9SCRiFExERMqJX375\nhdmzZzN+/Hh++ukn/3jlypV57LHHeOSRR1QhkYjTT6CISJwrrBdJQkICHTp0YPTo0Vx88cURnKHI\nbxRMRETikMfjYcuWLbz//vsMHDjwuF4kN910E9OnT1cvEok6CiYiInEmMzOTOXPm8OuvvzJu3DgO\nHz7sf61NmzY89NBD3HzzzerYKlFJwUREJE54PB7+/ve/89VXX7Ft2zbmzp3rDyXqRSKxQsFERCQO\nLF68mCVLllCxYkWWL1/OihUryM3N5eyzz+bll1/mpptuivQURYpFwUREJIY45wJOwezfv58xY8ZQ\nqVIldu3axdy5c9m2bRvnnHMOPXr0oHfv3tSsWTOCMxYpGQUTEZEot2/fPsYNG8aqBQuodvQoBypV\n4sqbb6ZyYiKLFi2idevWLFu2jBUrVgAwePBgRo0apV4kEpMUTEREoti+ffu4s3lzHv76ax7NzcUA\nByyaNo0eQBbw7bffkp2dzbBhw+jVqxeJiYmRnbRIGSiYiIhEsXHDhvHw11/zxzwt4w1oC0wFOgMX\nXHwxM2fOVC8SiQsKJiIiUWzVggU8mieU5NUWuKxePZZ//LFu/ZW4kRDpCYiISME2b97MocxMCosc\nBpxaoUI4pyQScgomIiJR5osvvuDOO+/koosuYk9CAq6Q5RxwoFIlVUskriiYiIhEiZycHJ544gma\nNm3Kv//9b+6//37OvOwy3i1k+fcTEmjZrl1Y5ygSarrGREQkwg4dOsTTTz/N1KlT2b59O8nJySQl\nJbFt2zYaNm3KhP37SfjmG/6Y566c9xMSmHDRRbz1+OORnr5IUCmYiIhESE5ODgsXLmTQoEF8++23\nnHHGGfTo0YM6derg8XgYP3481apVY9++fYwfPpxn58/n5KNHOVipEi3ateOtxx+nRo0akX4bIkGl\nYCIiEgHvvfcePXr04KeffgKgVq1adO/enf3795OSksKNN97oX7ZGjRo8OnEiTJx4XOdXkXijYCIi\nEkbffvstY8aM4ZVXXgkYv/DCC0lJSeG6666jwgnutFEokXinYCIiEgbbtm2jZ8+evP322wHjTZo0\noWfPnnTp0oWKFfWRLKL/F4iIhNAPP/zA888/z4wZM/j111/94zVq1ODZZ5/l/vvvVxVEJI+ovV3Y\nzJLMbL6ZbTWzXDM74T1xZpbiWy7vl8fM6oZrziIix+Tm5jJlyhQuvfRSnn32WX8oqV27Nn369OGL\nL76ge/fuCiUi+URzxaQasAF4GXi7iGWPccD5wD7/gHPbgz81EZGCHT16lKeffpqnnnqKffv8H0Wc\nccYZdO7cmdTUVBo2bBjBGYpEt6gNJs6594H3Aaxkf1LscM7tDc2sREQK9/nnn9OlSxfWrVvnH6tQ\noQJpaWnUrl2bunXr6vZekSJEbTApJQM2mFkV4AvgUefcvyI8JxGJc//617/o27cvn376acD4rbfe\nyvXXX8/hw4dJSkoiKSnphHfciEh8BZMsIBVYA5wEPAAsNbM/OOc2RHRmIhKXDh48yIgRI5gwYQLO\n/fZEm0svvZTBgwfz3//+l5o1a9K5c2fq1asXwZmKxI64CSbOuW+Bb/MMfWxm5wL9gPsiMysRiUe/\n/vorgwYNIj09PSCQJCYm8pe//IXTTz+dzZs3+1vLq0oiUnxxE0wKsRpoUdRC/fr1o1atWgFjHTt2\npGPHjqGal4jEoF27dvHaa6/x1FNPsXXrVv/4SSedxOjRo3n44YepUKECK1asoFGjRqqSSNyYM2cO\nc+bMCRjbs2dPSPZledN+tDKzXKCDc25+Cdf7ENjrnPtTIa83BdauXbuWpk2bBmGmIhKPnHPMmTOH\nhx56iF27dvnHzYz27dszduxYLrzwwgjOUCT81q1bR7NmzQCaOefWFbV8cUVtxcTMqgHn4b2gFaCh\nmV0B7HLO/c/MxgJnOufu8y3fB/ge+BKogvcak+uBVmGfvIjEhdzcXP7xj38wYcIE3nvvvYDXbrnl\nFtLT06lfv36EZicSn6I2mABXAv/E25vEAeN9468A3YB6QN5PhMq+Zc4EDgKfATc655aHa8IiEj82\nb97M/fffz9KlSwPG27RpQ+/evbnlllvUHE0kBKK286tzbplzLsE5VyHfVzff612dczfkWf4Z51wj\n51w159zpzjmFEhEpsc8//5w///nPXHDBBQGhpG7durz11lvMnTuXKlWqBDRPE5HgieaKiYhI2Bw9\nepSnnnqKxx57jKNHj/rHzz77bPr27cu9997LkSNHSE9PZ+fOndSpU4dLL700gjMWiU8KJiJSrh08\neJBnnnmGadOmkZmZGfBaz549efLJJ6latSrLly9n5cqVJCYm8sADD+iOG5EQUTARkXLJ4/GwaNEi\n+vfvz6ZNm/zjFSpUYMCAAQwfPpxq1aqRmZnJq6++ys6dO9WXRCQMFExEpNx59913SU1N5aeffgoY\nb9asGS+99BJXXnklzjmWLFmiKolImCmYiEi58euvv9KvXz8yMjICxq+55hqmTZvGZZdd5h8zM/bt\n26cqiUiYKZiISNz7+eefGT16NLNnzw64m6Zx48b07NmTbt26FRg82rVrp1uCRcJMwURE4tahQ4d4\n5ZVXGDp0KLt37/aP16xZk2effZZu3bqdMHgolIiEn4KJiMSd3NxcpkyZwuDBgzlw4EDAa7fddhsv\nvPCCOraKRKmobbAmIlJSzjk++eQTbrjhBh566KGAUHLXXXexdetW5s+f7w8lmZmZ7N+/P1LTFZEC\nqGIiInHhs88+4/7772fNmjUB461atSItLY22bdv6x3Jycvx9Sa655hpuvvnmcE9XRAqhYCIiMW3N\n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\n+uuv+8dGjBjBX//616A3TcvMzGTevHnq3ioiInFLwaQMfvnlF1q1asX69esBqFSpEs8880xIOrku\nX76cpUuXqkoiIiJxTcGklLZv307btm39oaRixYrMmjWLu+66KyT7q1ixoqokIiIS9xRMSmHHjh20\na9eOTz/9FIDTTjuNDz74gGbNmoVsn9dee23Iti0iIhItFExKaPfu3dx6662sXbsWgLp167Jw4cKQ\nhhIREZHyQsGkBPbu3ct1113HZ599BkCdOnVYsGABV111VYRnJiIiEh8UTIpp7969tGjRgi+++AKA\n2rVr8+GHH9KkSZOgbD8rKwsz00WtIiJSrqnBWjH88ssvpKSk+ENJjRo1WL58eVBCicfjYcmSJf5m\naSIiIuWZKiZFyM3N5b777mPDhg0A1KpVixUrVnDZZZeVedtZWVnMnTuXnTt3kpycTFJSUpm3KSIi\nEssUTIrw5JNPsmjRIsB7983ixYvLHEo8Hg/Lli1T91YREZF8FExOYOzYsQwbNgwAM+P111+ncePG\nZdpmQVUS9SURERHxUjApxOLFi/2hBGD48OHcfPPNZd7uN998Q0JCgqokIiIiBVAwKUBWVhadOnXC\nOQf89uybYEhKSlKVREREpBAKJvl4PB7uvvtutm/fDsCtt97Ko48+GrRn3yiQiIiIFE63C+fz2GOP\nsXTpUgB+97vfMWvWLBISdJhERETCQb9x81i9ejWjR48GvJWNN954gzp16pRoGzk5OezduzcU0xMR\nEYl7OpXjk5uby5AhQ/zXlYwePZqWLVuWaBuZmZnMmzePSpUqcf/99wft9I+IiEh5oWDik56ezpIl\nSwBo0KAB/fv3L/a6+fuStG3bVqFERESkFBRMgCNHjvhP4QC89NJLVKpUqVjr5u1LkpKSQsuWLXWB\nq4iISCkpmADz5s1j69atALRv355bbrmlyHXUvVVERCT4FEyAGTNm+P89atSoYq2zevVqVq1ape6t\nIiIiQaRgAuzYsQPwVkuK+8Tgq666ioYNG5KYmBjKqYmIiJQrul04j4EDBxZ72YoVKyqUiIiIBJmC\nic/5559P8+bNIz0NERGRck3BxOeOO+447hbf3NzcCM1GRESkfIr6YGJmvczsezM7ZGYfm9lVRSz/\nZzP72rf8RjO7tTj7adu2rf/fHo+HJUuW8MorryichMCcOXMiPYVyR8c8/HTMw0/HPD5EdTAxs/8H\n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\ngDH+AP80qw+Kyq1jAAAAAElFTkSuQmCC\n", - "text/plain": "" - }, - "metadata": {}, - "output_type": "display_data" - } + "data": { + "image/png": "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\nWUJ6ejoJCQl07tyZSpUqhWx/zjkWLFjALbfcwpVXXsmiRYtCtq+S0l05IiIiERTuviQ//fQTDzzw\nAO+//75/rEePHvznP/+hRo0aIdtvcSmYiIiIRIDH42HZsmVh6976zTff0L9/fxYuXBgwfsopp/D0\n009TvXr1kO27JBRMREREIuCHH35g1apVIa+SrF27lqeeeoq5c+cGXLdy5plnMmLECDp27EitWrVC\nsu/SUDARERGJgHPPPZe0tLSQhYLdu3fz1FNPMW7cODwej3+8cuXK3H///TzxxBOccsopIdl3WSiY\niIiIREgoQsn+/fsZNGgQU6ZMCRg3M/r06cMTTzzBySefHPT9BouCiYiISBz45ZdfePnll5k8eTL/\n+9///OOVKlVi8ODBPPLII1F1yqYwCiYiIiIhkp2dTeXKlUO+n7fffpu//OUvbN++3T9WuXJl7rjj\nDoYMGcLll18e8jkEi/qYiIiIBFlOTg5Llixh0qRJ7N+/PyT7cM7x8ssvc95553HnnXcGhJKUlBS+\n+uor5syZE1OhBFQxERERCarMzEzmzZvHzp07SU5OpmrVqkHdvsfjIT09nSlTpvD5558HvNamTRv6\n9+9PcnIyCQmxWXtQMBEREQmCcPQlWbt2Lb179+bjjz8OGG/UqBGjRo3i7rvvjvknDyuYiIiIlFGo\nu7euWbOGHj16sH79+oDxs88+mxdffJHWrVsHbV+RpmAiIiJSBjt27CA9PT0kVZLVq1fz4osvMnv2\n7IBeJI0aNWLixInccsstMXvKpjAKJiIiImVw+umnc+edd3LhhRcGrUqyb98+Bg4cyEsvvRQwXr9+\nfXr06MHDDz8c1b1IykLBREREpIwuueSSoGxn586dDBkyhFmzZpGdne0fr1SpEiNHjmTQoEEhfepw\nNFAwERERibDdu3fz2muv8dhjj7Fjxw7/eLVq1ejfvz/du3fnrLPOiuAMw0fBREREJEKys7OZPn06\ngwcPZt++fQGvdejQgfHjx9OwYcMIzS4y4uuKGRERkSDLzMxk1qxZHDx4MGjb9Hg8PPPMM9SuXZte\nvXoFhJL27duTlZXFO++8U+5CCahiIiIiUqCcnByWL1/u70ty6NChoFxwum7dOnr27Mknn3wSMN6m\nTRt69erFH//4x5jvRVIWCiYiIiL55O3eGqy+JJ9++impqanH9SK58cYb6d+/P3/84x/LtP14oWAi\nIiLik79KEoy+JIsXL2b48OHHVUjOP/98Zs6cybXXXlum7ccbBRMRERHg0KFDZGRkBK1K8tlnnzFh\nwgQyMjICxs866yxSU1N55JFHgv4cnXigYCIiIgJUqVKF8847j9tvv71MVZIdO3bQu3dv3nzzzYDx\nU045hf79+zNgwIC470VSFgomIiIigJnRqlWrUq+/ZcsWnn76aWbPns3evXv949WqVePpp5/mwQcf\njLv28aGgYCIiIlIGR48eZfr06QwaNCjgtt9TTjmFBx54gL/85S80aNAgchOMMQomIiIipeDxeBg/\nfjyPPvoohw4dCnjtjjvu4IUXXgjqA/3KC9WURESkXPB4PKxYsYLDhw+XaTuHDx9m1KhRJCYmMmjQ\noIBQ0rVrVzZv3sxbb72lUFJKqpiIiEjcy8rKYu7cuezcuZO6detywQUXlGo7q1evpmvXrnz11VcB\n4zfeeCMDBgzglltuCcZ0y7WorZiY2RAzW21me81sm5m9Y2bnF2O9P5vZ12Z2yMw2mtmt4ZiviIhE\nH4/Hw5IlS0hPTychIYEHHnigVKFk8eLFNG/enKuvvjoglFxzzTWsWrWKxYsXK5QESTRXTJKA54E1\neOc5FvjQzC5yzh0qaAUzuxZ4HRgELAI6AXPNrIlz7quC1hERkfiUt0qSnJxMUlJSifuSfP7550yY\nMIGZM2cGjDdr1oyMjAwuvfTSYE5ZiOJg4pxrnfd7M+sCbAeaASsLWS0NeM8596zv+5Fm1groDfQM\n0VRFRCSK5ObmsnTp0jJ1b/3pp5945JFHjutFUrt2bQYMGKBeJCEUtcGkALUBB+w6wTLNgfH5xj4A\n2odqUiIiEl3MjJ9//rlUVZItW7bQs2dPFi1aFDCuXiThExPBxLyPWXwOWFnEKZl6wLZ8Y9t84yIi\nUg6YGR07dizRE3r/+9//kp6ezpQpU47rRdK9e3d69uypXiRhEhPBBJgCXAy0iPREREQk+hU3lOTk\n5DB+/HhGjRrFkSNH/OM1atTg3nvvZfjw4brtN8yiPpiY2WSgNZDknMsqYvGfgcR8Y4m+8UL169eP\nWrVqBYx17NiRjh07lnC2IiISCw4fPswbb7zBxIkT2bBhQ8Br3bp1Y/z48dSuXTtCs4s+c+bMYc6c\nOQFje/bsCcm+zDkXkg0Hgy+UtAdSnHObi7H8G0BV51z7PGOrgI3OueMufjWzpsDatWvX0rRp0yDO\nXEREQikrK4tTTz2Vk046qUTrHTlyhAULFjBy5Ei+/vpr/7iZ0b17d3r37s3ll18e7OnGpXXr1tGs\nWTOAZs65dcHabtRWTMxsCtARaAccMLNjlZA9zrnDvmVeAbY654b6XpsILDWzh/HeLtwR7108D4R1\n8iIiEhI5OTksX76clStXct1115GcnFzsdT/66CO6d+/Oli1bAsbPP/98Zs6cybXXXhvs6UopRG0w\nAR7EexfO0nzjXYFZvn/XBzzHXnDO/dvM7gae8H1tAtqrh4mISOzL25ckJSWFFi2Kd9nhF198wfjx\n48nIyAgYb9KkCYMGDaJ9+/ZUqVIlBDOW0ojaYOKcK/J+LOfcDQWMvQW8FZJJiYhI2Hk8HpYtW1bi\nviRbt26lb9++/P3vfw8Yb9asGb169aJz585UrBi1vwbLLf0vIiIiUas03Vt//PFHevXqVWAvkmee\neYbU1FT1IoliCiYiIhK1PvroI/8zboqqkng8HqZNm8agQYOO60Vy//3306tXL/UiiQEKJiIiErXu\nvPNOqlSpcsIqybFeJH/96185dOi3R6nVqFGDzp07M3LkSBIT83eSkGilYCIiIlGrWrVqhb52+PBh\n/va3vzFx4kTWr18f8Fr37t0ZN27ccT2qJPopmIiISMxZvXo1Xbp0CehFAnD99dczePBgbr755gjN\nTMpKwURERCLG4/GQm5tb7Cf1fvTRRzz66KP861//Chi/4IILyMjI4JprrgnFNCWMdFmyiIhERFZW\nFtOmTeMf//hHkct+8cUXdO3alZtvvjkglDRt2pQ33niDDRs2KJTECVVMREQkrPL3JWncuHGhy2Zl\nZZGWlnZcL5JatWoxaNAgBgwYoF4kcUb/a4qISNjk797asmXLAu+4US+S8kvBREREQq643Vs3b95M\neno6kydPZv/+/f7xU045hW7dutG7d2/1IolzCiYiIhJyCxcu5LPPPiu0SpKTk8O4ceMYNWoU2dnZ\n/vEaNWpw7733MnLkSOrWrRvuaUsEKJiIiEjItWzZkquvvvq4Ksnhw4d58803mTBhAhs2bAh4Tb1I\nyicFExERCbnTTjvtuLFPPvmELl268J///Mc/lpCQ4D9lc8UVV4RzihIlFExERCSsPvzwQ/7617+q\nF4kUSMFERETC4ssvv2TcuHFkZGQEjDdt2pQBAwbQoUMHqlSpEpnJSdRQMBERkTI5dscNwA033HDc\n69u3b6dnz5689dZbAeM1a9Zk8ODB6kUiAfSTICIipZa/L0leP/zwAxMmTOCVV15hz549/vHq1asz\nbtw4evTogZmFe8oS5RRMRESkxE7UlyQ3N5epU6cycODAgF4ktWvXplu3bqSlpXHOOedEauoS5RRM\nRESkRPJWSZKTk0lKSqJChQrk5OTwzDPPMHr0aA4dOhSwzp/+9CdeeOEF9SKRIimYiIhIsa1du5ZF\nixYFVEkOHz7M66+/zoQJE1i/fn3A8t26dWPw4ME0atQoQjOWWKNgIiIixXbWWWcFdG8tqBcJQEpK\nCkOHDuXmm2+O0EwlVimYiIhIsSUmJpKYmMiHH37I6NGjWblyZcDrF154IRkZGVx99dURmqHEOgUT\nEREptr179/LII48wffr0gPGmTZvSv39/br/9dvUikTJRMBERkSJt376dkSNHMmvWrIALW2vUqMHQ\noUPp37+/epFIUOinSERE/LKyssjMzKRZs2YA7N+/n1mzZjFy5Eh++eUX/3LqRSKhomAiIiIBfUnO\nOOMMrrjiCqZPn86AAQMCepEAtGvXjkmTJqkXiYSEgomISDmXty9JUlISmzZt4sorr2Tjxo0By6kX\niYSDgomISDmVv3vr9ddfT79+/VizZk3Acrfeeiu9evWiTZs2EZqplCcKJiIi5dC2bdt4++232blz\nJw0bNmTSpEl8+umnAcucffbZTJ8+nVatWkVollIeKZiIiJRDHo+HhIQE9u/fz3333Udubq7/tQsv\nvJAnn3ySNm3a6E4bCTv9xImIlDN79uzhscceY+rUqQHjZ5xxBqmpqQwaNEi9SCRiFExERMqJX375\nhdmzZzN+/Hh++ukn/3jlypV57LHHeOSRR1QhkYjTT6CISJwrrBdJQkICHTp0YPTo0Vx88cURnKHI\nbxRMRETikMfjYcuWLbz//vsMHDjwuF4kN910E9OnT1cvEok6CiYiInEmMzOTOXPm8OuvvzJu3DgO\nHz7sf61NmzY89NBD3HzzzerYKlFJwUREJE54PB7+/ve/89VXX7Ft2zbmzp3rDyXqRSKxQsFERCQO\nLF68mCVLllCxYkWWL1/OihUryM3N5eyzz+bll1/mpptuivQURYpFwUREJIY45wJOwezfv58xY8ZQ\nqVIldu3axdy5c9m2bRvnnHMOPXr0oHfv3tSsWTOCMxYpGQUTEZEot2/fPsYNG8aqBQuodvQoBypV\n4sqbb6ZyYiKLFi2idevWLFu2jBUrVgAwePBgRo0apV4kEpMUTEREoti+ffu4s3lzHv76ax7NzcUA\nByyaNo0eQBbw7bffkp2dzbBhw+jVqxeJiYmRnbRIGSiYiIhEsXHDhvHw11/zxzwt4w1oC0wFOgMX\nXHwxM2fOVC8SiQsKJiIiUWzVggU8mieU5NUWuKxePZZ//LFu/ZW4kRDpCYiISME2b97MocxMCosc\nBpxaoUI4pyQScgomIiJR5osvvuDOO+/koosuYk9CAq6Q5RxwoFIlVUskriiYiIhEiZycHJ544gma\nNm3Kv//9b+6//37OvOwy3i1k+fcTEmjZrl1Y5ygSarrGREQkwg4dOsTTTz/N1KlT2b59O8nJySQl\nJbFt2zYaNm3KhP37SfjmG/6Y566c9xMSmHDRRbz1+OORnr5IUCmYiIhESE5ODgsXLmTQoEF8++23\nnHHGGfTo0YM6derg8XgYP3481apVY9++fYwfPpxn58/n5KNHOVipEi3ateOtxx+nRo0akX4bIkGl\nYCIiEgHvvfcePXr04KeffgKgVq1adO/enf3795OSksKNN97oX7ZGjRo8OnEiTJx4XOdXkXijYCIi\nEkbffvstY8aM4ZVXXgkYv/DCC0lJSeG6666jwgnutFEokXinYCIiEgbbtm2jZ8+evP322wHjTZo0\noWfPnnTp0oWKFfWRLKL/F4iIhNAPP/zA888/z4wZM/j111/94zVq1ODZZ5/l/vvvVxVEJI+ovV3Y\nzJLMbL6ZbTWzXDM74T1xZpbiWy7vl8fM6oZrziIix+Tm5jJlyhQuvfRSnn32WX8oqV27Nn369OGL\nL76ge/fuCiUi+URzxaQasAF4GXi7iGWPccD5wD7/gHPbgz81EZGCHT16lKeffpqnnnqKffv8H0Wc\nccYZdO7cmdTUVBo2bBjBGYpEt6gNJs6594H3Aaxkf1LscM7tDc2sREQK9/nnn9OlSxfWrVvnH6tQ\noQJpaWnUrl2bunXr6vZekSJEbTApJQM2mFkV4AvgUefcvyI8JxGJc//617/o27cvn376acD4rbfe\nyvXXX8/hw4dJSkoiKSnphHfciEh8BZMsIBVYA5wEPAAsNbM/OOc2RHRmIhKXDh48yIgRI5gwYQLO\n/fZEm0svvZTBgwfz3//+l5o1a9K5c2fq1asXwZmKxI64CSbOuW+Bb/MMfWxm5wL9gPsiMysRiUe/\n/vorgwYNIj09PSCQJCYm8pe//IXTTz+dzZs3+1vLq0oiUnxxE0wKsRpoUdRC/fr1o1atWgFjHTt2\npGPHjqGal4jEoF27dvHaa6/x1FNPsXXrVv/4SSedxOjRo3n44YepUKECK1asoFGjRqqSSNyYM2cO\nc+bMCRjbs2dPSPZledN+tDKzXKCDc25+Cdf7ENjrnPtTIa83BdauXbuWpk2bBmGmIhKPnHPMmTOH\nhx56iF27dvnHzYz27dszduxYLrzwwgjOUCT81q1bR7NmzQCaOefWFbV8cUVtxcTMqgHn4b2gFaCh\nmV0B7HLO/c/MxgJnOufu8y3fB/ge+BKogvcak+uBVmGfvIjEhdzcXP7xj38wYcIE3nvvvYDXbrnl\nFtLT06lfv36EZicSn6I2mABXAv/E25vEAeN9468A3YB6QN5PhMq+Zc4EDgKfATc655aHa8IiEj82\nb97M/fffz9KlSwPG27RpQ+/evbnlllvUHE0kBKK286tzbplzLsE5VyHfVzff612dczfkWf4Z51wj\n51w159zpzjmFEhEpsc8//5w///nPXHDBBQGhpG7durz11lvMnTuXKlWqBDRPE5HgieaKiYhI2Bw9\nepSnnnqKxx57jKNHj/rHzz77bPr27cu9997LkSNHSE9PZ+fOndSpU4dLL700gjMWiU8KJiJSrh08\neJBnnnmGadOmkZmZGfBaz549efLJJ6latSrLly9n5cqVJCYm8sADD+iOG5EQUTARkXLJ4/GwaNEi\n+vfvz6ZNm/zjFSpUYMCAAQwfPpxq1aqRmZnJq6++ys6dO9WXRCQMFExEpNx59913SU1N5aeffgoY\nb9asGS+99BJXXnklzjmWLFmiKolImCmYiEi58euvv9KvXz8yMjICxq+55hqmTZvGZZdd5h8zM/bt\n26cqiUiYKZiISNz7+eefGT16NLNnzw64m6Zx48b07NmTbt26FRg82rVrp1uCRcJMwURE4tahQ4d4\n5ZVXGDp0KLt37/aP16xZk2effZZu3bqdMHgolIiEn4KJiMSd3NxcpkyZwuDBgzlw4EDAa7fddhsv\nvPCCOraKRKmobbAmIlJSzjk++eQTbrjhBh566KGAUHLXXXexdetW5s+f7w8lmZmZ7N+/P1LTFZEC\nqGIiInHhs88+4/7772fNmjUB461atSItLY22bdv6x3Jycvx9Sa655hpuvvnmcE9XRAqhYCIiMW3N\n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\n+uuv+8dGjBjBX//616A3TcvMzGTevHnq3ioiInFLwaQMfvnlF1q1asX69esBqFSpEs8880xIOrku\nX76cpUuXqkoiIiJxTcGklLZv307btm39oaRixYrMmjWLu+66KyT7q1ixoqokIiIS9xRMSmHHjh20\na9eOTz/9FIDTTjuNDz74gGbNmoVsn9dee23Iti0iIhItFExKaPfu3dx6662sXbsWgLp167Jw4cKQ\nhhIREZHyQsGkBPbu3ct1113HZ599BkCdOnVYsGABV111VYRnJiIiEh8UTIpp7969tGjRgi+++AKA\n2rVr8+GHH9KkSZOgbD8rKwsz00WtIiJSrqnBWjH88ssvpKSk+ENJjRo1WL58eVBCicfjYcmSJf5m\naSIiIuWZKiZFyM3N5b777mPDhg0A1KpVixUrVnDZZZeVedtZWVnMnTuXnTt3kpycTFJSUpm3KSIi\nEssUTIrw5JNPsmjRIsB7983ixYvLHEo8Hg/Lli1T91YREZF8FExOYOzYsQwbNgwAM+P111+ncePG\nZdpmQVUS9SURERHxUjApxOLFi/2hBGD48OHcfPPNZd7uN998Q0JCgqokIiIiBVAwKUBWVhadOnXC\nOQf89uybYEhKSlKVREREpBAKJvl4PB7uvvtutm/fDsCtt97Ko48+GrRn3yiQiIiIFE63C+fz2GOP\nsXTpUgB+97vfMWvWLBISdJhERETCQb9x81i9ejWjR48GvJWNN954gzp16pRoGzk5OezduzcU0xMR\nEYl7OpXjk5uby5AhQ/zXlYwePZqWLVuWaBuZmZnMmzePSpUqcf/99wft9I+IiEh5oWDik56ezpIl\nSwBo0KAB/fv3L/a6+fuStG3bVqFERESkFBRMgCNHjvhP4QC89NJLVKpUqVjr5u1LkpKSQsuWLXWB\nq4iISCkpmADz5s1j69atALRv355bbrmlyHXUvVVERCT4FEyAGTNm+P89atSoYq2zevVqVq1ape6t\nIiIiQaRgAuzYsQPwVkuK+8Tgq666ioYNG5KYmBjKqYmIiJQrul04j4EDBxZ72YoVKyqUiIiIBJmC\nic/5559P8+bNIz0NERGRck3BxOeOO+447hbf3NzcCM1GRESkfIr6YGJmvczsezM7ZGYfm9lVRSz/\nZzP72rf8RjO7tTj7adu2rf/fHo+HJUuW8MorryichMCcOXMiPYVyR8c8/HTMw0/HPD5EdTAxs/8H\n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\ngDH+AP80qw+Kyq1jAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Simulation" - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "K = S[2]\n", + "X = []\n", + "Y = []\n", + "\n", + "for k in k_grid:\n", + " if k < 1.5*k_ss:\n", + " X.append(k)\n", + " Y.append(K[k])\n", + "\n", + "plt.plot(X, Y, color=\"black\", linewidth=2)\n", + "plt.plot(X, X, \"--\", color=\"gray\", linewidth=1)\n", + "plt.plot([k_ss], [k_ss], marker='o', color='r')\n", + "plt.xlabel(\"$k$\", fontsize=14)\n", + "plt.ylabel(\"$k^{\\prime}$\", fontsize=14)\n", + "plt.title(\"Policy Function: $k^{\\prime}$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 234, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "C = S[1]\nK = S[2]\n\nk0 = k_grid[30]\nX = [k0]\nY = [C[k0]]\nT = [0]\n\ns = 0\nt = 1\nwhile s<5:\n T.append(t)\n k = K[k0]\n X.append(k)\n c = C[k]\n Y.append(c)\n if k0 == k:\n s += 1\n k0 = k\n t += 1\n \nplt.plot(T, X, color=\"black\", linewidth=2, label=\"capital stock: $k_{t}$\")\nplt.plot(T, Y, color=\"red\", linewidth=1, label=\"consumption: $c_{t}$\")\nplt.plot([t], [k_ss], marker='o', color='black')\nplt.xlabel(\"$t$\", fontsize=14)\nplt.ylabel(\"$c_{t}$, $k_{t}$\", fontsize=14)\nplt.title(\"Path of $c$ and $k$ over time\")\nplt.legend(loc='lower right')\nplt.show()", - "execution_count": 234, - "outputs": [ - { - "data": { - "image/png": "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\neFJiIkeJj48PdgghQ/fCo/twhO6FR/fhCN0L/wq74cKBYmatgMTExER1YhIRESmGpKQk4uLiAOKc\nc0mlOZZqTERERCRkKDERERGRkKHEREREREKGEhMREREJGUpMREREJGQoMREREZGQocREREREQoYS\nExEREQkZSkxEREQkZCgxERERkZChxERERERChhITERERCRlKTERERCRkKDERERGRkKHEREREREKG\nEhMREREJGUpMREREJGQoMREREZGQocREREREcnHOBe3cSkxERESEvXv3cvfdd9O0aVNOOukkmjZt\nyt13383evXvLNI6wSEzM7AIzm21mW8ws08y6F2Gf48zscTPbYGYHzWydmd1SBuGKiIiElb1793L+\n+efz4osvsmHDBrZs2cKGDRt48cUXOf/888s0OQmLxASoAqwEBgJFrV+aCfwN6AOcBsQDPwYkOhER\nkTD2wAMPsGbNGjIzM3OVZ2ZmsmbNGkaNGlVmsVQqszOVgnNuPjAfwMzsWNub2aXABUAz59wuX/Gm\nwEUoIiKB4pzj4MGD7N+/n/3795Oamlro59TUVNLT04Mddsho0qQJt956a6HbzJkz56ikJEtmZiaz\nZ8/mueeeC0R4RwmLxKQEugHfACPM7EZgPzAb+Idz7mBQIxMRKWeccxw6dChXklBYAlHc5dTU1KB2\nxgx3HTp0KDQxcc6RlpZW6DHS0tJwzlGEuoFSK6+JSTO8GpODQA+gNvASUBO4LYhxiYiUuawvnpIk\nDEVJGvbv31/gX9sS+syMqKioQreJiooqk6QEym9iEgFkAr2dc/sAzOxeYKaZDXTOHQpqdCIixeSc\nY9euXSQnJ7N9+/Z831NSUgpMIDIyMoJ9CUUWExNDlSpVst/zfi5sXdbnY33RViQnnHDCMbfp1q0b\nL774Yr4JZkREBN27H3PMid+U18RkK7AlKynxWQMY0Aj4paAdhwwZQmxsbK6y+Ph44uPjAxGniFRQ\nzjn27NlTYJKRtywlJeWY1e1lJTo6usAkobjLeddFR0cTEREu4zLKj8cff5yFCxce1QE2IiKCFi1a\n8Nhjj2WXJSQkkJCQkGv/3bt3+y0WC7d2OzPLBHo452YXss0dwDNAXedcqq/sCuBdoGp+NSZm1gpI\nTExMpFWrVoEJXkTKLecce/fuLVKSkVV2+PDhgMQSHR1dotqGotRExMTEKHEop/bu3cuoUaOYPXs2\n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\nvHr16tx///3cc889eqCeiJQrSUlJxMXFAcQ555JKc6xyV2MC7AHOzFM2CPgbcBWwoawDkooha6TN\niBEj+OWXX7LLo6KiGDhwIKNGjaJ27dpBjFBEJPSFRWJiZlWA5hypAWlmZmcBO51zm83sSaCBc+5m\n51UB/ZBn/+3AQefcmjINXCqMbdu20b9/fz744INc5fHx8Tz22GM0a9YsSJGJiISXsEhMgNbAIsD5\nXk/7yt8AbgXqAycFJzSpyJxzzJgxgzvvvDPXE387derEU089RevWrYMYnYhI+AmLxMQ59xmFDG12\nzvU5xv6j0bBh8bPt27czcOBAZs2alV1Wp04dXnrpJXr27KmRNiIiJVBu5zERCaSZM2fSsmXLXEnJ\ntddey+rVq7nqqquUlIiIlFBY1JiIhIrk5GQGDRrEzJkzs8tq167NpEmTuOaaa4IYmYhI+aDERKSI\nZs2axYABA3INAb7qqquYNGkSdevWDWJkIiLlh5pyRI4hJSWFXr16cfXVV2cnJbVq1eLtt99m5syZ\nSkpERPxINSYihXj//ffp378/27dvzy678soreemll6hXTw+sFhHxN9WYiORj165dXH/99fTs2TM7\nKTnhhBN48803mTVrlpISEZEAUY2JSB6rV6+mR48e/Pzzz9ll3bp1Y/LkyZx44olBjExEpPxTjYlI\nDu+++y5//etfs5OSGjVqMG3aND788EMlJSIiZUA1JiJARkYGo0aNYsyYMdllZ599Nu+//z5NmjQJ\nXmAiIhWMEhOp8Hbu3El8fDwff/xxdtkNN9zA5MmT9RRgEZEypqYcqdBWrVpF69ats5OSyMhInnvu\nOaZNm6akREQkCFRjIhVWQkICt912GwcOHAC859y88847dOzYMbiBiYhUYKoxkQonPT2d++67j969\ne2cnJa1btyYxMVFJiYhIkKnGRCqU5ORkevXqxcKFC7PL+vTpw6RJk4iOjg5iZCIiAkpMpAJJTEyk\nZ8+ebNq0CYBKlSoxceJE+vfvr6cBi4iECCUmUiFMmzaNvn37cujQIQDq16/PzJkzad++fZAjExGR\nnNTHRMo15xzDhg3j5ptvzk5Kzj//fBITE5WUiIiEICUmUm5lZmYycOBAxo8fn13Wr18/Fi1aRIMG\nDYIYmYiIFERNOVIuZWRkcNttt/HGG28AYGZMmjSJ/v37BzkyEREpjBITKXfS0tK48cYbmTFjBuBN\n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\nqlatGugIRUTCwk033cSBAwdyzSS6dOlSHnnkEXbt2hXEyEIvlpJ46qmnyMzMDLuHxCoxKY4DB2Do\nUOjWDbp0OebmKSkpvPrqq4D3jIE777wz0BGKiIQNMzuqads5F6RojhZKsZREZGQkP/74Y9jNmaXE\npDjGj4fffoOnny7S5i+88AIHDhwA4I477qB27dqBjE5EpFR+++03brvtNho2bEh0dDTNmjVj4MCB\n2bW+mzZtYuDAgZxxxhnExMRQu3Ztrr32WjZu3JjrOFl9Jn788UeuvfZaYmNjqV27NoMHD+bQoUPZ\n2+XtCzJ69GiGDx8OQJMmTYiIiCAyMjJ7fVHPX1T79u1j8ODBNG3alOjoaOrVq8cll1zCt99+e8xY\nAL799lsuu+wyYmNjqVatGhdddBHLly8v9n3Nz8aNG2nevDl/+ctfSE5Ozi7/8ccfsx9rciwbNmxg\n27ZttG3btqi3JCSExaickLB5szfD65AhcOqpx9x83759PP/88wBUqlSJe++9N9ARioiU2NatW2nT\npg179uyhX79+nH766WzZsoV3332X1NRUqlevzooVK1i2bBnx8fE0atSIDRs2MGnSJP72t7/xww8/\nEB0dDZDdX+Laa6+ladOmjBkzhmXLljFx4kR27drF1KlTs7fL2bfiqquu4n//+x9vv/02zz33HLVq\n1QKgjm+QQVHPX1T9+vXjvffe46677qJFixbs2LGDL7/8krVr1x4zlh9++IELL7yQ2NhY7r//fipV\nqsTkyZPp2LEjn3/+OW3atCnyfc3rl19+oVOnTtSpU4dPPvmEE044IXtdixYt6NixIwsXLjzm9S1Z\nsoSWLVuGXVMOzjm9vOq6VoBLTEx0+YqPd65ePed2785/fR7PPPOMAxzgbrrppiLtIyKhKzEx0RX6\nOyKPuLg417Bhw4C+4uLi/HZ9N910k6tUqZJLSkoqcJuDBw8eVbZ8+XJnZm769OnZZQ8//LAzM3fl\nlVfm2nbQoEEuIiLCff/9984556ZOneoiIiLcxo0bs7cZP378UWXFPX9+x81PjRo13F133VXg+sJi\n6dGjh4uOjnYbNmzILtu6daurXr2669ixY3ZZUe7rww8/7CIiItyOHTvcmjVrXMOGDd15553ndu3a\nddS2ERERrlOnToVeV5YBAwa4QYMGOeecW7ZsmRs1apSrX79+9v0vjmP9/GetB1q5Un4fq8akKL78\n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\ntqNHjzJ27Fjatm1LfHw87du3Z8KECfz73/8Oltm1axf9+/cnKSmJiy66iNtuu42tW7eWuM7MmTPx\n+XwcPHiQzMxMmjVrRnJyMmPGjOHMmTPBcl999RWTJ08mLS2N+Ph4WrVqxe233877778fLJOZmUla\nWlqpWIvuEW7fgQMHGD16NMnJyVx88cX88pe/BODIkSMMHjyYpKQkLrnkEpYsWRL2/NzcXO68806S\nkpJISUlh8uTJnD3rvaI4a9YsHnnkEQAuv/xyfD4fcXFxwV717OxsfD5fcDvSOqtMvYE3p9aRI0dK\nXaM+qCs9JjjnngGeKePYLSHbpVvxeQidTG327NnVcVkRkZiTl5fH9ddfz6lTp7j33nvp1KkTn376\nKatWreL06dMkJibyj3/8g549e5KUlMS0adNo1KgRWVlZ9O7dm3fffZfrr/cm2C56x+LOO++kffv2\nzJ8/n507d7Js2TJatWrF448/DsC9997La6+9xn333Ud6ejqff/45f/3rX9m7dy/f/e53g9cK985G\nuP1F2yNGjKBz584sWLCAN998k7lz59K8eXOysrK49dZbWbhwIcuXL+fhhx/me9/7HjfffHOpuNPS\n0pg/fz7vvfceS5cu5cSJE2RnZzN06FD279/PypUreeqpp2jRogUALVu2DBvXnj17IqqzytQbQHp6\nOr179+aPf/zjef17xzTnnD5et9x1gNuxY4crMmjQIAc4wM2ePduJSMO1Y8cOF/o3oj7JyMhwjRo1\ncjt37iyzzODBg118fLw7fPhwcF9eXp5LTEx0vXv3Du6bOXOmMzP305/+tMT5Q4cOdS1btgxuJycn\nu/vuu6/cuDIzM11aWlqp/TNnznQ+n6/UPjNzP/vZz4L7CgsLXWpqqouLi3OLFi0K7j9x4oRLSEhw\n99xzT6nzhwwZUuK6EydOdD6fz33wwQfOOecWL17sfD6f++c//1kqruzs7BLHIq2z4vevqN6cc87n\n87lbbrml1P3DOXHihHvooYfc7Nmz3dy5c11WVlZE5xVXUfsvOg5c56r4fVxnekxqW+hkag888ECU\nIxKROuX0adi3r2bvceWVUA3zKTnnWLt2LQMHDqRr165hy/j9fjZu3MiQIUO47LLLgvtbt27NXXfd\nxbJly/jqq69o2rQp4P3f/7333lviGj169GDNmjXBcsnJyWzdupW8vDwuuaTKK4YE7zt27Njgts/n\n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\n", - "text/plain": "" - }, - "metadata": {}, - "output_type": "display_data" - } + "data": { + "image/png": "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\neFJiIkeJj48PdgghQ/fCo/twhO6FR/fhCN0L/wq74cKBYmatgMTExER1YhIRESmGpKQk4uLiAOKc\nc0mlOZZqTERERCRkKDERERGRkKHEREREREKGEhMREREJGUpMREREJGQoMREREZGQocREREREQoYS\nExEREQkZSkxEREQkZCgxERERkZChxERERERChhITERERCRlKTERERCRkKDERERGRkKHEREREREKG\nEhMREREJGUpMREREJGQoMREREZGQocREREREcnHOBe3cSkxERESEvXv3cvfdd9O0aVNOOukkmjZt\nyt13383evXvLNI6wSEzM7AIzm21mW8ws08y6F2Gf48zscTPbYGYHzWydmd1SBuGKiIiElb1793L+\n+efz4osvsmHDBrZs2cKGDRt48cUXOf/888s0OQmLxASoAqwEBgJFrV+aCfwN6AOcBsQDPwYkOhER\nkTD2wAMPsGbNGjIzM3OVZ2ZmsmbNGkaNGlVmsVQqszOVgnNuPjAfwMzsWNub2aXABUAz59wuX/Gm\nwEUoIiKB4pzj4MGD7N+/n/3795Oamlro59TUVNLT04Mddsho0qQJt956a6HbzJkz56ikJEtmZiaz\nZ8/mueeeC0R4RwmLxKQEugHfACPM7EZgPzAb+Idz7mBQIxMRKWeccxw6dChXklBYAlHc5dTU1KB2\nxgx3HTp0KDQxcc6RlpZW6DHS0tJwzlGEuoFSK6+JSTO8GpODQA+gNvASUBO4LYhxiYiUuawvnpIk\nDEVJGvbv31/gX9sS+syMqKioQreJiooqk6QEym9iEgFkAr2dc/sAzOxeYKaZDXTOHQpqdCIixeSc\nY9euXSQnJ7N9+/Z831NSUgpMIDIyMoJ9CUUWExNDlSpVst/zfi5sXdbnY33RViQnnHDCMbfp1q0b\nL774Yr4JZkREBN27H3PMid+U18RkK7AlKynxWQMY0Aj4paAdhwwZQmxsbK6y+Ph44uPjAxGniFRQ\nzjn27NlTYJKRtywlJeWY1e1lJTo6usAkobjLeddFR0cTEREu4zLKj8cff5yFCxce1QE2IiKCFi1a\n8Nhjj2WXJSQkkJCQkGv/3bt3+y0WC7d2OzPLBHo452YXss0dwDNAXedcqq/sCuBdoGp+NSZm1gpI\nTExMpFWrVoEJXkTKLecce/fuLVKSkVV2+PDhgMQSHR1dotqGotRExMTEKHEop/bu3cuoUaOYPXs2\n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\nvHr16tx///3cc889eqCeiJQrSUlJxMXFAcQ555JKc6xyV2MC7AHOzFM2CPgbcBWwoawDkooha6TN\niBEj+OWXX7LLo6KiGDhwIKNGjaJ27dpBjFBEJPSFRWJiZlWA5hypAWlmZmcBO51zm83sSaCBc+5m\n51UB/ZBn/+3AQefcmjINXCqMbdu20b9/fz744INc5fHx8Tz22GM0a9YsSJGJiISXsEhMgNbAIsD5\nXk/7yt8AbgXqAycFJzSpyJxzzJgxgzvvvDPXE387derEU089RevWrYMYnYhI+AmLxMQ59xmFDG12\nzvU5xv6j0bBh8bPt27czcOBAZs2alV1Wp04dXnrpJXr27KmRNiIiJVBu5zERCaSZM2fSsmXLXEnJ\ntddey+rVq7nqqquUlIiIlFBY1JiIhIrk5GQGDRrEzJkzs8tq167NpEmTuOaaa4IYmYhI+aDERKSI\nZs2axYABA3INAb7qqquYNGkSdevWDWJkIiLlh5pyRI4hJSWFXr16cfXVV2cnJbVq1eLtt99m5syZ\nSkpERPxINSYihXj//ffp378/27dvzy678soreemll6hXTw+sFhHxN9WYiORj165dXH/99fTs2TM7\nKTnhhBN48803mTVrlpISEZEAUY2JSB6rV6+mR48e/Pzzz9ll3bp1Y/LkyZx44olBjExEpPxTjYlI\nDu+++y5//etfs5OSGjVqMG3aND788EMlJSIiZUA1JiJARkYGo0aNYsyYMdllZ599Nu+//z5NmjQJ\nXmAiIhWMEhOp8Hbu3El8fDwff/xxdtkNN9zA5MmT9RRgEZEypqYcqdBWrVpF69ats5OSyMhInnvu\nOaZNm6akREQkCFRjIhVWQkICt912GwcOHAC859y88847dOzYMbiBiYhUYKoxkQonPT2d++67j969\ne2cnJa1btyYxMVFJiYhIkKnGRCqU5ORkevXqxcKFC7PL+vTpw6RJk4iOjg5iZCIiAkpMpAJJTEyk\nZ8+ebNq0CYBKlSoxceJE+vfvr6cBi4iECCUmUiFMmzaNvn37cujQIQDq16/PzJkzad++fZAjExGR\nnNTHRMo15xzDhg3j5ptvzk5Kzj//fBITE5WUiIiEICUmUm5lZmYycOBAxo8fn13Wr18/Fi1aRIMG\nDYIYmYiIFERNOVIuZWRkcNttt/HGG28AYGZMmjSJ/v37BzkyEREpjBITKXfS0tK48cYbmTFjBuBN\n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\nqlatGugIRUTCwk033cSBAwdyzSS6dOlSHnnkEXbt2hXEyEIvlpJ46qmnyMzMDLuHxCoxKY4DB2Do\nUOjWDbp0OebmKSkpvPrqq4D3jIE777wz0BGKiIQNMzuqads5F6RojhZKsZREZGQkP/74Y9jNmaXE\npDjGj4fffoOnny7S5i+88AIHDhwA4I477qB27dqBjE5EpFR+++03brvtNho2bEh0dDTNmjVj4MCB\n2bW+mzZtYuDAgZxxxhnExMRQu3Ztrr32WjZu3JjrOFl9Jn788UeuvfZaYmNjqV27NoMHD+bQoUPZ\n2+XtCzJ69GiGDx8OQJMmTYiIiCAyMjJ7fVHPX1T79u1j8ODBNG3alOjoaOrVq8cll1zCt99+e8xY\nAL799lsuu+wyYmNjqVatGhdddBHLly8v9n3Nz8aNG2nevDl/+ctfSE5Ozi7/8ccfsx9rciwbNmxg\n27ZttG3btqi3JCSExaickLB5szfD65AhcOqpx9x83759PP/88wBUqlSJe++9N9ARioiU2NatW2nT\npg179uyhX79+nH766WzZsoV3332X1NRUqlevzooVK1i2bBnx8fE0atSIDRs2MGnSJP72t7/xww8/\nEB0dDZDdX+Laa6+ladOmjBkzhmXLljFx4kR27drF1KlTs7fL2bfiqquu4n//+x9vv/02zz33HLVq\n1QKgjm+QQVHPX1T9+vXjvffe46677qJFixbs2LGDL7/8krVr1x4zlh9++IELL7yQ2NhY7r//fipV\nqsTkyZPp2LEjn3/+OW3atCnyfc3rl19+oVOnTtSpU4dPPvmEE044IXtdixYt6NixIwsXLjzm9S1Z\nsoSWLVuGXVMOzjm9vOq6VoBLTEx0+YqPd65ePed2785/fR7PPPOMAxzgbrrppiLtIyKhKzEx0RX6\nOyKPuLg417Bhw4C+4uLi/HZ9N910k6tUqZJLSkoqcJuDBw8eVbZ8+XJnZm769OnZZQ8//LAzM3fl\nlVfm2nbQoEEuIiLCff/9984556ZOneoiIiLcxo0bs7cZP378UWXFPX9+x81PjRo13F133VXg+sJi\n6dGjh4uOjnYbNmzILtu6daurXr2669ixY3ZZUe7rww8/7CIiItyOHTvcmjVrXMOGDd15553ndu3a\nddS2ERERrlOnToVeV5YBAwa4QYMGOeecW7ZsmRs1apSrX79+9v0vjmP9/GetB1q5Un4fq8akKL78\n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\ntqNHjzJ27Fjatm1LfHw87du3Z8KECfz73/8Oltm1axf9+/cnKSmJiy66iNtuu42tW7eWuM7MmTPx\n+XwcPHiQzMxMmjVrRnJyMmPGjOHMmTPBcl999RWTJ08mLS2N+Ph4WrVqxe233877778fLJOZmUla\nWlqpWIvuEW7fgQMHGD16NMnJyVx88cX88pe/BODIkSMMHjyYpKQkLrnkEpYsWRL2/NzcXO68806S\nkpJISUlh8uTJnD3rvaI4a9YsHnnkEQAuv/xyfD4fcXFxwV717OxsfD5fcDvSOqtMvYE3p9aRI0dK\nXaM+qCs9JjjnngGeKePYLSHbpVvxeQidTG327NnVcVkRkZiTl5fH9ddfz6lTp7j33nvp1KkTn376\nKatWreL06dMkJibyj3/8g549e5KUlMS0adNo1KgRWVlZ9O7dm3fffZfrr/cm2C56x+LOO++kffv2\nzJ8/n507d7Js2TJatWrF448/DsC9997La6+9xn333Ud6ejqff/45f/3rX9m7dy/f/e53g9cK985G\nuP1F2yNGjKBz584sWLCAN998k7lz59K8eXOysrK49dZbWbhwIcuXL+fhhx/me9/7HjfffHOpuNPS\n0pg/fz7vvfceS5cu5cSJE2RnZzN06FD279/PypUreeqpp2jRogUALVu2DBvXnj17IqqzytQbQHp6\nOr179+aPf/zjef17xzTnnD5et9x1gNuxY4crMmjQIAc4wM2ePduJSMO1Y8cOF/o3oj7JyMhwjRo1\ncjt37iyzzODBg118fLw7fPhwcF9eXp5LTEx0vXv3Du6bOXOmMzP305/+tMT5Q4cOdS1btgxuJycn\nu/vuu6/cuDIzM11aWlqp/TNnznQ+n6/UPjNzP/vZz4L7CgsLXWpqqouLi3OLFi0K7j9x4oRLSEhw\n99xzT6nzhwwZUuK6EydOdD6fz33wwQfOOecWL17sfD6f++c//1kqruzs7BLHIq2z4vevqN6cc87n\n87lbbrml1P3DOXHihHvooYfc7Nmz3dy5c11WVlZE5xVXUfsvOg5c56r4fVxnekxqW+hkag888ECU\nIxKROuX0adi3r2bvceWVUA3zKTnnWLt2LQMHDqRr165hy/j9fjZu3MiQIUO47LLLgvtbt27NXXfd\nxbJly/jqq69o2rQp4P3f/7333lviGj169GDNmjXBcsnJyWzdupW8vDwuuaTKK4YE7zt27Njgts/n\n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\n", + "text/plain": [ + "" ] + }, + "metadata": {}, + "output_type": "display_data" } - ], - "metadata": { - "kernelspec": { - "name": "python3", - "display_name": "Python 3", - "language": "python" - }, - "language_info": { - "mimetype": "text/x-python", - "nbconvert_exporter": "python", - "name": "python", - "file_extension": ".py", - "version": "3.5.4", - "pygments_lexer": "ipython3", - "codemirror_mode": { - "version": 3, - "name": "ipython" - } - } + ], + "source": [ + "C = S[1]\n", + "K = S[2]\n", + "\n", + "k0 = k_grid[30]\n", + "X = [k0]\n", + "Y = [C[k0]]\n", + "T = [0]\n", + "\n", + "s = 0\n", + "t = 1\n", + "while s<5:\n", + " T.append(t)\n", + " k = K[k0]\n", + " X.append(k)\n", + " c = C[k]\n", + " Y.append(c)\n", + " if k0 == k:\n", + " s += 1\n", + " k0 = k\n", + " t += 1\n", + " \n", + "plt.plot(T, X, color=\"black\", linewidth=2, label=\"capital stock: $k_{t}$\")\n", + "plt.plot(T, Y, color=\"red\", linewidth=1, label=\"consumption: $c_{t}$\")\n", + "plt.plot([t], [k_ss], marker='o', color='black')\n", + "plt.xlabel(\"$t$\", fontsize=14)\n", + "plt.ylabel(\"$c_{t}$, $k_{t}$\", fontsize=14)\n", + "plt.title(\"Path of $c$ and $k$ over time\")\n", + "plt.legend(loc='lower right')\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 2 -} \ No newline at end of file + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/0-pre-requisitos/2-math/otimiza\303\247\303\243o-IV.ipynb" "b/0-pre-requisitos/2-math/otimiza\303\247\303\243o-IV.ipynb" old mode 100644 new mode 100755 index 3f03ee6..b264fe8 --- "a/0-pre-requisitos/2-math/otimiza\303\247\303\243o-IV.ipynb" +++ "b/0-pre-requisitos/2-math/otimiza\303\247\303\243o-IV.ipynb" @@ -1,315 +1,633 @@ { - "cells": [ - { - "metadata": { - "collapsed": true - }, - "cell_type": "markdown", - "source": "# Dynamic Optimization with Uncertainty" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "import math\nimport numpy as np\nfrom scipy import stats, optimize\nimport time\nimport matplotlib.pyplot as plt", - "execution_count": 2, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# parameters\nalpha = .4\nbeta = .8\ndelta = .05\ntheta_H = 1.2\ntheta_L = .8\npi_H = .75\npi_L = .65", - "execution_count": 3, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# utility function\nu = lambda c: math.log(c)", - "execution_count": 4, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# production function\nf = lambda k, A: A*k**alpha", - "execution_count": 5, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# function to calculate distance between two dictionaries with the same indices\ndef dist(V, W):\n d = 0\n for (_, v), (_, w) in zip(V.items(), W.items()):\n d = d + (v-w)**2\n return math.sqrt(d)", - "execution_count": 17, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "nomes = ['Ana', 'Vitória', 'Elisa', 'Rayne']\nnumeros = [3, 6, 9]", - "execution_count": 9, - "outputs": [] - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "for nome, num in zip(nomes, numeros):\n print(nome)\n print(num)", - "execution_count": 10, - "outputs": [ - { - "output_type": "stream", - "text": "Ana\n3\nVitória\n6\nElisa\n9\n", - "name": "stdout" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 1: calculate steady-state" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def steadystate(alpha, beta, delta, theta, f):\n k_ss = (theta*alpha*beta/(1-beta*(1-delta)))**(1/(1-alpha))\n c_ss = f(k_ss, 1)-delta*k_ss\n return (k_ss, c_ss)\n\nk_ss_L = steadystate(alpha, beta, delta, theta_L, f)[0]\nk_ss_H = steadystate(alpha, beta, delta, theta_H, f)[0]\nk_ss = (pi_L*k_ss_L+pi_H*k_ss_H)/(pi_L+pi_H)\nc_ss = (pi_L*f(k_ss, theta_L)+pi_H**f(k_ss, theta_H))/(pi_L+pi_H)-delta*k_ss\nprint(\"steady-state values:\\ncapital: {0:.1f}\\nconsumption: {1:.1f}\".format(k_ss, c_ss))", - "execution_count": 11, - "outputs": [ - { - "output_type": "stream", - "text": "steady-state values:\ncapital: 1.7\nconsumption: 0.8\n", - "name": "stdout" - } - ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 2: define a grid for $k$ (and $k^{\\prime}$)" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "g_size = 1000\nkmin = 0\nkmax = max([k_ss_H, k_ss_L])*2\nstep = (kmax-kmin)/g_size\n\nk_grid = np.arange(kmin+step, kmax+step, step)", - "execution_count": 12, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 3: construct maximizer function" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# given a value of k, a state A and a (proposed) value function V,\n# find k' that maximizes V over grid of k. \n\ndef maximizer(k, A, V0, u, f, k_grid):\n \n pi = pi_H\n if A == theta_L:\n pi = pi_L\n \n i = 0\n for K in k_grid:\n \n c = f(k, A)+(1-delta)*k-K\n if c>0:\n i += 1\n v = u(c)+beta*(pi*V0[(K,A)]+(1-pi)*V0[(K,2-A)])\n if i == 1:\n vmax = v\n cmax = c\n kmax = K\n elif v>vmax:\n vmax = v\n cmax = c\n kmax = K\n \n return (vmax, cmax, kmax)", - "execution_count": 13, - "outputs": [] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 4: define initial value function over grid" - }, - { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "# V0 is dictionary. V0(k)=log(k+1)\nV0 = {}\nfor k in k_grid:\n V0[(k, theta_L)] = math.log(k+1)\n V0[(k, theta_H)] = math.log(k+2)", - "execution_count": 14, - "outputs": [] - }, + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dynamic Optimization with Uncertainty" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import numpy as np\n", + "from scipy import stats, optimize\n", + "import time\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# parameters\n", + "alpha = .4\n", + "beta = .8\n", + "delta = .05\n", + "theta_H = 1.2\n", + "theta_L = .8\n", + "pi_H = .75\n", + "pi_L = .65" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# utility function\n", + "u = lambda c: math.log(c)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# production function\n", + "f = lambda k, A: A*k**alpha" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# function to calculate distance between two dictionaries with the same indices\n", + "def dist(V, W):\n", + " d = 0\n", + " for (_, v), (_, w) in zip(V.items(), W.items()):\n", + " d = d + (v-w)**2\n", + " return math.sqrt(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "nomes = ['Ana', 'Vitória', 'Elisa', 'Rayne']\n", + "numeros = [3, 6, 9]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ { - "metadata": {}, - "cell_type": "markdown", - "source": "## Step 5: iteration over value function" - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "Ana\n", + "3\n", + "Vitória\n", + "6\n", + "Elisa\n", + "9\n" + ] + } + ], + "source": [ + "for nome, num in zip(nomes, numeros):\n", + " print(nome)\n", + " print(num)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 1: calculate steady-state" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": true - }, - "cell_type": "code", - "source": "def bellman(V0, u, f, k_grid, eps=1e-3):\n \n T = {}\n T[0] = (1, 1)\n t0 = time.time()\n d = 1\n i = 0\n \n while d>eps:\n \n V = {}\n C = {}\n K = {}\n \n i += 1\n \n for k in k_grid:\n for A in [theta_L, theta_H]:\n v = maximizer(k, A, V0, u, f, k_grid)\n V[(k, A)] = v[0]\n C[(k, A)] = v[1]\n K[(k, A)] = v[2]\n \n d = abs(dist(V, V0))\n V0 = V\n T[i] = (d, time.time()-t0)\n print('i: {0}, d = {1:.5f} ({2:.2%})'.format(i,d,(d/T[i-1][0])-1))\n \n print('i: {0}, d = {1:.5f})'.format(i,d))\n return (V, C, K, T)", - "execution_count": 15, - "outputs": [] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "steady-state values:\n", + "capital: 1.7\n", + "consumption: 0.8\n" + ] + } + ], + "source": [ + "def steadystate(alpha, beta, delta, theta, f):\n", + " k_ss = (theta*alpha*beta/(1-beta*(1-delta)))**(1/(1-alpha))\n", + " c_ss = f(k_ss, 1)-delta*k_ss\n", + " return (k_ss, c_ss)\n", + "\n", + "k_ss_L = steadystate(alpha, beta, delta, theta_L, f)[0]\n", + "k_ss_H = steadystate(alpha, beta, delta, theta_H, f)[0]\n", + "k_ss = (pi_L*k_ss_L+pi_H*k_ss_H)/(pi_L+pi_H)\n", + "c_ss = (pi_L*f(k_ss, theta_L)+pi_H**f(k_ss, theta_H))/(pi_L+pi_H)-delta*k_ss\n", + "print(\"steady-state values:\\ncapital: {0:.1f}\\nconsumption: {1:.1f}\".format(k_ss, c_ss))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 2: define a grid for $k$ (and $k^{\\prime}$)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "g_size = 1000\n", + "kmin = 0\n", + "kmax = max([k_ss_H, k_ss_L])*2\n", + "step = (kmax-kmin)/g_size\n", + "\n", + "k_grid = np.arange(kmin+step, kmax+step, step)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 3: construct maximizer function" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# given a value of k, a state A and a (proposed) value function V,\n", + "# find k' that maximizes V over grid of k. \n", + "\n", + "def maximizer(k, A, V0, u, f, k_grid):\n", + " \n", + " pi = pi_H\n", + " if A == theta_L:\n", + " pi = pi_L\n", + " \n", + " i = 0\n", + " for K in k_grid:\n", + " \n", + " c = f(k, A)+(1-delta)*k-K\n", + " if c>0:\n", + " i += 1\n", + " v = u(c)+beta*(pi*V0[(K,A)]+(1-pi)*V0[(K,2-A)])\n", + " if i == 1:\n", + " vmax = v\n", + " cmax = c\n", + " kmax = K\n", + " elif v>vmax:\n", + " vmax = v\n", + " cmax = c\n", + " kmax = K\n", + " \n", + " return (vmax, cmax, kmax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 4: define initial value function over grid" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# V0 is dictionary. V0(k)=log(k+1)\n", + "V0 = {}\n", + "for k in k_grid:\n", + " V0[(k, theta_L)] = math.log(k+1)\n", + " V0[(k, theta_H)] = math.log(k+2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Step 5: iteration over value function" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "def bellman(V0, u, f, k_grid, eps=1e-3):\n", + " \n", + " T = {}\n", + " T[0] = (1, 1)\n", + " t0 = time.time()\n", + " d = 1\n", + " i = 0\n", + " \n", + " while d>eps:\n", + " \n", + " V = {}\n", + " C = {}\n", + " K = {}\n", + " \n", + " i += 1\n", + " \n", + " for k in k_grid:\n", + " for A in [theta_L, theta_H]:\n", + " v = maximizer(k, A, V0, u, f, k_grid)\n", + " V[(k, A)] = v[0]\n", + " C[(k, A)] = v[1]\n", + " K[(k, A)] = v[2]\n", + " \n", + " d = abs(dist(V, V0))\n", + " V0 = V\n", + " T[i] = (d, time.time()-t0)\n", + " print('i: {0}, d = {1:.5f} ({2:.2%})'.format(i,d,(d/T[i-1][0])-1))\n", + " \n", + " print('i: {0}, d = {1:.5f})'.format(i,d))\n", + " return (V, C, K, T)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Shazam!" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": true + }, + "outputs": [ { - "metadata": {}, - "cell_type": "markdown", - "source": "## Shazam!" - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "i: 1, d = 19.71450 (1871.45%)\n", + "i: 2, d = 12.85047 (-34.82%)\n", + "i: 3, d = 8.91404 (-30.63%)\n", + "i: 4, d = 6.43776 (-27.78%)\n", + "i: 5, d = 4.77451 (-25.84%)\n", + "i: 6, d = 3.61480 (-24.29%)\n", + "i: 7, d = 2.78258 (-23.02%)\n", + "i: 8, d = 2.16911 (-22.05%)\n", + "i: 9, d = 1.70649 (-21.33%)\n", + "i: 10, d = 1.35120 (-20.82%)\n", + "i: 11, d = 1.07450 (-20.48%)\n", + "i: 12, d = 0.85688 (-20.25%)\n", + "i: 13, d = 0.68456 (-20.11%)\n", + "i: 14, d = 0.54748 (-20.02%)\n", + "i: 15, d = 0.43812 (-19.98%)\n", + "i: 16, d = 0.35071 (-19.95%)\n", + "i: 17, d = 0.28078 (-19.94%)\n", + "i: 18, d = 0.22480 (-19.94%)\n", + "i: 19, d = 0.17998 (-19.94%)\n", + "i: 20, d = 0.14408 (-19.95%)\n", + "i: 21, d = 0.11533 (-19.95%)\n", + "i: 22, d = 0.09232 (-19.96%)\n", + "i: 23, d = 0.07389 (-19.96%)\n", + "i: 24, d = 0.05913 (-19.97%)\n", + "i: 25, d = 0.04732 (-19.97%)\n", + "i: 26, d = 0.03787 (-19.98%)\n", + "i: 27, d = 0.03030 (-19.98%)\n", + "i: 28, d = 0.02424 (-19.99%)\n", + "i: 29, d = 0.01940 (-19.99%)\n", + "i: 30, d = 0.01552 (-19.99%)\n", + "i: 31, d = 0.01242 (-19.99%)\n", + "i: 32, d = 0.00993 (-19.99%)\n", + "i: 33, d = 0.00795 (-19.99%)\n", + "i: 34, d = 0.00636 (-20.00%)\n", + "i: 35, d = 0.00509 (-20.00%)\n", + "i: 36, d = 0.00407 (-20.00%)\n", + "i: 37, d = 0.00326 (-20.00%)\n", + "i: 38, d = 0.00261 (-20.00%)\n", + "i: 39, d = 0.00208 (-20.00%)\n", + "i: 40, d = 0.00167 (-20.00%)\n", + "i: 41, d = 0.00133 (-20.00%)\n", + "i: 42, d = 0.00107 (-20.00%)\n", + "i: 43, d = 0.00085 (-20.00%)\n", + "i: 43, d = 0.00085)\n" + ] + } + ], + "source": [ + "S = bellman(V0, u, f, k_grid)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exploring the results" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ { - "metadata": { - "scrolled": true, - "trusted": true - }, - "cell_type": "code", - "source": "S = bellman(V0, u, f, k_grid)", - "execution_count": 18, - "outputs": [ - { - "output_type": "stream", - "text": "i: 1, d = 19.71450 (1871.45%)\ni: 2, d = 12.85047 (-34.82%)\ni: 3, d = 8.91404 (-30.63%)\ni: 4, d = 6.43776 (-27.78%)\ni: 5, d = 4.77451 (-25.84%)\ni: 6, d = 3.61480 (-24.29%)\ni: 7, d = 2.78258 (-23.02%)\ni: 8, d = 2.16911 (-22.05%)\ni: 9, d = 1.70649 (-21.33%)\ni: 10, d = 1.35120 (-20.82%)\ni: 11, d = 1.07450 (-20.48%)\ni: 12, d = 0.85688 (-20.25%)\ni: 13, d = 0.68456 (-20.11%)\ni: 14, d = 0.54748 (-20.02%)\ni: 15, d = 0.43812 (-19.98%)\ni: 16, d = 0.35071 (-19.95%)\ni: 17, d = 0.28078 (-19.94%)\ni: 18, d = 0.22480 (-19.94%)\ni: 19, d = 0.17998 (-19.94%)\ni: 20, d = 0.14408 (-19.95%)\ni: 21, d = 0.11533 (-19.95%)\ni: 22, d = 0.09232 (-19.96%)\ni: 23, d = 0.07389 (-19.96%)\ni: 24, d = 0.05913 (-19.97%)\ni: 25, d = 0.04732 (-19.97%)\ni: 26, d = 0.03787 (-19.98%)\ni: 27, d = 0.03030 (-19.98%)\ni: 28, d = 0.02424 (-19.99%)\ni: 29, d = 0.01940 (-19.99%)\ni: 30, d = 0.01552 (-19.99%)\ni: 31, d = 0.01242 (-19.99%)\ni: 32, d = 0.00993 (-19.99%)\ni: 33, d = 0.00795 (-19.99%)\ni: 34, d = 0.00636 (-20.00%)\ni: 35, d = 0.00509 (-20.00%)\ni: 36, d = 0.00407 (-20.00%)\ni: 37, d = 0.00326 (-20.00%)\ni: 38, d = 0.00261 (-20.00%)\ni: 39, d = 0.00208 (-20.00%)\ni: 40, d = 0.00167 (-20.00%)\ni: 41, d = 0.00133 (-20.00%)\ni: 42, d = 0.00107 (-20.00%)\ni: 43, d = 0.00085 (-20.00%)\ni: 43, d = 0.00085)\n", - "name": "stdout" - } + "data": { + "image/png": "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KSnppJ4fjL179zJs2DDatWtH165dWbVqFQBt27Zl3759OOeoU6cOU6dOBWD06NEFvpF/9tln9O7dm0suuYSzzz6bcePGkZWVBUDVqlW56667OPfcc/nyyy/55JNP6NChA23btuX666/n2LFjAHzwwQe0bNmSnj178sYbb2S/9oQJE5g4MWcub5s2bdiyZQsAU6dOpV27dpxzzjmMHj2axYsX8/bbbzN+/Hjat2/P5s2bGTNmDLNnz+b999/nsssuy9PmIUOGAJCUlMTu3bsL/M1Gjx7NW2+9lf2cq666irfffjvo321JxW9A+P/h1q7tbTuMCdLatWvp1KlTnvuqV69Oo0aN2LRpEwBLly5l+vTprFy5klmzZpGamsrDDz/MWWedxcqVK3n00UcLvO6aNWuYMWMGS5cu5c4776Ry5cqsWLGCbt26ZX8YFyWY50+aNIlJkyYV+Tp33303HTp0YNWqVTz44INcc801APTo0YNFixaxdu1amjRpwsKFCwH46quv6Nq1a4HXWbp0KY899hirV69m8+bN2R/y6enptGnThiVLlpCcnMyYMWOYOXMmq1evJiMjg+eee46jR49yww038M4777Bw4UJ++umnYt//2rVreeCBB5g/fz7ffPMNTz31FN27d2fo0KE8+uijrFy5krPOOit7+/79+/PVV1+R7jtbZubMmYwaNSrPa+b/m/3ud7/jpZdeAmD//v0sXryYgQNDWpEIiOeA8K87WquWt+0w0cm50FyK3KULeFZK7vv79+9PnTp1qFSpEsOHD+eLL74o9q2cd955VKtWjXr16lGjRo3sb7Nt27bN/oZc2uePGzeOcePGFfk6X3zxBaNHjwbg/PPPZ8+ePezfv59evXqxYMECFixYwO9//3tWr17Njh07qF27NlWrVi3wOl26dKFJkyYkJCRwxRVXZP8OEhISGDFiBAAbN26kcePGNPcV6rz22mtZsGABGzZsoHHjxjRr1gwR4eqrry72/c+fP5+RI0dSt25dAGoX86WzfPnyDBgwgHfeeYeMjAzee+89UlJSinxOnz592LRpE7/88guvvPIKI0aMoHz50J9jFJ8BkZUF+/frzzVretsWY4LUunXr7MM8fgcOHGD79u3Z31DzB0gwpzlWzFVJoFy5ctm3y5UrR0ZGBqAfav5DNflnkgfz/GC4AAEpIvTu3ZuFCxey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\n", + "text/plain": [ + "
" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Exploring the results" - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "V = S[0]\n", + "X = []\n", + "Y = []\n", + "Z = []\n", + "\n", + "for k in k_grid:\n", + " if k < 1.5*k_ss:\n", + " X.append(k)\n", + " Y.append(V[(k, theta_L)])\n", + " Z.append(V[(k, theta_H)])\n", + " \n", + "plt.plot(X, Y, color=\"red\", linewidth=2, label=\"Optimum: low productivity\")\n", + "plt.plot(X, Z, color=\"blue\", linewidth=2, label=\"Optimum: high productivity\")\n", + "plt.xlabel(\"$k$\", fontsize=14)\n", + "plt.ylabel(\"$V$\", fontsize=14)\n", + "plt.title(\"Value Function\")\n", + "plt.legend(loc='lower right')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "V = S[0]\nX = []\nY = []\nZ = []\n\nfor k in k_grid:\n if k < 1.5*k_ss:\n X.append(k)\n Y.append(V[(k, theta_L)])\n Z.append(V[(k, theta_H)])\n \nplt.plot(X, Y, color=\"red\", linewidth=2, label=\"Optimum: low productivity\")\nplt.plot(X, Z, color=\"blue\", linewidth=2, label=\"Optimum: high productivity\")\nplt.xlabel(\"$k$\", fontsize=14)\nplt.ylabel(\"$V$\", fontsize=14)\nplt.title(\"Value Function\")\nplt.legend(loc='lower right')\nplt.show()", - "execution_count": 12, - "outputs": [ - { - "data": { - "image/png": "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KSnppJ4fjL179zJs2DDatWtH165dWbVqFQBt27Zl3759OOeoU6cOU6dOBWD06NEFvpF/9tln9O7dm0suuYSzzz6bcePGkZWVBUDVqlW56667OPfcc/nyyy/55JNP6NChA23btuX666/n2LFjAHzwwQe0bNmSnj178sYbb2S/9oQJE5g4MWcub5s2bdiyZQsAU6dOpV27dpxzzjmMHj2axYsX8/bbbzN+/Hjat2/P5s2bGTNmDLNnz+b999/nsssuy9PmIUOGAJCUlMTu3bsL/M1Gjx7NW2+9lf2cq666irfffjvo321JxW9A+P/h1q7tbTuMCdLatWvp1KlTnvuqV69Oo0aN2LRpEwBLly5l+vTprFy5klmzZpGamsrDDz/MWWedxcqVK3n00UcLvO6aNWuYMWMGS5cu5c4776Ry5cqsWLGCbt26ZX8YFyWY50+aNIlJkyYV+Tp33303HTp0YNWqVTz44INcc801APTo0YNFixaxdu1amjRpwsKFCwH46quv6Nq1a4HXWbp0KY899hirV69m8+bN2R/y6enptGnThiVLlpCcnMyYMWOYOXMmq1evJiMjg+eee46jR49yww038M4777Bw4UJ++umnYt//2rVreeCBB5g/fz7ffPMNTz31FN27d2fo0KE8+uijrFy5krPOOit7+/79+/PVV1+R7jtbZubMmYwaNSrPa+b/m/3ud7/jpZdeAmD//v0sXryYgQNDWpEIiOeA8K87WquWt+0w0cm50FyK3KULeFZK7vv79+9PnTp1qFSpEsOHD+eLL74o9q2cd955VKtWjXr16lGjRo3sb7Nt27bN/oZc2uePGzeOcePGFfk6X3zxBaNHjwbg/PPPZ8+ePezfv59evXqxYMECFixYwO9//3tWr17Njh07qF27NlWrVi3wOl26dKFJkyYkJCRwxRVXZP8OEhISGDFiBAAbN26kcePGNPcV6rz22mtZsGABGzZsoHHjxjRr1gwR4eqrry72/c+fP5+RI0dSt25dAGoX86WzfPnyDBgwgHfeeYeMjAzee+89UlJSinxOnz592LRpE7/88guvvPIKI0aMoHz50J9jFJ8BkZUF+/frzzVretsWY4LUunXr7MM8fgcOHGD79u3Z31DzB0gwpzlWzFVJoFy5ctm3y5UrR0ZGBqAfav5DNflnkgfz/GC4AAEpIvTu3ZuFCxeycOFC+vbtS7169Zg9eza9evUK+DqF/Q4SExNJSEgodF+FPd8v9+8Acn4PhQV3UUaNGsVrr73G/Pnz6dy5M9WqVSv2OaNHj2b69Om89NJL2YcZQy0+A2L/fv22Vr06+P7BGBPpLrjgAg4fPpx92CYzM5Nbb72VMWPGULlyZQA+/vhj9u7dy5EjR5gzZw49evSgWrVqHDx4sFT7TkpKYtmyZQAhG+Du3bs306dPB/S4fN26dalevToNGzZk9+7dfPfddzRp0oSePXsyceLEQgNi6dKl/PDDD2RlZTFz5kx69uxZYJuWLVuyZcuW7ENz06ZNo0+fPrRs2ZIffviBzZs3A/DKK69kPycpKYnly5cDsHz5cn744QdA/y6vvfYae/boAmT+cZeifu99+/Zl+fLlvPDCCwUOLxX23DFjxvDkk08C+mUhHOIzIPzjD3Z4yUQREeHNN99k1qxZNGvWjObNm5OYmMiDDz6YvU3Pnj0ZPXo07du3Z8SIESQnJ1OnTh169OhBmzZtGD9+fIn2fdttt/Hcc8/RvXt3du/efdLPD2YMYsKECaSmptKuXTvuuOMOXn755ezHzj333OzDQb169WLHjh0BP/gBunXrxh133EGbNm1o3Lgxl1xySYFtEhMTeemll7j00ktp27Yt5cqVY9y4cSQmJjJ58mQGDRpEz549OfPMM7OfM2LECPbu3Uv79u157rnnstvTunVr7rzzTvr06cM555zDLbfcAsDll1/Oo48+SocOHbIDxy8hIYHBgwfz/vvvBzyNNtDf7De/+Q2tWrUKW+8BQIrqakW65ORkl7/LHZTUVOjcGTp0AN83AmOKs379elq1auV1Mwo1ZcoUUlNTefrpp71uimc+++wzJk6cyLvvhrRajycOHz5M27ZtWb58OTVq1Aj6eYH+3YrIMudccnHPjc8ehA1QG2OiyLx582jZsiU333zzSYVDaUVKqY3wOnBAr6tX97YdxpShMWPGMGbMGK+b4am+ffvSt29fr5tR5vr168e2bdvCvt/47EFkV+ur4m07jDEmgsVnQPjrfVtAGGNMoeIzIKwHYYwxxYrPgMheMaiyt+0wxpgIFp8BYT0IE6Virdz3lClT+OMf/xjwMX/p66LkLiIYLvFUAjw+A8J6ECYKxVu5b3/p63CxEuAFRUxAiMjNIrJRRNaKyL9DujPrQZhS8qDad8yW+965cycDBgygWbNm/O1vf8u+31/6GuC+++6jZcuW9O/fnyuuuCJP2e1Zs2bRpUsXmjdvnl3pNTcrAV5yETEPQkTOA1KAds65YyJyakh3aD0IE4WCLfe9Zs0aKleuTOfOnRk0aBAPP/wwa9asYeXKlQAFKrSuWbOGFStWcPToUZo2bcojjzzCihUr+Otf/8rUqVP5y1/+UmS7gnm+v8xGoIquK1euZMWKFVSsWJEWLVpw880307Bhw+zHU1NTef3111mxYgUZGRl07Ngxz+8hIyODpUuXMnfuXO65556Ah2yWLl3KunXrOPPMMxkwYABvvPEGI0eOzC4Bfu+993L06FGaNWvGJ598QvPmzbnmmmt47rnnGDduHDfccAPz58+nadOmAWsn5ecvAb5o0SLq1q3L3r17qV27NkOHDmXw4MEFDvH179+fG2+8kfT0dKpUqVJoCfDcf8fPP/+cJ554gpSUlOwS4LnLk5SFSOlB/B542Dl3DMA590tI92Y9CFNKHlT7jtly3xdccAE1atQgMTGRs88+m61bt+Z5/IsvviAlJYVKlSpRrVq17Nf3Gz58OACdOnUqtL1WArxkIiUgmgO9RGSJiHwuIp0L21BExopIqoik7tq1q2R7s3kQJgrFarnv3M9PSEgo8Jzi6sX5nx/ouX5WArxkwhYQIjJPRNYEuKSgh7pqAV2B8cBrUshv1zk32TmX7JxLrlevXska4+9B2CEmE0Vivdx3YXr27Mk777zD0aNHOXToEO+9995Jv4aVAC+ZsAWEc66fc65NgMtbQBrwhlNLgSygbsgaYz0IE4Vivdx3YTp37szQoUM555xzGD58OMnJySddsM5KgJeQc87zCzAOuNf3c3NgO75S5EVdOnXq5EqkRw/natVy7rvvSvZ8E5fWrVvndROK9NJLL7mbbrrJ62aExMGDB51zzqWnp7tOnTq5ZcuWBf3cTz/91A0aNChUTfNUenq6a9Kkidu3b1+h2wT6dwukuiA+myPiLCbgReBFEVkDHAeu9b2J0Ahi4M4YEznGjh3LunXrOHr0KNdeey0dO3b0ukmemzdvHtdffz233HJLyEqAx+eCQcaUQKQvGGRMILZgkDFhEs1fqEz8Ke2/VwsIY4KUmJjInj17LCRMVHDOsWfPHhITE0v8GpEyBmFMxGvQoAFpaWmUeP6NMWGWmJhIgwYNSvx8CwhjglShQgUaN27sdTOMCRs7xGSMMSYgCwhjjDEBWUAYY4wJKKrnQYjILmBrsRsGVhc4+ZoB0cveb2yLt/cL8feey/L9numcK7aYXVQHRGmISGowE0Vihb3f2BZv7xfi7z178X7tEJMxxpiALCCMMcYEFM8BMdnrBoSZvd/YFm/vF+LvPYf9/cbtGIQxxpiixXMPwhhjTBEsIIwxxgQU0wEhIgNEZKOIbBKROwI8XlFEZvoeXyIiSeFvZdkK4j2PEZFdIrLSd/mdF+0sCyLyooj84ltoKtDjIiL/4/tdrBKRqF9lJoj33FdE9uf6+94V7jaWFRFpKCKfish6EVkrIn8OsE1M/Y2DfM/h+xsHs+xcNF6ABGAz0AQ4BfgGODvfNn8AJvl+vhyY6XW7w/CexwBPe93WMnq/vYGOwJpCHh8IvA8I0BVY4nWbw/Ce+wLvet3OMnqvpwMdfT9XA74N8O85pv7GQb7nsP2NY7kH0QXY5Jz73jl3HHgVSMm3TQrwsu/n2cAFIiJhbGNZC+Y9xwzn3AJgbxGbpABTnfoKqCkip4endaERxHuOGc65H51zy30/HwTWA2fk2yym/sZBvuewieWAOAPYnut2GgV/0dnbOOcygP1AnbC0LjSCec8AI3zd8dki0jA8TfNEsL+PWNNNRL4RkfdFpLXXjSkLvsO/HYAl+R6K2b9xEe8ZwvQ3juWACNQTyH9ObzDbRJNg3s87QJJzrh0wj5weVCyKtb9vMJajdXbOAf4XmONxe0pNRKoCrwN/cc4dyP9wgKdE/d+4mPcctr9xLAdEGpD723EDYGdh24hIeaAG0d19L/Y9O+f2OOeO+W6+AHQKU9u8EMy/gZjinDvgnDvk+3kuUEFE6nrcrBITkQroB+V059wbATaJub9xce85nH/jWA6Ir4FmItJYRE5BB6HfzrfN28C1vp9HAvOdbxQoShX7nvMdnx2KHuOMVW8D1/jOdOkK7HfO/eh1o0JJRE7zj6OJSBf0//geb1tVMr738X/Aeufc44VsFlN/42Deczj/xjG75KhzLkNE/gh8iJ7d86Jzbq2I3AukOufeRv8Q00RkE9pzuNy7FpdekO/5TyIyFMhA3/MYzxpcSiLyCnpGR10RSQPuBioAOOcmAXPRs1w2AYeB67xpadkJ4j2PBH4vIhnAEeDyKP7S0wMYDawWkZW++/4BNIKY/RsH857D9je2UhvGGGMCiuVDTMYYY0rBAsIYY0xAFhDGGGMCsoAwxhgTkAWEMcaYgCwgjDHGBGQBYUwZEpFHRORjr9thTFmwgDCmbLUHVha7lTFRwALCmLJ1DrDC60YYUxYsIIwpIyJyGvAbfD0IEakiIq+KyPJYWK3QxB8LCGPKTge0Ns5GEWkBLEVrXvVwzm3xsmHGlIQFhDFlpz2wGhgGLAZecM5d7Zw74m2zjCkZK9ZnTBkRkZlAf7SS7lDn3OceN8mYUrEehDFlpz3wBlp+O5qXrjUGsB6EMWVCRCoDB4GuQDNgMtDbvwC9MdEoZhcMMibMzkHXQl7jnPtaRFoB74hIF+fcDo/bZkyJ2CEmY8rGOcB3uQak7wIWAW/7ehfGRB07xGSMMSYg60EYY4wJyALCGGNMQBYQxhhjArKAMMYYE5AFhDHGmIAsIIwxxgRkAWGMMSYgCwhjjDEB/T9XYTDHF4rw7AAAAABJRU5ErkJggg==\n", - "text/plain": "
" - }, - "metadata": {}, - "output_type": "display_data" - } + "data": { + "image/png": "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4EFt166dfvTRR2nnmjJliqqq3nXXXfrII4+oqurHH3+sgwcPPuy9Wb16tdarVy/t+vr166eqqitWrNCqVavq3r179YknntCXXnpJt2/frrGxsdqpUydVVY2Li9NffvnlsPMBOmfOHFVVveaaa3TYsGGqqnrqqafqU089lXZsgwYNdMaMGaqqOnjwYL311lsP23/nnXemxTdq1Ki090ZV9cILL9Tp06frpk2btEqVKvrHH38c8vd98MEH014783ajRo30999/V1XVJ598Mu19yvieZ/y7rl69Wps0aaKqqklJSVqzZk3dvHnzYe9nVg75958CmK8BfHaH8k6iOfCbqv6hqgeAcUC3jAeo6nRV3ZOy+QNQJVTBrVljC8fFxMB996Xs/OUXq+SXkAAdOsCQLJfjdtEmv9JEDr799lu6d+9OhQoVADjhhBMA+P7777niiisAuOqqq5gzZ07acy655BKKFClC3bp1076NN2vWjFGjRjF06FB+/vlnygQwqu6iiy5CRGjQoAEnnngiDRo0oEiRItSrV481a9YAUKRIEXr27AnAlVdeeUgcWZk3bx5xcXFUrFiRY445hj59+jBr1iwAihUrRteuXQE466yz0l7j4osvTrsDyM6cOXPS7rLOPPNMTj31VFatWkXr1q2ZNWsWc+bM4cILL2TXrl3s2bOHNWvWcMYZZxx2nqpVq9KqVassryf1Ordv3862bdto27YtAH379mXWrFmH7U+NJyc//PADbdq0SZuLkPr3zcnll1/OhAkTABg/fnxaXNmpXr065cuXZ+HChXz55Zc0adKE8iEoHBrKJFEZWJdhOz5lX3YGAJ9n9YCIDBSR+SIyPyEhISjBvfaa/X/eowecfDJWwbV/f9izx9aiHj8eihYNymu5wkdVAxqKmPGYY4899pDnA7Rp04ZZs2ZRuXJlrrrqqrRO0IzPyzwmPvU8RYoUOeScRYoUITExMdc4srue7MTExKQ9v2jRotm+xpGct1mzZsyfP5/Zs2fTpk0bmjRpwuuvv85Z2ZTfzxx/xu1SuawImdPf6phjjiE5OTltO/W9DvTvm1HPnj2ZMGECq1atQkSoVatWrs+59tprGT16NKNGjaJ///5H9Hp5FcokkdU7mOW/CBG5EogFhmX1uKqOVNVYVY2tGIQSGP/8Y0kC4MYbsXKvt94K339vkyQ++siK9jmX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\n", + "text/plain": [ + "
" ] - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "C = S[1]\n", + "X = []\n", + "Y = []\n", + "Z = []\n", + "for k in k_grid:\n", + " if k < 1.5*k_ss:\n", + " X.append(k)\n", + " Y.append(C[(k, theta_L)])\n", + " Z.append(C[(k, theta_H)])\n", + "\n", + "plt.plot(X, Y, color=\"red\", linewidth=2, label=\"consumption: low productivity\")\n", + "plt.plot(X, Z, color=\"blue\", linewidth=2, label=\"consumption: high productivity\")\n", + "plt.xlabel(\"$k$\", fontsize=14)\n", + "plt.ylabel(\"$c$\", fontsize=14)\n", + "plt.title(\"Policy Function: $c$\")\n", + "plt.legend(loc='lower right')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "C = S[1]\nX = []\nY = []\nZ = []\nfor k in k_grid:\n if k < 1.5*k_ss:\n X.append(k)\n Y.append(C[(k, theta_L)])\n Z.append(C[(k, theta_H)])\n\nplt.plot(X, Y, color=\"red\", linewidth=2, label=\"consumption: low productivity\")\nplt.plot(X, Z, color=\"blue\", linewidth=2, label=\"consumption: high productivity\")\nplt.xlabel(\"$k$\", fontsize=14)\nplt.ylabel(\"$c$\", fontsize=14)\nplt.title(\"Policy Function: $c$\")\nplt.legend(loc='lower right')\nplt.show()", - "execution_count": 13, - "outputs": [ - { - "data": { - "image/png": "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4EFt166dfvTRR2nnmjJliqqq3nXXXfrII4+oqurHH3+sgwcPPuy9Wb16tdarVy/t+vr166eqqitWrNCqVavq3r179YknntCXXnpJt2/frrGxsdqpUydVVY2Li9NffvnlsPMBOmfOHFVVveaaa3TYsGGqqnrqqafqU089lXZsgwYNdMaMGaqqOnjwYL311lsP23/nnXemxTdq1Ki090ZV9cILL9Tp06frpk2btEqVKvrHH38c8vd98MEH014783ajRo30999/V1XVJ598Mu19yvieZ/y7rl69Wps0aaKqqklJSVqzZk3dvHnzYe9nVg75958CmK8BfHaH8k6iOfCbqv6hqgeAcUC3jAeo6nRV3ZOy+QNQJVTBrVljC8fFxMB996Xs/OUXq+SXkAAdOsCQLJfjdtEmv9JEDr799lu6d+9OhQoVADjhhBMA+P7777niiisAuOqqq5gzZ07acy655BKKFClC3bp1076NN2vWjFGjRjF06FB+/vlnygQwqu6iiy5CRGjQoAEnnngiDRo0oEiRItSrV481a9YAUKRIEXr27AnAlVdeeUgcWZk3bx5xcXFUrFiRY445hj59+jBr1iwAihUrRteuXQE466yz0l7j4osvTrsDyM6cOXPS7rLOPPNMTj31VFatWkXr1q2ZNWsWc+bM4cILL2TXrl3s2bOHNWvWcMYZZxx2nqpVq9KqVassryf1Ordv3862bdto27YtAH379mXWrFmH7U+NJyc//PADbdq0SZuLkPr3zcnll1/OhAkTABg/fnxaXNmpXr065cuXZ+HChXz55Zc0adKE8iEoHBrKJFEZWJdhOz5lX3YGAJ9n9YCIDBSR+SIyPyEhISjBvfaa/X/eowecfDJWwbV/f9izx9aiHj8eihYNymu5wkdVAxqKmPGYY4899pDnA7Rp04ZZs2ZRuXJlrrrqqrRO0IzPyzwmPvU8RYoUOeScRYoUITExMdc4srue7MTExKQ9v2jRotm+xpGct1mzZsyfP5/Zs2fTpk0bmjRpwuuvv85Z2ZTfzxx/xu1SuawImdPf6phjjiE5OTltO/W9DvTvm1HPnj2ZMGECq1atQkSoVatWrs+59tprGT16NKNGjaJ///5H9Hp5FcokkdU7mOW/CBG5EogFhmX1uKqOVNVYVY2tGIQSGP/8Y0kC4MYbsXKvt94K339vkyQ++siK9jmX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\n", - "text/plain": "
" - }, - "metadata": {}, - "output_type": "display_data" - } + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "K = S[2]\n", + "X = []\n", + "Y = []\n", + "Z = []\n", + "W = []\n", + "\n", + "for k in k_grid:\n", + " if k < 1.5*k_ss:\n", + " X.append(k)\n", + " Y.append(K[(k, theta_L)])\n", + " Z.append(K[(k, theta_H)])\n", + " W.append(k)\n", + "\n", + "plt.plot(X, Y, color=\"red\", linewidth=2)\n", + "plt.plot(X, Z, color=\"blue\", linewidth=2)\n", + "plt.plot(X, W, '--', color=\"gray\", linewidth=1)\n", + "plt.xlabel(\"$k$\", fontsize=14)\n", + "plt.ylabel(\"$k^{\\prime}$\", fontsize=14)\n", + "plt.title(\"Policy Function: $k^{\\prime}$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "def shox(A, pi_H, pi_L, theta_H, theta_L):\n", + " \n", + " if A == 1.5:\n", + " pi = pi_H\n", + " else:\n", + " pi = pi_L\n", + " \n", + " x = np.random.binomial(1,pi_H)\n", + " \n", + " return A*x+(2-A)*(1-x)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "K = S[2]\nX = []\nY = []\nZ = []\nW = []\n\nfor k in k_grid:\n if k < 1.5*k_ss:\n X.append(k)\n Y.append(K[(k, theta_L)])\n Z.append(K[(k, theta_H)])\n W.append(k)\n\nplt.plot(X, Y, color=\"red\", linewidth=2)\nplt.plot(X, Z, color=\"blue\", linewidth=2)\nplt.plot(X, W, '--', color=\"gray\", linewidth=1)\nplt.xlabel(\"$k$\", fontsize=14)\nplt.ylabel(\"$k^{\\prime}$\", fontsize=14)\nplt.title(\"Policy Function: $k^{\\prime}$\")\nplt.show()", - "execution_count": 14, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": "
" - }, - "metadata": {}, - "output_type": "display_data" - } + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] - }, - { - "metadata": {}, - "cell_type": "markdown", - "source": "## Simulation" - }, - { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "def shox(A, pi_H, pi_L, theta_H, theta_L):\n \n if A == 1.5:\n pi = pi_H\n else:\n pi = pi_L\n \n x = np.random.binomial(1,pi_H)\n \n return A*x+(2-A)*(1-x)", - "execution_count": 15, - "outputs": [] - }, + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "np.random.seed(1910)\n", + "C = S[1]\n", + "K = S[2]\n", + "\n", + "k0 = k_grid[30]\n", + "a0 = theta_H\n", + "n = 200\n", + "\n", + "X = [k0]\n", + "Y = [C[(k0, a0)]]\n", + "A = [a0]\n", + "T = [0]\n", + "\n", + "s = 0\n", + "for t in np.arange(0,n):\n", + " T.append(t)\n", + " a0 = shox(a0, pi_H, pi_L, theta_H, theta_L)\n", + " A.append(a0)\n", + " k = K[(k0, a0)]\n", + " X.append(k)\n", + " c = C[(k, a0)]\n", + " Y.append(c)\n", + " k0 = k\n", + " \n", + "plt.plot(T, X, color=\"black\", linewidth=1.5, label=\"capital stock: $k_{t}$\")\n", + "plt.plot(T, Y, color=\"red\", linewidth=1, label=\"consumption: $c_{t}$\")\n", + "plt.xlabel(\"$t$\", fontsize=14)\n", + "plt.ylabel(\"$c_{t}$, $k_{t}$\", fontsize=14)\n", + "plt.title(\"Path of $c$ and $k$ over time\")\n", + "plt.legend(loc=\"lower center\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": {}, + "outputs": [ { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "np.random.seed(1910)\nC = S[1]\nK = S[2]\n\nk0 = k_grid[30]\na0 = theta_H\nn = 200\n\nX = [k0]\nY = [C[(k0, a0)]]\nA = [a0]\nT = [0]\n\ns = 0\nfor t in np.arange(0,n):\n T.append(t)\n a0 = shox(a0, pi_H, pi_L, theta_H, theta_L)\n A.append(a0)\n k = K[(k0, a0)]\n X.append(k)\n c = C[(k, a0)]\n Y.append(c)\n k0 = k\n \nplt.plot(T, X, color=\"black\", linewidth=1.5, label=\"capital stock: $k_{t}$\")\nplt.plot(T, Y, color=\"red\", linewidth=1, label=\"consumption: $c_{t}$\")\nplt.xlabel(\"$t$\", fontsize=14)\nplt.ylabel(\"$c_{t}$, $k_{t}$\", fontsize=14)\nplt.title(\"Path of $c$ and $k$ over time\")\nplt.legend(loc=\"lower center\")\nplt.show()", - "execution_count": 16, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": "
" - }, - "metadata": {}, - "output_type": "display_data" - } + "data": { + "image/png": "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\nSJKkbP0/5A0l25iCnOYAAAAASUVORK5CYII=\n", + "text/plain": [ + "" ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "metadata": { - "trusted": false - }, - "cell_type": "code", - "source": "import numpy.ma as ma\n\nmask_H = []\nmask_L = []\nK_H = []\nK_L = []\nB = list(A)\nB.append(B[n])\n\nY = []\n\nfor i, a in enumerate(A):\n \n b = B[i+1]\n \n if a == theta_H and b == theta_H:\n mask_H.append(0)\n mask_L.append(1)\n elif a == theta_L and b == theta_L:\n mask_H.append(1)\n mask_L.append(0)\n elif a != b:\n mask_H.append(0)\n mask_L.append(0)\n \n K_H.append(k_ss_H)\n K_L.append(k_ss_L)\n Y.append(f(X[i], a))\n\nX_H = ma.masked_array(X, mask=mask_H)\nX_L = ma.masked_array(X, mask=mask_L)\n\nY_H = ma.masked_array(Y, mask=mask_H)\nY_L = ma.masked_array(Y, mask=mask_L)\n\nplt.plot(T, X_H, color=\"blue\", lw=1)\nplt.plot(T, X_L, color=\"red\", lw=1)\nplt.plot(T, K_H, '--', color=\"blue\", lw=.5)\nplt.plot(T, K_L, '--', color=\"red\", lw=.5)\nplt.xlabel(\"$t$\", fontsize=14)\nplt.ylabel(\"$k_{t}$\", fontsize=14)\nplt.title(\"Path of $k$ over time\")\nplt.show()\n\nplt.plot(T, Y_H, color=\"blue\", lw=1)\nplt.plot(T, Y_L, color=\"red\", lw=1)\nplt.xlabel(\"$t$\", fontsize=14)\nplt.ylabel(\"$k_{t}$\", fontsize=14)\nplt.title(\"Path of $k$ over time\")\nplt.show()", - "execution_count": 164, - "outputs": [ - { - "data": { - "image/png": "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\nSJKkbP0/5A0l25iCnOYAAAAASUVORK5CYII=\n", - "text/plain": "" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\nKVgRERGRUPs/+yZ/uz+HgI8AAAAASUVORK5CYII=\n", - "text/plain": "" - }, - "metadata": {}, - "output_type": "display_data" - } + "data": { + "image/png": "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\nKVgRERGRUPs/+yZ/uz+HgI8AAAAASUVORK5CYII=\n", + "text/plain": [ + "" ] + }, + "metadata": {}, + "output_type": "display_data" } - ], - "metadata": { - "kernelspec": { - "name": "python3", - "display_name": "Python 3", - "language": "python" - }, - "language_info": { - "mimetype": "text/x-python", - "nbconvert_exporter": "python", - "name": "python", - "pygments_lexer": "ipython3", - "version": "3.5.4", - "file_extension": ".py", - "codemirror_mode": { - "version": 3, - "name": "ipython" - } - } + ], + "source": [ + "import numpy.ma as ma\n", + "\n", + "mask_H = []\n", + "mask_L = []\n", + "K_H = []\n", + "K_L = []\n", + "B = list(A)\n", + "B.append(B[n])\n", + "\n", + "Y = []\n", + "\n", + "for i, a in enumerate(A):\n", + " \n", + " b = B[i+1]\n", + " \n", + " if a == theta_H and b == theta_H:\n", + " mask_H.append(0)\n", + " mask_L.append(1)\n", + " elif a == theta_L and b == theta_L:\n", + " mask_H.append(1)\n", + " mask_L.append(0)\n", + " elif a != b:\n", + " mask_H.append(0)\n", + " mask_L.append(0)\n", + " \n", + " K_H.append(k_ss_H)\n", + " K_L.append(k_ss_L)\n", + " Y.append(f(X[i], a))\n", + "\n", + "X_H = ma.masked_array(X, mask=mask_H)\n", + "X_L = ma.masked_array(X, mask=mask_L)\n", + "\n", + "Y_H = ma.masked_array(Y, mask=mask_H)\n", + "Y_L = ma.masked_array(Y, mask=mask_L)\n", + "\n", + "plt.plot(T, X_H, color=\"blue\", lw=1)\n", + "plt.plot(T, X_L, color=\"red\", lw=1)\n", + "plt.plot(T, K_H, '--', color=\"blue\", lw=.5)\n", + "plt.plot(T, K_L, '--', color=\"red\", lw=.5)\n", + "plt.xlabel(\"$t$\", fontsize=14)\n", + "plt.ylabel(\"$k_{t}$\", fontsize=14)\n", + "plt.title(\"Path of $k$ over time\")\n", + "plt.show()\n", + "\n", + "plt.plot(T, Y_H, color=\"blue\", lw=1)\n", + "plt.plot(T, Y_L, color=\"red\", lw=1)\n", + "plt.xlabel(\"$t$\", fontsize=14)\n", + "plt.ylabel(\"$k_{t}$\", fontsize=14)\n", + "plt.title(\"Path of $k$ over time\")\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 2 -} \ No newline at end of file + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/0-pre-requisitos/3-sql/0_conectando_python_em_db_sql.ipynb b/0-pre-requisitos/3-sql/0_conectando_python_em_db_sql.ipynb old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/aula.ipynb" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/aula.ipynb" new file mode 100755 index 0000000..46d1fb8 --- /dev/null +++ "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/aula.ipynb" @@ -0,0 +1,1211 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "toc": true + }, + "source": [ + "

Table of Contents

\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Science\n", + "\n", + "\n", + "-> Método Cientifico:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "\n", + "HTML('')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Análise exploratória de dados\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "\n", + "## O que é Análise exploratória de Dados?\n", + "\n", + "Em estatística, a **análise exploratória de dados (AED)** é uma abordagem à análise de conjuntos de dados de modo a resumir suas características principais, frequentemente com métodos visuais. Um modelo estatístico pode ou não ser usado, mas primariamente a AED tem como objetivo observar o que os dados podem nos dizer além da modelagem formal ou do processo de teste de hipóteses. A análise exploratória de dados foi promovida pelo estatístico norte-americano John Tukey, que incentivava os estatísticos a explorar os dados e possivelmente formular hipóteses que poderiam levar a novas coletas de dados e experimentos. A **AED** é diferente da análise inicial de dados (AID), que se concentra mais estreitamente em verificar os pressupostos exigidos para ajuste de modelos e teste de hipóteses, além de manusear valores faltantes e fazer transformações de variáveis conforme necessário. A análise exploratória de dados abrange a AID.\n", + "\n", + "A análise exploratória de dados emprega grande variedade de técnicas gráficas e quantitativas, visando maximizar a obtenção de informações ocultas na sua estrutura, descobrir variáveis importantes em suas tendências, detectar comportamentos anômalos do fenômeno, testar se são válidas as hipóteses assumidas, escolher modelos e determinar o número ótimo de variáveis.\n", + "\n", + "Os softwares atualmente disponíveis possibilitam que esta técnica se constitua em uma ferramenta para descobrir quais tendências, relações e padrões podem estar ocultos em uma coleção de dados analisados. Seguindo as diretrizes propostas por Tukey, os investigadores deveriam iniciar sua análise pelo exame dos dados disponíveis e depois decidir qual técnica aplicar para resolver o problema. \n", + "\n", + "### Etapas\n", + "\n", + "(Existe vários frameworks diferentes com essas etapas, e certamenta alguns funcionam melhor que outros dependendo do problema enfrentado. Até mesmo as perguntas mais elementares como \"Entendendo o Problema\" pode ser que não exista em algum caso especifico, então usem como um guia, não como a verdade).\n", + "\n", + "Etapas básicas:\n", + "\n", + "1. **Entendendo o Problema**. De longe a etapa mais importante e potêncialmente a mais dificil do problema\n", + " \n", + "2. **Entendendo os Dados**. Na aula de hoje focaremos nesta etapa. Faremos um overview sobre os dados e analisaremos as medidas de centralidade.\n", + " \n", + "3. **Analise Univariada**. Na próxima aula iremos um pouco além, entendendo mais a fundo as estatisticas descritivas dos dados.\n", + " \n", + "4. **Outliers, Nulos e outros**. Nessa etapa, trataremos os dados para que façam sentido para os nossos algoritmos.\n", + " \n", + "5. **Analise Multivariada**. Aqui vamos entender como as variaveis estão relacionadas entre si.\n", + " \n", + "6. **Inferências e Relações Causais**. Por último vamos responder nossa pergunta\n", + " \n", + " \n", + " \n", + " \n", + "### Problema:\n", + "\n", + "- Muito se fala de desigualdade salarial entre generos. Existe desigualdade? E se sim, de quanto ela é?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Abrindo o arquivo e acessando os dados" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "import csv\n", + "\n", + "\n", + "with open(r'data/data.csv', 'r') as data_csv:\n", + " data = csv.reader(data_csv)\n", + " print(type(data))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['seq', 'id', 'idade', 'sexo', 'anos_estudo', 'cor/raca', 'salario', 'estado_civil', 'regiao']\n", + "['0', '11001901101.0', '53', 'homem', '5.0', 'Parda', '63600.0', '1.0', 'norte']\n", + "['1', '11001901102.0', '49', 'mulher', '8.0', 'Amarela', '', '1.0', 'norte']\n", + "['2', '11001901103.0', '22', 'mulher', '11.0', 'Indigena', '4352.400390625', '0.0', 'nordeste']\n", + "['3', '11001903101.0', '55', 'homem', '15.0', 'Amarela', '96600.0', '1.0', 'norte']\n", + "['4', '11001903102.0', '56', 'mulher', '15.0', 'Amarela', '157800.0', '1.0', 'norte']\n", + "['5', '11001903103.0', '30', 'mulher', '15.0', 'Amarela', '88550.0', '0.0', 'nordeste']\n", + "['6', '11001904101.0', '52', 'mulher', '5.0', 'Branca', '6734.400390625', '0.0', 'norte']\n", + "['7', '11001904104.0', '29', 'homem', '5.0', 'Parda', '14875.20068359375', '0.0', 'norte']\n", + "['8', '11001904105.0', '29', 'mulher', '11.0', 'Parda', '6734.400390625', '0.0', 'norte']\n" + ] + } + ], + "source": [ + "\n", + "with open(r'data/data.csv', 'r') as data_csv:\n", + " data = csv.reader(data_csv)\n", + " \n", + " contador = 0\n", + " for row in data:\n", + " print(row)\n", + " contador = contador + 1\n", + " \n", + "# print(row[2],row[4],row[6])\n", + " if contador == 10:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "list" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(row)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(row[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Medidas de Centralidade\n", + "\n", + "### Média\n", + "\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "Em estatística, média é definida como o valor que mostra para onde se concentram os dados de uma distribuição como o ponto de equilíbrio das frequências em um histograma. Média também é interpretada como um valor significativo de uma lista de números. Os valores de uma lista de números podem ser representados por meio da escolha aleatória de um número. Se todos os números forem iguais, o número escolhido aleatoriamente será a média. Então, a média pode ser calculada por meio da combinação dos números de maneira específica e da geração de um valor significativo. Entretanto, a palavra média é usualmente usada em métodos mais sofisticados como média aritmética, mediana, moda, entre outros.\n", + "\n", + "Seguindo uma definição mais informal de \"média\", pode-se assumir que no campo da estatística, dados possuem posições. Por exemplo, cada valor dos lançamentos de um dado possui sua posição em uma planilha eletrônica. Em estatística, média é uma medida de posição que indica um valor uniforme dos dados. Por exemplo, o conjunto x = { 2 , 1 , 6 , 5 , 10 } possui média aritmética 4,8. Embora 4,8 seja o valor médio, ele não é o valor central definido pela mediana.\n", + "\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "\n", + "A **média** é calculada por:\n", + "\n", + "$$ \\overline x = \\frac{1}{n} \\sum_i x_i $$\n", + "\n", + "Por exemplo, para a mostra 8, 5, 3, -1, e -5, a média é:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Somando 8 + 0 = 8\n", + "Somando 5 + 8 = 13\n", + "Somando 3 + 13 = 16\n", + "Somando -1 + 16 = 15\n", + "Somando -5 + 15 = 10\n", + "\n", + "média: 2.0\n" + ] + } + ], + "source": [ + "numbers = [8,5,3,-1,-5]\n", + "\n", + "somatorio = 0\n", + "for number in numbers:\n", + " somatorio += number\n", + " print(f'Somando {number} + {somatorio-number} = {somatorio}')\n", + " \n", + "media = somatorio/len(numbers)\n", + "print('\\nmédia:',media)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Fazendo a média com nosso arquivo original" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Média da coluna Idade: 41.67\n" + ] + } + ], + "source": [ + "with open(r'data/data.csv', 'r') as data_csv:\n", + " data = csv.reader(data_csv)\n", + " \n", + " lista_exemplo = []\n", + " somatorio = 0\n", + " for i, line in enumerate(data):\n", + " if i < 10 and i>0:\n", + " somatorio += int(line[2])\n", + " lista_exemplo.append(line[2])\n", + " \n", + "\n", + "media = round(somatorio/len(lista_exemplo),2)\n", + "\n", + "print(f'Média da coluna Idade: {media}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Calculando a média de Salario, anos de estudo e idade no mesmo código." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['0', '11001901101.0', '53', 'homem', '5.0', 'Parda', '63600.0', '1.0', 'norte']\n", + "['1', '11001901102.0', '49', 'mulher', '8.0', 'Amarela', '', '1.0', 'norte']\n" + ] + }, + { + "ename": "ValueError", + "evalue": "could not convert string to float: ", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[0msomatorio_idade\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrow\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[0msomatorio_estudo\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrow\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 16\u001b[1;33m \u001b[0msomatorio_salario\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrow\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 17\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 18\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: could not convert string to float: " + ] + } + ], + "source": [ + "somatorio_idade = 0\n", + "somatorio_estudo = 0\n", + "somatorio_salario = 0\n", + "\n", + "\n", + "with open(r'data/data.csv', 'r') as data_csv:\n", + " data = csv.reader(data_csv)\n", + " \n", + " lista_exemplo = []\n", + " somatorio = 0\n", + " for i, row in enumerate(data):\n", + " if i>0:\n", + " print(row)\n", + " somatorio_idade += int(row[2])\n", + " somatorio_estudo += float(row[4])\n", + " somatorio_salario += float(row[6])\n", + " \n", + " \n", + "media_idade = round(somatorio_idade/i,2)\n", + "media_estudo = round(somatorio_estudo/i,2)\n", + "media_salario = round(somatorio_salario/i,2)\n", + "\n", + "\n", + "print(f'Média da coluna Idade: {media_idade}')\n", + "print(f'Média da coluna Anos de Estudo: {media_estudo}')\n", + "print(f'Média da coluna Salario: {media_salario}')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# As linhas NULAS não podem ser convertidas em valores números?\n", + "# Como resolver ? Podemos criar uma FUNÇÃO que resolve isso?" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def substitui_nulo_por_zero(entrada):\n", + " #\n", + " #\n", + " return saida" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mediana\n", + "\n", + "\n", + "\n", + "Mediana é o valor que separa a metade maior e a metade menor de uma amostra, uma população ou uma distribuição de probabilidade. Em termos mais simples, mediana pode ser o valor do meio de um conjunto de dados. No conjunto de dados {1, 3, 3, 6, 7, 8, 9}, por exemplo, a mediana é 6. Se houver um número par de observações, não há um único valor do meio. Então, a mediana é definida como a média dos dois valores do meio. No conjunto de dados {3, 5, 7, 9}, a mediana é (5 + 7) / 2 = 6.\n", + "\n", + "A mediana é uma medida comum das propriedades de conjuntos de dados em estatística e em teoria das probabilidades, com importância central na estatística robusta. A estatística robusta é mais resistente, com ponto de ruptura de 50%. A mediana não fornece resultados arbitrariamente grandes desde que mais da metade dos dados não esteja contaminada.\n", + "\n", + "A vantagem da mediana em relação à média é que a mediana pode dar uma ideia melhor de um valor típico porque não é tão distorcida por valores extremamente altos ou baixos. Em estudos estatísticos sobre renda familiar ou outros ativos voláteis, a média pode ser distorcida por um pequeno número de valores extremamente altos ou baixos. \n", + "\n", + "Exemplos:\n", + "\n", + "- Ímpar:\n", + "\t\t[1, 2, 3, 5, 7, 8, 9, 10, 15]\n", + "\t\t#elementos: 9\n", + "\t\tA mediana é o valor da posição 5 (a posição do “meio”)\n", + "\t\tMediana = 7\n", + " \n", + " \n", + "- Par: \n", + "\t\t[-5, -1, 0, 1, 2, 3, 8, 20]\n", + "\t\t#elementos: 8\n", + "\t\tA mediana é a média dos valores nas duas posições centrais\n", + "\t\tMediana = (1+2)/2 = 1.5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Função para calcular a Mediana com Dicionarios\n", + "\n", + "Material complementar para dicionarios python: http://excript.com/python/funcoes-dicionarios.html" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " OrderedDict([('seq', '0'), ('id', '11001901101.0'), ('idade', '53'), ('sexo', 'homem'), ('anos_estudo', '5.0'), ('cor/raca', 'Parda'), ('salario', '63600.0'), ('estado_civil', '1.0'), ('regiao', 'norte')])\n", + "\n", + " OrderedDict([('seq', '1'), ('id', '11001901102.0'), ('idade', '49'), ('sexo', 'mulher'), ('anos_estudo', '8.0'), ('cor/raca', 'Amarela'), ('salario', ''), ('estado_civil', '1.0'), ('regiao', 'norte')])\n", + "\n", + " OrderedDict([('seq', '2'), ('id', '11001901103.0'), ('idade', '22'), ('sexo', 'mulher'), ('anos_estudo', '11.0'), ('cor/raca', 'Indigena'), ('salario', '4352.400390625'), ('estado_civil', '0.0'), ('regiao', 'nordeste')])\n", + "\n", + " OrderedDict([('seq', '3'), ('id', '11001903101.0'), ('idade', '55'), ('sexo', 'homem'), ('anos_estudo', '15.0'), ('cor/raca', 'Amarela'), ('salario', '96600.0'), ('estado_civil', '1.0'), ('regiao', 'norte')])\n", + "\n", + " OrderedDict([('seq', '4'), ('id', '11001903102.0'), ('idade', '56'), ('sexo', 'mulher'), ('anos_estudo', '15.0'), ('cor/raca', 'Amarela'), ('salario', '157800.0'), ('estado_civil', '1.0'), ('regiao', 'norte')])\n", + "\n", + " OrderedDict([('seq', '5'), ('id', '11001903103.0'), ('idade', '30'), ('sexo', 'mulher'), ('anos_estudo', '15.0'), ('cor/raca', 'Amarela'), ('salario', '88550.0'), ('estado_civil', '0.0'), ('regiao', 'nordeste')])\n", + "\n", + " OrderedDict([('seq', '6'), ('id', '11001904101.0'), ('idade', '52'), ('sexo', 'mulher'), ('anos_estudo', '5.0'), ('cor/raca', 'Branca'), ('salario', '6734.400390625'), ('estado_civil', '0.0'), ('regiao', 'norte')])\n", + "\n", + " OrderedDict([('seq', '7'), ('id', '11001904104.0'), ('idade', '29'), ('sexo', 'homem'), ('anos_estudo', '5.0'), ('cor/raca', 'Parda'), ('salario', '14875.20068359375'), ('estado_civil', '0.0'), ('regiao', 'norte')])\n", + "\n", + " OrderedDict([('seq', '8'), ('id', '11001904105.0'), ('idade', '29'), ('sexo', 'mulher'), ('anos_estudo', '11.0'), ('cor/raca', 'Parda'), ('salario', '6734.400390625'), ('estado_civil', '0.0'), ('regiao', 'norte')])\n", + "\n", + " OrderedDict([('seq', '9'), ('id', '11001905101.0'), ('idade', '46'), ('sexo', 'mulher'), ('anos_estudo', '15.0'), ('cor/raca', 'Branca'), ('salario', '54300.0'), ('estado_civil', '1.0'), ('regiao', 'norte')])\n" + ] + } + ], + "source": [ + "input_file = csv.DictReader(open(r'data/data.csv', 'r') )\n", + "\n", + "contador = 0\n", + "for row in input_file:\n", + " contador += 1\n", + " if contador <= 10:\n", + " print('\\n', row)" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "OrderedDict([('seq', '66469'),\n", + " ('id', '53117018102.0'),\n", + " ('idade', '37'),\n", + " ('sexo', 'homem'),\n", + " ('anos_estudo', '5.0'),\n", + " ('cor/raca', 'Preta'),\n", + " ('salario', '460.3500061035156'),\n", + " ('estado_civil', '1.0'),\n", + " ('regiao', 'centro-oeste')])" + ] + }, + "execution_count": 190, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "row" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'37'" + ] + }, + "execution_count": 191, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "row['idade']" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'centro-oeste'" + ] + }, + "execution_count": 192, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "row['regiao']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Criando a tabela como um dicionario" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "OrderedDict([('seq', '66469'),\n", + " ('id', '53117018102.0'),\n", + " ('idade', '37'),\n", + " ('sexo', 'homem'),\n", + " ('anos_estudo', '5.0'),\n", + " ('cor/raca', 'Preta'),\n", + " ('salario', '460.3500061035156'),\n", + " ('estado_civil', '1.0'),\n", + " ('regiao', 'centro-oeste')])" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "row" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "dict_table = dict()\n", + "dict_table = {}\n", + "\n", + "with open(r'data/data.csv', 'r') as data_csv:\n", + " data = csv.reader(data_csv)\n", + " header = next(data, None)\n", + " \n", + " for row in data: \n", + " dict_table[row[1]] = {'idade':row[2], 'sexo':row[3], 'anos_estudo':row[4], 'salario': row[6]}" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "'11027211101.0' in dict_table" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'idade': '53', 'sexo': 'homem', 'anos_estudo': '5.0', 'salario': '7128.0'}" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict_table['11027211101.0']" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'5.0'" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict_table['11027211101.0']['anos_estudo']" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [], + "source": [ + "dict_table['11027211101.0']['anos_estudo'] = '6'" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'idade': '53', 'sexo': 'homem', 'anos_estudo': '6', 'salario': '7128.0'}" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict_table['11027211101.0']" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "del dict_table['11027211101.0']" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "'11027211101.0'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdict_table\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'11027211101.0'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m: '11027211101.0'" + ] + } + ], + "source": [ + "dict_table['11027211101.0']" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "def create_text_histogram(txt):\n", + " dictionary = {}\n", + " i=0\n", + " for x in set(txt): # função set\n", + " dictionary[x] = txt.count(x)\n", + " return dictionary" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'m': 2,\n", + " 'p': 2,\n", + " 'r': 4,\n", + " 'g': 1,\n", + " 's': 3,\n", + " 'a': 6,\n", + " 'c': 1,\n", + " 'e': 4,\n", + " 't': 3,\n", + " 'i': 2,\n", + " 'h': 1,\n", + " 'd': 2,\n", + " ' ': 5,\n", + " 'o': 2,\n", + " 'f': 1}" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "create_text_histogram(txt='teste de frase comprida para histograma')" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [], + "source": [ + "contagem_idades = {}\n", + "\n", + "with open(r'data/data.csv', 'r') as data_csv:\n", + " data = csv.reader(data_csv)\n", + " header = next(data, None)\n", + " \n", + " idades = []\n", + " for row in data:\n", + " idades.append(row[2])\n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [], + "source": [ + "histograma_idades = create_text_histogram(idades)" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(histograma_idades)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'27': 2017,\n", + " '36': 1723,\n", + " '60': 951,\n", + " '37': 1712,\n", + " '24': 1892,\n", + " '31': 1796,\n", + " '45': 1627,\n", + " '43': 1699,\n", + " '41': 1552,\n", + " '34': 1737,\n", + " '50': 1461,\n", + " '39': 1759,\n", + " '20': 2104,\n", + " '59': 999,\n", + " '42': 1673,\n", + " '52': 1244,\n", + " '32': 1852,\n", + " '25': 2014,\n", + " '38': 1727,\n", + " '30': 1996,\n", + " '44': 1688,\n", + " '53': 1249,\n", + " '51': 1260,\n", + " '23': 2014,\n", + " '48': 1505,\n", + " '54': 1221,\n", + " '29': 1943,\n", + " '21': 1987,\n", + " '28': 2056,\n", + " '57': 1092,\n", + " '26': 2040,\n", + " '35': 1672,\n", + " '56': 1087,\n", + " '55': 1133,\n", + " '22': 2034,\n", + " '40': 1732,\n", + " '58': 969,\n", + " '46': 1566,\n", + " '47': 1446,\n", + " '49': 1429,\n", + " '33': 1812}" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "histograma_idades" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['27', '36', '60', '37', '24', '31', '45', '43', '41', '34', '50', '39', '20', '59', '42', '52', '32', '25', '38', '30', '44', '53', '51', '23', '48', '54', '29', '21', '28', '57', '26', '35', '56', '55', '22', '40', '58', '46', '47', '49', '33'])" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "histograma_idades.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_values([2017, 1723, 951, 1712, 1892, 1796, 1627, 1699, 1552, 1737, 1461, 1759, 2104, 999, 1673, 1244, 1852, 2014, 1727, 1996, 1688, 1249, 1260, 2014, 1505, 1221, 1943, 1987, 2056, 1092, 2040, 1672, 1087, 1133, 2034, 1732, 969, 1566, 1446, 1429, 1812])" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "histograma_idades.values()" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_items([('27', 2017), ('36', 1723), ('60', 951), ('37', 1712), ('24', 1892), ('31', 1796), ('45', 1627), ('43', 1699), ('41', 1552), ('34', 1737), ('50', 1461), ('39', 1759), ('20', 2104), ('59', 999), ('42', 1673), ('52', 1244), ('32', 1852), ('25', 2014), ('38', 1727), ('30', 1996), ('44', 1688), ('53', 1249), ('51', 1260), ('23', 2014), ('48', 1505), ('54', 1221), ('29', 1943), ('21', 1987), ('28', 2056), ('57', 1092), ('26', 2040), ('35', 1672), ('56', 1087), ('55', 1133), ('22', 2034), ('40', 1732), ('58', 969), ('46', 1566), ('47', 1446), ('49', 1429), ('33', 1812)])" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "histograma_idades.items()" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20: 2104\n", + "21: 1987\n", + "22: 2034\n", + "23: 2014\n", + "24: 1892\n", + "25: 2014\n", + "26: 2040\n", + "27: 2017\n", + "28: 2056\n", + "29: 1943\n", + "30: 1996\n", + "31: 1796\n", + "32: 1852\n", + "33: 1812\n", + "34: 1737\n", + "35: 1672\n", + "36: 1723\n", + "37: 1712\n", + "38: 1727\n", + "39: 1759\n", + "40: 1732\n", + "41: 1552\n", + "42: 1673\n", + "43: 1699\n", + "44: 1688\n", + "45: 1627\n", + "46: 1566\n", + "47: 1446\n", + "48: 1505\n", + "49: 1429\n", + "50: 1461\n", + "51: 1260\n", + "52: 1244\n", + "53: 1249\n", + "54: 1221\n", + "55: 1133\n", + "56: 1087\n", + "57: 1092\n", + "58: 969\n", + "59: 999\n", + "60: 951\n" + ] + } + ], + "source": [ + "for key in sorted(histograma_idades.keys()):\n", + " print(\"%s: %s\" % (key, histograma_idades[key]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Moda\n", + "\n", + "\n", + "Em estatística, moda é uma das medidas de tendência central de um conjunto de dados, assim como a média e a mediana. Ela pode ser definida em moda amostral e populacional.\n", + "\n", + "Em relação à primeira delas, a moda amostral de um conjunto de dados trata do valor que ocorre com maior frequência ou o valor mais comum em um conjunto de dados. Moda é especialmente útil quando os valores ou as observações não são numéricos, casos em que a média e a mediana não podem ser definidas. \n", + "\n", + "Moda amostral não é necessariamente única como média ou mediana. Amostras que possuem uma moda são chamadas unimodais. Por exemplo, a amostra {1, 2, 3, 5, 5, 6, 7} tem moda 5. Amostras que possuem duas modas são chamadas bimodais. Por exemplo, a amostra {1, 2, 3, 5, 5, 6, 6} tem modas 5 e 6. Amostras que possuem várias modas são chamadas multimodais. Por exemplo, a amostra {1, 2 3, 5, 5, 6, 6, 7, 7} tem modas 5, 6 e 7. Amostras que não possuem moda são chamadas amodais. Por exemplo, a amostra {1, 3, 2, 5, 7, 6} não tem moda. \n", + "\n", + "Por exemplo, a moda de [0,1,1,2,2,2,2,3,3,4,4,4,5] é 2.\n", + "\n", + "A moda não é necessariamente única. Pode ser que existam dois valores diferentes que sejam os mais frequentes. Por exemplo, no caso de [10, 13, 13, 20, 20], tanto 13 como 20 são a moda.\n", + "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vamos criar um looping para procurar a pessoa mais velha da base" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A pessoa mais velha na base é o id 11002710101.0, que tem 60 anos.\n" + ] + } + ], + "source": [ + "max_age = None\n", + "oldest_person = None\n", + "\n", + "input_file = csv.DictReader(open(r'data/data.csv', 'r'))\n", + "\n", + "for row in input_file:\n", + " age = int(row[\"idade\"])\n", + " if max_age == None or max_age < age:\n", + " max_age = age\n", + " oldest_person = row[\"id\"]\n", + "\n", + "if max_age != None:\n", + " print(\"A pessoa mais velha na base é o id %s, que tem %d anos.\" % (oldest_person, max_age))\n", + "else:\n", + " print(\"Não tem ninguém nesse arquivo\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prévia da resposta para o nosso problema. As homens ganham mais do que as mulheres? Quanto?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + }, + "toc": { + "base_numbering": 1, + "nav_menu": { + "height": "417px", + "width": "637px" + }, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": true, + "toc_position": { + "height": "calc(100% - 180px)", + "left": "10px", + "top": "150px", + "width": "296.758px" + }, + "toc_section_display": true, + "toc_window_display": true + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/aula1.ipynb" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/aula1.ipynb" deleted file mode 100644 index 7778080..0000000 --- "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/aula1.ipynb" +++ /dev/null @@ -1,350 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Analise exploratória de dados com Python\n", - "\n", - "**Primeiros passos**\n", - "\n", - "### Habilidades em Python:\n", - "- Iteradores;\n", - "- Condicionais;\n", - "- funções.\n", - " \n", - "### Habilidades em Estatistica:\n", - "- As diferentes formas de centralidade\n", - "\n", - "### Habilidade de Negócios:\n", - "- Pensando no problema a ser respondido\n", - "---> Homens ganham mais do que mulheres nesse dataset?\n", - "\n", - "\n", - "# O que é análise exploratória de dados\n", - ".\\\n", - "..\n", - "\n", - ".\n", - ".\n", - ".\n", - ".\n", - ".\n", - ".\n", - ".\n", - ".\n", - ".\n", - "\n", - "### Etapas\n", - ".\n", - ".\n", - ".\n", - ".\n", - ".\n", - "\n", - ".\n", - ".\n", - ".\n", - ".\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Abrindo arquivos com python" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['', 'id', 'idade', 'sexo', 'anos_estudo', 'cor/raca', 'salario', 'estado_civil', 'regiao']\n", - "['0', '11001901101.0', '53', 'homem', '5.0', 'Parda', '63600.0', '1.0', 'norte']\n", - "['1', '11001901102.0', '49', 'mulher', '8.0', 'Amarela', '', '1.0', 'norte']\n", - "['2', '11001901103.0', '22', 'mulher', '11.0', 'Indigena', '4352.400390625', '0.0', 'nordeste']\n", - "['3', '11001903101.0', '55', 'homem', '15.0', 'Amarela', '96600.0', '1.0', 'norte']\n", - "['4', '11001903102.0', '56', 'mulher', '15.0', 'Amarela', '157800.0', '1.0', 'norte']\n", - "['5', '11001903103.0', '30', 'mulher', '15.0', 'Amarela', '88550.0', '0.0', 'nordeste']\n", - "['6', '11001904101.0', '52', 'mulher', '5.0', 'Branca', '6734.400390625', '0.0', 'norte']\n", - "['7', '11001904104.0', '29', 'homem', '5.0', 'Parda', '14875.20068359375', '0.0', 'norte']\n", - "['8', '11001904105.0', '29', 'mulher', '11.0', 'Parda', '6734.400390625', '0.0', 'norte']\n", - "['9', '11001905101.0', '46', 'mulher', '15.0', 'Branca', '54300.0', '1.0', 'norte']\n", - "['10', '11001905102.0', '52', 'homem', '11.0', 'Branca', '42768.0', '1.0', 'norte']\n", - "['11', '11001905103.0', '22', 'mulher', '13.0', 'Branca', '34500.0', '0.0', 'norte']\n", - "['12', '11001907101.0', '26', 'mulher', '11.0', 'Parda', '981.0', '1.0', 'norte']\n", - "['13', '11001907102.0', '20', 'homem', '7.0', 'Parda', '1581.5999755859375', '1.0', 'norte']\n", - "['14', '11001908101.0', '30', 'mulher', '5.0', 'Parda', '5136.0', '1.0', 'norte']\n", - "['15', '11001908102.0', '48', 'homem', '5.0', 'Parda', '', '1.0', 'norte']\n", - "['16', '11001909101.0', '30', 'mulher', '5.0', 'Parda', '', '0.0', 'norte']\n", - "['17', '11001910101.0', '27', 'mulher', '6.0', 'Parda', '3712.0', '0.0', 'norte']\n", - "['18', '11001911101.0', '33', 'homem', '6.0', 'Parda', '10256.7998046875', '1.0', 'norte']\n", - "['19', '11001911102.0', '30', 'mulher', '11.0', 'Parda', '378.0', '1.0', 'norte']\n", - "['20', '11001912102.0', '34', 'mulher', '15.0', 'Preta', '15187.19921875', '0.0', 'norte']\n", - "['21', '11001912103.0', '28', 'mulher', '15.0', 'Preta', '', '0.0', 'norte']\n", - "['22', '11002702101.0', '25', 'homem', '11.0', 'Parda', '16560.0', '1.0', 'norte']\n", - "['23', '11002702102.0', '26', 'mulher', '11.0', 'Preta', '7792.19970703125', '1.0', 'norte']\n", - "['24', '11002703101.0', '32', 'homem', '7.0', 'Preta', '8904.0', '1.0', 'norte']\n", - "['25', '11002703102.0', '36', 'mulher', '5.0', 'Parda', '2805.2000122070312', '1.0', 'norte']\n", - "['26', '11002704101.0', '40', 'homem', '5.0', 'Parda', '24564.0', '1.0', 'norte']\n", - "['27', '11002704102.0', '38', 'mulher', '5.0', 'Parda', '31044.0', '1.0', 'norte']\n", - "['28', '11002706101.0', '27', 'homem', '9.0', 'Parda', '5550.0', '1.0', 'norte']\n", - "['29', '11002706102.0', '25', 'mulher', '11.0', 'Branca', '', '1.0', 'norte']\n", - "['30', '11002707101.0', '42', 'mulher', '15.0', 'Branca', '38844.2783203125', '1.0', 'norte']\n", - "['31', '11002707102.0', '43', 'homem', '15.0', 'Parda', '2034.0', '1.0', 'norte']\n", - "['32', '11002708101.0', '25', 'homem', '8.0', 'Parda', '2476.47998046875', '1.0', 'norte']\n", - "['33', '11002708102.0', '22', 'mulher', '5.0', 'Branca', '', '1.0', 'norte']\n", - "['34', '11002709101.0', '31', 'mulher', '11.0', 'Branca', '7062.0', '0.0', 'norte']\n", - "['35', '11002710101.0', '60', 'mulher', '5.0', 'Parda', '4240.0', '0.0', 'norte']\n", - "['36', '11002710102.0', '24', 'mulher', '11.0', 'Preta', '7233.240234375', '0.0', 'norte']\n", - "['37', '11002710103.0', '22', 'homem', '9.0', 'Parda', '5428.2001953125', '0.0', 'norte']\n", - "['38', '11002711103.0', '28', 'mulher', '11.0', 'Parda', '2180.0', '0.0', 'norte']\n", - "['39', '11002711104.0', '30', 'homem', '11.0', 'Parda', '5203.60009765625', '0.0', 'norte']\n", - "['40', '11002713101.0', '55', 'mulher', '10.0', 'Parda', '5328.599609375', '0.0', 'norte']\n", - "['41', '11002713102.0', '32', 'mulher', '8.0', 'Amarela', '723.2000122070312', '0.0', 'norte']\n", - "['42', '11003501101.0', '35', 'homem', '5.0', 'Parda', '24564.0', '1.0', 'norte']\n", - "['43', '11003501102.0', '31', 'mulher', '5.0', 'Parda', '', '1.0', 'norte']\n", - "['44', '11003502101.0', '40', 'homem', '5.0', 'Parda', '15960.0', '0.0', 'norte']\n", - "['45', '11003505101.0', '58', 'mulher', '5.0', 'Parda', '', '0.0', 'norte']\n", - "['46', '11003506101.0', '48', 'homem', '6.0', 'Parda', '25440.0', '1.0', 'norte']\n", - "['47', '11003506101.0', '27', 'mulher', '5.0', 'Parda', '5940.0', '1.0', 'nordeste']\n", - "['48', '11003507101.0', '24', 'homem', '5.0', 'Parda', '6300.0', '0.0', 'norte']\n", - "['49', '11003508101.0', '31', 'homem', '6.0', 'Branca', '13080.0', '1.0', 'norte']\n", - "['50', '11003508102.0', '30', 'mulher', '5.0', 'Preta', '2199.0', '1.0', 'norte']\n", - "['51', '11003510101.0', '41', 'homem', '5.0', 'Parda', '24091.2001953125', '0.0', 'norte']\n", - "['52', '11003510103.0', '47', 'homem', '5.0', 'Parda', '', '0.0', 'norte']\n", - "['53', '11003510104.0', '32', 'homem', '10.0', 'Parda', '', '0.0', 'norte']\n", - "['54', '11003511101.0', '37', 'homem', '5.0', 'Branca', '52320.0', '1.0', 'norte']\n", - "['55', '11003511102.0', '29', 'mulher', '11.0', 'Parda', '', '1.0', 'nordeste']\n", - "['56', '11003513101.0', '58', 'homem', '5.0', 'Parda', '15120.0', '1.0', 'norte']\n", - "['57', '11003513102.0', '34', 'mulher', '5.0', 'Branca', '0.0', '1.0', 'norte']\n", - "['58', '11004302101.0', '35', 'mulher', '8.0', 'Branca', '3780.0', '0.0', 'norte']\n", - "['59', '11004303102.0', '49', 'mulher', '11.0', 'Branca', '23674.80078125', '0.0', 'norte']\n", - "['60', '11004304101.0', '46', 'homem', '11.0', 'Parda', '23544.0', '1.0', 'norte']\n", - "['61', '11004304102.0', '39', 'mulher', '11.0', 'Branca', '23544.0', '1.0', 'norte']\n", - "['62', '11004305103.0', '26', 'homem', '7.0', 'Parda', '8652.0', '0.0', 'norte']\n", - "['63', '11004305104.0', '23', 'mulher', '10.0', 'Parda', '', '0.0', 'norte']\n", - "['64', '11004307101.0', '27', 'mulher', '5.0', 'Parda', '6489.0', '0.0', 'norte']\n", - "['65', '11004312101.0', '45', 'mulher', '14.0', 'Branca', '19080.0', '0.0', 'norte']\n", - "['66', '11004313101.0', '41', 'homem', '8.0', 'Parda', '10747.80078125', '0.0', 'norte']\n", - "['67', '11005101102.0', '27', 'mulher', '11.0', 'Preta', '3985.449951171875', '0.0', 'norte']\n", - "['68', '11005101103.0', '26', 'homem', '11.0', 'Preta', '3195.5', '0.0', 'norte']\n", - "['69', '11005101104.0', '28', 'homem', '11.0', 'Parda', '31392.0', '0.0', 'norte']\n", - "['70', '11005102101.0', '40', 'homem', '11.0', 'Preta', '13812.48046875', '0.0', 'norte']\n", - "['71', '11005103101.0', '41', 'mulher', '5.0', 'Parda', '', '0.0', 'norte']\n", - "['72', '11005103102.0', '27', 'homem', '7.0', 'Parda', '', '0.0', 'norte']\n", - "['73', '11005103103.0', '26', 'mulher', '11.0', 'Parda', '1278.0', '0.0', 'norte']\n", - "['74', '11005103104.0', '23', 'mulher', '7.0', 'Parda', '1291.5', '0.0', 'norte']\n", - "['75', '11005103105.0', '22', 'homem', '11.0', 'Parda', '3270.0', '0.0', 'norte']\n", - "['76', '11005103106.0', '21', 'mulher', '8.0', 'Parda', '1726.4000244140625', '0.0', 'norte']\n", - "['77', '11005103107.0', '23', 'homem', '11.0', 'Parda', '', '0.0', 'norte']\n", - "['78', '11005103110.0', '25', 'homem', '11.0', 'Parda', '', '0.0', 'norte']\n", - "['79', '11005104101.0', '43', 'mulher', '10.0', 'Indigena', '3296.0', '1.0', 'norte']\n", - "['80', '11005104102.0', '46', 'homem', '11.0', 'Branca', '', '1.0', 'norte']\n", - "['81', '11005104103.0', '21', 'mulher', '11.0', 'Parda', '', '0.0', 'norte']\n", - "['82', '11005104106.0', '27', 'homem', '5.0', 'Parda', '5288.400390625', '0.0', 'norte']\n", - "['83', '11005105101.0', '52', 'homem', '5.0', 'Parda', '5129.400390625', '0.0', 'norte']\n", - "['84', '11005106101.0', '50', 'mulher', '8.0', 'Parda', '5179.2001953125', '0.0', 'norte']\n", - "['85', '11005106102.0', '26', 'homem', '11.0', 'Parda', '', '0.0', 'norte']\n", - "['86', '11005106103.0', '23', 'homem', '13.0', 'Parda', '6104.0', '0.0', 'norte']\n", - "['87', '11005106105.0', '23', 'mulher', '11.0', 'Parda', '', '0.0', 'norte']\n", - "['88', '11005107101.0', '35', 'homem', '8.0', 'Parda', '6092.099853515625', '1.0', 'norte']\n", - "['89', '11005107102.0', '34', 'mulher', '6.0', 'Parda', '9450.0', '1.0', 'norte']\n", - "['90', '11005108101.0', '52', 'homem', '15.0', 'Parda', '', '1.0', 'norte']\n", - "['91', '11005108102.0', '49', 'mulher', '13.0', 'Parda', '21624.0', '1.0', 'norte']\n", - "['92', '11005108103.0', '22', 'homem', '12.0', 'Parda', '', '0.0', 'norte']\n", - "['93', '11005109102.0', '27', 'homem', '9.0', 'Branca', '1671.2000122070312', '0.0', 'norte']\n", - "['94', '11005110101.0', '22', 'homem', '10.0', 'Branca', '4987.600006103516', '0.0', 'norte']\n", - "['95', '11005112101.0', '55', 'homem', '5.0', 'Parda', '6249.599609375', '1.0', 'norte']\n", - "['96', '11005112102.0', '48', 'mulher', '11.0', 'Parda', '6249.599609375', '1.0', 'norte']\n", - "['97', '11005112103.0', '21', 'mulher', '15.0', 'Parda', '6249.599609375', '0.0', 'norte']\n", - "['98', '11005112104.0', '40', 'homem', '11.0', 'Parda', '1562.39990234375', '0.0', 'norte']\n", - "66470\n" - ] - } - ], - "source": [ - "import csv\n", - "\n", - "with open(r'data/data.csv', 'r') as data_csv:\n", - " data = csv.reader(data_csv)\n", - " \n", - " for i, line in enumerate(data):\n", - " if i < 100:\n", - " print(line)\n", - " \n", - " print(i)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Estatistica Descritiva\n", - "\n", - "### Medidas de Centralidade\n", - "\n", - "A **média** (ou primeiro momento) é definida da seguinte maneira:\n", - "\n", - "$$ \\overline x = \\frac{1}{n} \\sum_i x_i $$\n", - "\n", - "Por exemplo, para a mostra 8, 5, 3, -1, e -5, a média é:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Somando 8 + 0 = 8\n", - "Somando 5 + 8 = 13\n", - "Somando 3 + 13 = 16\n", - "Somando -1 + 16 = 15\n", - "Somando -5 + 15 = 10\n", - "\n", - "média: 2.0\n" - ] - } - ], - "source": [ - "numbers = [8,5,3,-1,-5]\n", - "\n", - "somatorio = 0\n", - "for number in numbers:\n", - " somatorio += number\n", - " print(f'Somando {number} + {somatorio-number} = {somatorio}')\n", - " \n", - "media = somatorio/len(numbers)\n", - "print('\\nmédia:',media)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "### refazer com a tabela" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A **Mediana** é o termo \"do meio\" de uma amostra ordenada. E ela depende se a amostra tem uma quantidade pares ou impares de elementos:\n", - "\n", - "- Ímpar:\n", - "\t\t[1, 2, 3, 5, 7, 8, 9, 10, 15]\n", - "\t\t#elementos: 9\n", - "\t\tA mediana é o valor da posição 5 (a posição do “meio”)\n", - "\t\tMediana = 7\n", - " \n", - " \n", - "- Par: \n", - "\t\t[-5, -1, 0, 1, 2, 3, 8, 20]\n", - "\t\t#elementos: 8\n", - "\t\tA mediana é a média dos valores nas duas posições centrais\n", - "\t\tMediana = (1+2)/2 = 1.5\n", - " \n", - " \n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "### refazer com a tabela" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A **moda** é o valor que aparece com maior frequência ou mais vezes na distribuição. \n", - "\n", - "Por exemplo, a moda de [0,1,1,2,2,2,2,3,3,4,4,4,5] é 2.\n", - "\n", - "A moda não é necessariamente única. Pode ser que existam dois valores diferentes que sejam os mais frequentes. Por exemplo, no caso de [10, 13, 13, 20, 20], tanto 13 como 20 são a moda." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "### refazer com a tabela" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "### fazer uma contagem para cada categoria usando dicionario" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/exercicios_dicionarios.ipynb" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/exercicios_dicionarios.ipynb" new file mode 100755 index 0000000..1de7268 --- /dev/null +++ "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/exercicios_dicionarios.ipynb" @@ -0,0 +1,470 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Prática Independente de Python Avançado- SOLUTION" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define-se uma lista de dicionários com que a prática será desenvolvida." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Dicionário de filmes\n", + "\n", + "movies = [\n", + "{\n", + "\"name\": \"Usual Suspects\", \n", + "\"imdb\": 7.0,\n", + "\"category\": \"Thriller\"\n", + "},\n", + "{\n", + "\"name\": \"Hitman\",\n", + "\"imdb\": 6.3,\n", + "\"category\": \"Action\"\n", + "},\n", + "{\n", + "\"name\": \"Dark Knight\",\n", + "\"imdb\": 9.0,\n", + "\"category\": \"Adventure\"\n", + "},\n", + "{\n", + "\"name\": \"The Help\",\n", + "\"imdb\": 8.0,\n", + "\"category\": \"Drama\"\n", + "},\n", + "{\n", + "\"name\": \"The Choice\",\n", + "\"imdb\": 6.2,\n", + "\"category\": \"Romance\"\n", + "},\n", + "{\n", + "\"name\": \"Colonia\",\n", + "\"imdb\": 7.4,\n", + "\"category\": \"Romance\"\n", + "},\n", + "{\n", + "\"name\": \"Love\",\n", + "\"imdb\": 6.0,\n", + "\"category\": \"Romance\"\n", + "},\n", + "{\n", + "\"name\": \"Bride Wars\",\n", + "\"imdb\": 5.4,\n", + "\"category\": \"Romance\"\n", + "},\n", + "{\n", + "\"name\": \"AlphaJet\",\n", + "\"imdb\": 3.2,\n", + "\"category\": \"War\"\n", + "},\n", + "{\n", + "\"name\": \"Ringing Crime\",\n", + "\"imdb\": 4.0,\n", + "\"category\": \"Crime\"\n", + "},\n", + "{\n", + "\"name\": \"Joking muck\",\n", + "\"imdb\": 7.2,\n", + "\"category\": \"Comedy\"\n", + "},\n", + "{\n", + "\"name\": \"What is the name\",\n", + "\"imdb\": 9.2,\n", + "\"category\": \"Suspense\"\n", + "},\n", + "{\n", + "\"name\": \"Detective\",\n", + "\"imdb\": 7.0,\n", + "\"category\": \"Suspense\"\n", + "},\n", + "{\n", + "\"name\": \"Exam\",\n", + "\"imdb\": 4.2,\n", + "\"category\": \"Thriller\"\n", + "},\n", + "{\n", + "\"name\": \"We Two\",\n", + "\"imdb\": 7.2,\n", + "\"category\": \"Romance\"\n", + "}\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 1" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Escrever uma função que pega um filme (movie) e retorna True se sua pontuação IMDB for maior do que 5.5\n", + "# e False, caso contrário\n", + "def filmeMédiaMaior55(movie):\n", + " return movie['imdb'] > 5.5" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Definimos um filme como exemplo\n", + "m = {\n", + "\"name\": \"We Two\",\n", + "\"imdb\": 7.2,\n", + "\"category\": \"Romance\"\n", + "}\n", + "\n", + "# Testamos a nossa função\n", + "filmeMédiaMaior55(m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 2" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Escrever uma função que retorne a sublista dos filmes com pontuação IMDB maior do que 5.5 \n", + "# (Hint: Pode ser útil usar a função definida no ponto anterior).\n", + "def subListaFilmesMédiaMaior55(filmes):\n", + " ret = []\n", + " for f in filmes:\n", + " if filmeMédiaMaior55(f):\n", + " ret.append(f) \n", + " return ret" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def subListaFilmesMédiaMaior55(filmes):\n", + " return [f for f in filmes if filmeMédiaMaior55(f)]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'Usual Suspects', 'imdb': 7.0, 'category': 'Thriller'},\n", + " {'name': 'Hitman', 'imdb': 6.3, 'category': 'Action'},\n", + " {'name': 'Dark Knight', 'imdb': 9.0, 'category': 'Adventure'},\n", + " {'name': 'The Help', 'imdb': 8.0, 'category': 'Drama'},\n", + " {'name': 'The Choice', 'imdb': 6.2, 'category': 'Romance'},\n", + " {'name': 'Colonia', 'imdb': 7.4, 'category': 'Romance'},\n", + " {'name': 'Love', 'imdb': 6.0, 'category': 'Romance'},\n", + " {'name': 'Joking muck', 'imdb': 7.2, 'category': 'Comedy'},\n", + " {'name': 'What is the name', 'imdb': 9.2, 'category': 'Suspense'},\n", + " {'name': 'Detective', 'imdb': 7.0, 'category': 'Suspense'},\n", + " {'name': 'We Two', 'imdb': 7.2, 'category': 'Romance'}]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subListaFilmesMédiaMaior55(movies)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'Usual Suspects', 'imdb': 7.0, 'category': 'Thriller'},\n", + " {'name': 'Hitman', 'imdb': 6.3, 'category': 'Action'},\n", + " {'name': 'Dark Knight', 'imdb': 9.0, 'category': 'Adventure'},\n", + " {'name': 'The Help', 'imdb': 8.0, 'category': 'Drama'},\n", + " {'name': 'The Choice', 'imdb': 6.2, 'category': 'Romance'},\n", + " {'name': 'Colonia', 'imdb': 7.4, 'category': 'Romance'},\n", + " {'name': 'Love', 'imdb': 6.0, 'category': 'Romance'},\n", + " {'name': 'Joking muck', 'imdb': 7.2, 'category': 'Comedy'},\n", + " {'name': 'What is the name', 'imdb': 9.2, 'category': 'Suspense'},\n", + " {'name': 'Detective', 'imdb': 7.0, 'category': 'Suspense'},\n", + " {'name': 'We Two', 'imdb': 7.2, 'category': 'Romance'}]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subListaFilmesMédiaMaior55(movies)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 3" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Escrever uma função que pega o nome de uma categoria e \n", + "# retorna somente os filmes que pertencem a tal categoria.\n", + "def getFilmesDeCategoria(categoria):\n", + " ret = []\n", + " for m in movies:\n", + " if m['category'] == categoria:\n", + " ret.append(m) \n", + " return ret" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def getFilmesDeCategoria(categoria):\n", + " return [f for f in movies if f['category'] == categoria]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'The Choice', 'imdb': 6.2, 'category': 'Romance'},\n", + " {'name': 'Colonia', 'imdb': 7.4, 'category': 'Romance'},\n", + " {'name': 'Love', 'imdb': 6.0, 'category': 'Romance'},\n", + " {'name': 'Bride Wars', 'imdb': 5.4, 'category': 'Romance'},\n", + " {'name': 'We Two', 'imdb': 7.2, 'category': 'Romance'}]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "getFilmesDeCategoria('Romance')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'name': 'The Choice', 'imdb': 6.2, 'category': 'Romance'},\n", + " {'name': 'Colonia', 'imdb': 7.4, 'category': 'Romance'},\n", + " {'name': 'Love', 'imdb': 6.0, 'category': 'Romance'},\n", + " {'name': 'Bride Wars', 'imdb': 5.4, 'category': 'Romance'},\n", + " {'name': 'We Two', 'imdb': 7.2, 'category': 'Romance'}]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "getFilmesDeCategoria('Romance')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 4" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Escrever uma função que receba uma lista de filmes e calcule sua média de pontuação IMDB\n", + "def médiaDeLista(lista):\n", + " soma = 0\n", + " for f in lista:\n", + " soma = soma + f['imdb']\n", + " \n", + " return soma / len(lista)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.486666666666667" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "médiaDeLista(movies)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 5" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# BÔNUS: Escrever uma função que receba uma categoria e compute sua média de pontuação IMDB\n", + "#(Hint: funções já definidas podem ser reutilizadas)\n", + "def médiaDeCategoria(categoria):\n", + " filmesDaCategoria = getFilmesDeCategoria(categoria)\n", + " return médiaDeLista(filmesDaCategoria)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.3" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "médiaDeCategoria('Action')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.44" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "médiaDeCategoria('Romance')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/.DS_Store" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/.DS_Store" new file mode 100755 index 0000000..5008ddf Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/.DS_Store" differ diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/EDA.jpg" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/EDA.jpg" new file mode 100755 index 0000000..36a74fc Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/EDA.jpg" differ diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/analise_dados.png" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/analise_dados.png" new file mode 100755 index 0000000..b3e7d54 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/analise_dados.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/dado.png" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/dado.png" new file mode 100755 index 0000000..99904bf Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/dado.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/media.png" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/media.png" new file mode 100755 index 0000000..5029d6b Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/media.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/mediana.png" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/mediana.png" new file mode 100755 index 0000000..2f75eca Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/mediana.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/moda.png" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/moda.png" new file mode 100755 index 0000000..6fbae7e Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/moda.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/moda2.png" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/moda2.png" new file mode 100755 index 0000000..9c92a1a Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/moda2.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/teorema_limite_central.png" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/teorema_limite_central.png" new file mode 100755 index 0000000..e4e13af Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/teorema_limite_central.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/tipos_de_variaveis.png" "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/tipos_de_variaveis.png" new file mode 100755 index 0000000..3aefaba Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/01-lendo-dados-e-medidas-centralidade/img/tipos_de_variaveis.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/aula.ipynb" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/aula.ipynb" new file mode 100755 index 0000000..ebfd007 --- /dev/null +++ "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/aula.ipynb" @@ -0,0 +1,5344 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "toc": true + }, + "source": [ + "

Estatistica Descritiva para EDA

\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "
\n", + "\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "A estatística descritiva é um ramo da estatística que aplica várias técnicas para descrever e sumarizar um conjunto de dados. Diferencia-se da estatística inferencial, ou estatística indutiva, pelo objectivo: organizar, sumarizar dados ao invés de usar os dados em aprendizado sobre a população. Esse princípio torna a estatística descritiva uma disciplina independente.\n", + "\n", + "Algumas medidas que são normalmente usadas para descrever um conjunto de dados são medidas de tendência central e medidas de variabilidade ou dispersão. Medidas de tendência central incluem média,mediana e moda. Medidas de variabilidade incluem desvio padrão,variância, o valor máximo e mínimo, obliquidade e curtose. \n", + "\n", + "A estatística descritiva fornece resumos simples sobre a amostra e sobre as observações que foram feitas. Tal resumo pode ser quantitativo ou visual. Esses resumos tanto podem formar a base da descrição inicial dos dados, como parte de uma análise estatística mais extensa, ou eles podem ser suficientes por si mesmos.\n", + "\n", + "Por exemplo, a porcentagem de arremessos no basquetebol é uma descrição estatística que resume a performance de um jogador ou time. Esse número é a quantidade de arremessos bem sucedidos dividido pelo o número de arremessos. Por exemplo, um jogador que consegue porcentagem de 33% faz aproximadamente um arremesso bem sucedido em cada três arremessos. A porcentagem descreve ou resume múltiplos eventos discretos. Considere também a média da. Esse número descreve a performance geral de um estudante em um curso.\n", + "\n", + "O uso de descrição e resumo estatísticos tem uma história intensiva e, de fato, a simples tabulação de populações e dados económicos foram a primeira forma em que a estatística apareceu. Mais recentemente, uma colecção de técnicas de resumos apareceram com o título de análise exploratória de dados, um exemplo dessas técnicas é o diagrama de caixa.\n", + "\n", + "No mundo dos negócios, estatística descritiva fornece um resumo útil de muitos tipos de dados. \n", + "\n", + "Já vimos as principais medidas de centralidade:\n", + "\n", + "- Média\n", + "- Mediana\n", + "- Moda\n", + "\n", + "Agora vamos estudar as principais medidas de dispersão:\n", + "\n", + "- Desvio Padrão\n", + "- Variância\n", + "\n", + "Em seguida veremos as principais medidas de associação:\n", + "\n", + "- Covariãncia\n", + "- Correlação" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Medidas de Dispersão\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "Em Estatística, dispersão (também chamada de variabilidade ou espalhamento) mostra o quão esticada ou espremida uma distribuição (teórica ou que define uma amostra) é, e sua representação gráfica de distribuição apresenta estas características. Exemplos comuns de medidas de dispersão estatística são a variância, o desvio padrão e a amplitude interquartil.\n", + "\n", + "Dispersão é contrastada com posição ou tendência central, e juntas elas são as propriedades de distribuições mais usadas. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Desvio Padrão\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "Em probabilidade, o desvio padrão ou desvio padrão populacional (comumente representado pela letra grega σ) é uma medida de dispersão em torno da média populacional de uma variável aleatória. O termo possui também uma acepção específica no campo da estatística, na qual também é chamado de desvio padrão amostral (comumente representado pela letra latina s) e indica uma medida de dispersão dos dados em torno de média amostral. Um baixo desvio padrão indica que os pontos dos dados tendem a estar próximos da média ou do valor esperado. Um alto desvio padrão indica que os pontos dos dados estão espalhados por uma ampla gama de valores. O desvio padrão populacional ou amostral é a raiz quadrada da variância populacional ou amostral correspondente, de modo a ser uma medida de dispersão que seja um número não negativo e que use a mesma unidade de medida dos dados fornecidos.\n", + "\n", + "Além de expressar a variabilidade da população, o desvio padrão comumente é usado para medir a confiança em cálculos estatísticos e geralmente permite sintetizar os resultados de uma experiência repetida várias vezes. Por exemplo, a margem de erro de um conjunto de dados é determinada pelo cálculo do desvio padrão da média ou do desvio padrão populacional inverso da raiz quadrada do tamanho da amostra, se a mesma pesquisa for repetida várias vezes.\n", + "\n", + "Esta derivação do desvio padrão geralmente é chamada de erro padrão da estimativa ou erro padrão da média (em referência à média). O erro padrão da média é calculado a partir do desvio padrão das médias, as quais poderiam ser computadas a partir de uma população se um número infinito de amostras e uma média para cada amostra fossem considerados. A margem de erro de uma pesquisa é calculada a partir do erro padrão da média (produto do desvio padrão populacional e do inverso da raiz quadrada do tamanho da amostra), e cerca do dobro do erro padrão da média é a metade da largura de 95% do intervalo de confiança para a média (populacional).\n", + "\n", + "O desvio padrão é calculado em todas as áreas que usam probabilidade e estatística, em particular biologia, finanças, física e pesquisas em geral. Em ciência, os pesquisadores comumente reportam o desvio padrão dos dados experimentais. Em geral, apenas os efeitos mais de dois desvios padrões distantes do esperado são considerados estatisticamente significativos – por meio de erro aleatório normal ou variação nas medições podem-se distinguir os efeitos prováveis dos efeitos genuínos. Quando apenas uma amostra dos dados da população está disponível, o termo desvio padrão amostral pode referir-se tanto à quantidade mencionada acima quanto a uma quantidade modificada que seja uma estimativa não enviesada do desvio padrão populacional. Quando o desvio padrão populacional não é conhecido, o seu valor é aproximado por meio do desvio padrão amostral.\n", + "\n", + "O **Desvio Padrão** é a raiz quadrada da variância, para \"retornar\" a variável para sua escala original.\n", + "\n", + "$$ \\sigma = \\sqrt {\\frac{1}{N}\\sum\\limits_{i = 1}^N {\\left( {x_i - \\bar x} \\right)^2 }} $$\n", + "\n", + "Uma vantagem do desvio padrão é que ele é expresso nas mesmas unidades que a distribuição. \n", + "(Por outro lado, a variância tem outras unidades, já que está elevada ao quadrado.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Variância\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "Na teoria da probabilidade e na estatística, a variância de uma variável aleatória ou processo estocástico é uma medida da sua dispersão estatística, indicando \"o quão longe\" em geral os seus valores se encontram do valor esperado.\n", + "\n", + "A variância de uma variável aleatória real é o seu segundo momento central e também o seu segundo cumulante (os cumulantes só diferem dos momentos centrais a partir do 4º grau, inclusive). Sendo o seu valor o quadrado do Desvio Padrão. \n", + "\n", + "A variância (ou segundo momento) tambem é definida como um valor numérico utilizado para descrever quanto variam os números de uma distribuição com relação à média deles. \n", + "\n", + "Por definição, a variância é o quadrado do Desvio Padrão:\n", + " \n", + "$$ \\sigma{_x}^{2} = \\frac{1}{N}\\sum\\limits_{i = 1}^N {\\left( {x_i - \\bar x} \\right)^2 } $$\n", + "\n", + "É a média da diferença elevada ao quadrado entre cada valor e a média. Em outras palavras ela mede o quanto os dados estão distantes de x_barra (média), quanto maior esse número, mais distante da média os valores estão, em média (dividido por n).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Aplicando os conceitos em um exemplo real\n", + "\n", + "Vamos utilizar o mesmos dados já conhecidos para calcular e comparar as métricas aprendidas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analisando Dispersão dos dados do IBGE\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Medidas dispersão para a variável salário\n", + "\n", + "Evidentemente o desvio pacrão e a variância fazem sentido para as variáveis quatitativas ou qualitativas ordinais numéricas com várias categorias. Para nosso exemplo temos idade, anos de estudo e salário." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Média da coluna salario: 19706.79\n" + ] + } + ], + "source": [ + "import csv \n", + "lista_com_salarios = []\n", + "lista_com_idades = list()\n", + "\n", + "with open(r'data/data.csv', 'r') as data_csv:\n", + " data = csv.reader(data_csv)\n", + " \n", + " lista_exemplo = []\n", + " somatorio = 0\n", + " contador = 0\n", + " for i, line in enumerate(data):\n", + " if i>0:\n", + " try: # para evitar os campos nulos\n", + " lista_com_idades.append(float(line[2]))\n", + " lista_com_salarios.append(float(line[6]))\n", + " \n", + " somatorio += float(line[6]) # coluna 6 é a coluna de salario\n", + " contador += 1\n", + " except:\n", + " pass\n", + "\n", + "\n", + "media = round(somatorio/contador,2)\n", + "\n", + "print(f'Média da coluna salario: {media}')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['66469',\n", + " '53117018102.0',\n", + " '37',\n", + " 'homem',\n", + " '5.0',\n", + " 'Preta',\n", + " '460.3500061035156',\n", + " '1.0',\n", + " 'centro-oeste']" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "line" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fazer a formula com base no código acima e na função abaixo:\n", + "\n", + "$$ \\sigma{_x}^{2} = \\frac{1}{N}\\sum\\limits_{i = 1}^N {\\left( {x_i - \\bar x} \\right)^2 } $$\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def calcula_variancia(lista_valores):\n", + " '''\n", + " Escrever o código para calcular a variância\n", + " '''\n", + " \n", + " return variancia" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotando o histograma com matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "plt.hist(lista_com_salario)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Escolhendo a quantidade de bins (o que é bins?)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(lista_com_salario, bins=50)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Escolhendo o range de valores" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(lista_com_salario, bins=50, range=(-100, 75000))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Medidas dispersão para a variável idade" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Medidas dispersão para a variável anos_estudo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exemplo de três curvas com a mesma média e diferentes dispersões" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import scipy\n", + "import scipy.stats as ss\n", + "from scipy.stats import norm\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_formats=['svg']\n", + "\n", + "x_axis = np.arange(-4, 4, 0.001)\n", + "mean, std, std1, std2 = 0, 0.5, 1, 2\n", + "\n", + "plt.plot(x_axis, norm.pdf(x_axis,mean,std), label='std=0.5')\n", + "plt.plot(x_axis, norm.pdf(x_axis,mean,std1), label='std=1')\n", + "plt.plot(x_axis, norm.pdf(x_axis,mean,std2), label='std=2')\n", + "plt.legend(loc='upper left')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Medidas de Associação" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Correlação\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "Em probabilidade e estatística, correlação, dependência ou associação é qualquer relação estatística (causal ou não causal) entre duas variáveis e correlação é qualquer relação dentro de uma ampla classe de relações estatísticas que envolva dependência entre duas variáveis. Por exemplo, a correlação entre a estatura dos pais e a estatura dos pais e dos filhos. Embora seja comumente denotada como a medida de relação entre duas variáveis aleatórias, correlação não implica causalidade. Em alguns casos, correlação não identifica dependência entre as variáveis. Em geral, há pares de variáveis que apresentam forte dependência estatística, mas que possuem correlação nula. Para este casos, são utilizadas outras medidas de dependência.\n", + "\n", + "Informalmente correlação é sinônimo de dependência. Formalmente variáveis são dependentes se não satisfizerem a propriedade matemática da independência probabilística. Em termos técnicos, correlação refere–se a qualquer um dos vários tipos específicos de relação entre os valores médios. Existem diferentes coeficientes de correlação (ρ ou r) para medir o grau de correlação. Um dos coeficientes de correlação mais conhecidos é o coeficiente de correlação de Pearson, obtido pela divisão da covariância de duas variáveis pelo produto dos seus desvios padrão e sensível a uma relação linear entre duas variáveis. Entretanto, há outros coeficientes de correlação mais robustos que o coeficiente de correlação de Pearson. Isto é, mais sensíveis às relações não lineares.\n", + "\n", + "#### Tipos de correlação\n", + "\n", + "Linear:\n", + "- Pearson\n", + "\n", + "Não-lineares:\n", + "- Spearman\n", + "- Kendall (tau)\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "##### Correlação Linear de Pearson\n", + "\n", + "A correlação amostral trata da medida da direção e do grau com que as variáveis X {\\displaystyle X} {\\displaystyle X} e Y {\\displaystyle Y} {\\displaystyle Y} se associam linearmente em uma amostra. Karl Pearson desenvolveu o coeficiente amostral a partir de uma ideia semelhante, porém ligeiramente diferente da de Francis Galton. Então, o coeficiente amostral pode ser chamado de coeficiente produto–momento de Pearson, coeficiente de correlação de Pearson ou simplesmente coeficiente de correlação, que é a medida mais conhecida de dependência entre duas variáveis quantitativa.\n", + "\n", + "A correlação lineaar de Pearson é uma versão padronizada (dividida pelos desvios padrão) da covariância e sempre está entre 1 e -1, portanto pode ser comparada com variaveis que não tem necessáriamente a mesma escala.\n", + "\n", + "$$ \\rho = \\frac{{}\\sum_{i=1}^{n} (x_i - \\overline{x})(y_i - \\overline{y})}\n", + "{\\sqrt{\\sum_{i=1}^{n} (x_i - \\overline{x})^2(y_i - \\overline{y})^2}}$$\n", + "\n", + "##### Correlação de Spearman\n", + "\n", + "A correlação de postos de Spearman é utilizada para a relação entre dados não–lineares. Quando os dados de uma amostra são ordenados de forma crescente, obtém–se uma condição de ordem para que cada elemento ordenado seja um posto.\n", + "\n", + "##### Correlação de Kendall\n", + "\n", + "A correlação de postos de Kendall, também conhecido como τ de Kendall, é uma medida a partir de uma amostra de dados ordenados como a correlação de postos de Spearman. A vantagem de τ de Kendall é a generalização para um coeficiente de correlação parcial. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Covariância\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "Em teoria da probabilidade e na estatística, a covariância, ou variância conjunta, é uma medida do grau de interdependência (ou inter-relação) numérica entre duas variáveis aleatórias. Assim, variáveis independentes têm covariância zero.\n", + "\n", + "A covariância ou variância conjunta é um momento conjunto de primeira ordem das variáveis aleatórias X e Y, centrados nas respectivas médias. É a média do grau de interdependência ou inter-relação numérica linear entre elas. \n", + "\n", + "A covariância é por vezes chamada de medida de dependência linear entre as duas variáveis aleatórias. \n", + "\n", + "Dessa forma, a covariância é definida como uma variância entre duas variáveis distintas.\n", + "\n", + "$$ cov_{x,y} = \\sum_{i=1}^{n} (x_i - \\bar{x})(y_i - \\bar{y})\\quad \\text{(covariance)} $$\n", + "\n", + "$$\\sigma{_x}^{2} = \\sum_{i=1}^{n} (x_i - \\bar{x})^2\\quad \\text{(variance)}\t$$\n", + "\n", + "Vale a pena reforçar o que já foi mencionado acima, que a correlação é uma versão padronizada (dividida pelos desvios padrão) da covariância e sempre está entre 1 e -1, portanto pode ser comparada com variaveis que não tem necessáriamente a mesma escala." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Exemplo com números gerados\n", + "\n", + "Vamos criar duas variáveis aleatórias para utilização nesta parte de cálculo das medidas de associação através no numpy.random, e a partir do gráfico de dispersão (scatter plot) iremos trazer os códigos das funções de cálculo seguidas nos comandos da bilbioteca Scipy.Stats. " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x1 = [1.3, 2.1, 3.4, 3.7, 5.4, 6.3, 7.2, 8.1, 9.9]\n", + "x2 = [8.7, 8.5, 7.6, 6.1, 5.1, 5.7, 3.3, 3.8, 1.7]\n", + "\n", + "plt.scatter(x=x1,\n", + " y=x2)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(1.3, 8.7), (2.1, 8.5), (3.4, 7.6), (3.7, 6.1), (5.4, 5.1)]\n" + ] + } + ], + "source": [ + "xy = list(zip(list(x1),list(x2)))\n", + "print(xy[:5])" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.9693785258717729\n" + ] + } + ], + "source": [ + "metodo_nutella = scipy.stats.pearsonr(x1, x2)\n", + "print(metodo_nutella[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$ \\rho = \\frac{{}\\sum_{i=1}^{n} (x_i - \\overline{x})(y_i - \\overline{y})}\n", + "{\\sqrt{\\sum_{i=1}^{n} (x_i - \\overline{x})^2(y_i - \\overline{y})^2}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "def corr_metodo_raiz(data):\n", + " n = len(data)\n", + " sumx = sum(i[0] for i in data)\n", + " sumy = sum(i[1] for i in data)\n", + " \n", + " sumxSq=sum([i[0]**2.0 for i in data])\n", + " sumySq=sum([i[1]**2.0 for i in data])\n", + " \n", + " pSum=sum([i[0]*i[1] for i in data])\n", + " \n", + " numerador=pSum-(sumx*sumy/n)\n", + " denominador=((sumxSq-pow(sumx,2)/n)*(sumySq-pow(sumy,2)/n))**.5\n", + " \n", + " if denominador==0:\n", + " r=0\n", + " else:\n", + " r=numerador/denominador\n", + " \n", + " return r" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.9693785258717726" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corr_metodo_raiz(xy)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analisando correlação nos dados do IBGE\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "66470 47878\n", + "\n", + "\n", + "[53.0, 49.0, 22.0, 55.0, 56.0]\n", + "[63600.0, 4352.400390625, 96600.0, 157800.0, 88550.0]\n" + ] + } + ], + "source": [ + "import numpy\n", + "\n", + "print(len(lista_com_idades), len(lista_com_salarios))\n", + "print('\\n')\n", + "print(lista_com_idades[:5])\n", + "print(lista_com_salarios[:5])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "47538" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idade_estudo = []\n", + "\n", + "with open(r'data/data.csv', 'r') as data_csv:\n", + " data = csv.reader(data_csv)\n", + " for i, line in enumerate(data):\n", + " observação = [] # cria uma lista em branco a cada iteração\n", + " if i>0:\n", + " try: # para evitar os campos nulos\n", + " observação.append(float(line[2]))\n", + " observação.append(float(line[4]))\n", + " idade_estudo.append(observação)\n", + " except:\n", + " pass\n", + " \n", + "len(estudo_idade)" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[53.0, 5.0],\n", + " [49.0, 8.0],\n", + " [22.0, 11.0],\n", + " [55.0, 15.0],\n", + " [56.0, 15.0],\n", + " [30.0, 15.0],\n", + " [52.0, 5.0],\n", + " [29.0, 5.0],\n", + " [29.0, 11.0],\n", + " [46.0, 15.0]]" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idade_estudo[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.22316633803425154" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "corr_metodo_raiz(idade_estudo)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [], + "source": [ + "lista_com_idades = []\n", + "lista_com_estudo = []\n", + "\n", + "for row in idade_estudo:\n", + " lista_com_idades.append(row[0])\n", + " lista_com_estudo.append(row[1]) " + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(x=lista_com_idades[:1000], y=lista_com_estudo[:1000])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Calculando a correlação de todas as variáveis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def funcao_calcula_correlacoes(dados):\n", + " \n", + " \n", + " \n", + " \n", + " print(var1, var2, corr)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Calculando a correlação de Spearman" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.2420298536078769\n" + ] + } + ], + "source": [ + "from scipy.stats import spearmanr\n", + "\n", + "corr, _ = spearmanr(lista_com_idades, lista_com_estudo)\n", + "print(corr)" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [], + "source": [ + "from math import sqrt\n", + "\n", + "def spearmanRaiz(X, Y):\n", + " n = len(X)\n", + " sigma_x = sigma_y = sigma_xy = 0.0\n", + " sigma_xsq = sigma_ysq = 0.0\n", + " for i in range(0, n-1):\n", + " sigma_x = sigma_x + X[i]\n", + " sigma_y = sigma_y + Y[i]\n", + " sigma_xy = sigma_xy + X[i] * Y[i]\n", + " sigma_xsq = sigma_xsq + X[i] * X[i]\n", + " sigma_ysq = sigma_ysq + Y[i] * Y[i] \n", + " \n", + " num =( n * sigma_xy - sigma_x * sigma_y)\n", + " den = sqrt( [float(n)*sigma_xsq - (sigma_x)^ 2]*[ n*sigma_ysq - (sigma_y) ^ 2] )\n", + " return num/den" + ] + } + ], + "metadata": { + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Estatistica Descritiva para EDA", + "title_sidebar": "Contents", + "toc_cell": true, + "toc_position": { + "height": "914.933px", + "left": "41px", + "top": "110.263px", + "width": "248.117px" + }, + "toc_section_display": true, + "toc_window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/aula1.ipynb" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/aula1.ipynb" deleted file mode 100644 index 61f3ffa..0000000 --- "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/aula1.ipynb" +++ /dev/null @@ -1,1534 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Medidas de Dispersão\n", - "\n", - "A **Variância** (ou segundo momento) é um valor numérico utilizado para descrever quanto variam os números de uma distribuição com relação à média deles. E pode ser definida da seguinte maneira:\n", - " \n", - "$$ \\sigma{_x}^{2} = \\frac{1}{N}\\sum\\limits_{i = 1}^N {\\left( {x_i - \\bar x} \\right)^2 } $$\n", - "\n", - "É a média da diferença elevada ao quadrado entre cada valor e a média.\n", - "Em outras palavras ela mede o quanto os dados estão distantes de x_barra (média), quanto maior esse número, mais distante da média os valores estão, em média (dividido por n).\n", - "\n", - "O **Desvio Padrão** é a raiz quadrada da variância, para \"retornar\" a variável para sua escala original.\n", - "\n", - "$$ \\sigma = \\sqrt {\\frac{1}{N}\\sum\\limits_{i = 1}^N {\\left( {x_i - \\bar x} \\right)^2 }} $$\n", - "\n", - "Uma vantagem do desvio padrão é que ele é expresso nas mesmas unidades que a distribuição. \n", - "(Por outro lado, a variância tem outras unidades, já que está elevada ao quadrado.)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\r\n", - "\r\n", - "\r\n", - "\r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - "\r\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import scipy\n", - "import scipy.stats as ss\n", - "from scipy.stats import norm\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "%matplotlib inline\n", - "%config InlineBackend.figure_formats=['svg']\n", - "\n", - "x_axis = np.arange(-4, 4, 0.001)\n", - "mean, std, std2 = 0, 1, 1.35\n", - "\n", - "plt.plot(x_axis, norm.pdf(x_axis,mean,std), label='normal 0,1')\n", - "plt.plot(x_axis, norm.pdf(x_axis,mean,std2), label='normal 0,3')\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "fazer com exemplos reais" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Medidas de Associação\n", - "\n", - "**Correlação** e **Covariância**\n", - "\n", - "Wikipedia:\n", - "\n", - "Em probabilidade e estatística, correlação, dependência ou associação é qualquer relação estatística (causal ou não causal) entre duas variáveis e correlação é qualquer relação dentro de uma ampla classe de relações estatísticas que envolva dependência entre duas variáveis.Por exemplo, a correlação entre a estatura dos pais e a estatura dos pais e dos filhos. Embora seja comumente denotada como a medida de relação entre duas variáveis aleatórias, correlação não implica causalidade. Em alguns casos, correlação não identifica dependência entre as variáveis. Em geral, há pares de variáveis que apresentam forte dependência estatística, mas que possuem correlação nula. Para este casos, são utilizadas outras medidas de dependência.\n", - "\n", - "\n", - "**Covariância pode ser definida da seguinte forma:**\n", - "\n", - "$$ cov_{x,y} = \\sum_{i=1}^{n} (x_i - \\bar{x})(y_i - \\bar{y})\\quad \\text{(covariance)} $$\n", - "\n", - "$$\\sigma{_x}^{2} = \\sum_{i=1}^{n} (x_i - \\bar{x})^2\\quad \\text{(variance)}\t$$\n", - "\n", - "** Correlação **\n", - "\n", - "A correlação é uma versão padronizada (dividida pelos desvios padrão) da covariância e sempre está entre 1 e -1, portanto pode ser comparada com variaveis que não tem necessáriamente a mesma escala.\n", - "\n", - "\n", - "$$ \\rho = \\frac{{}\\sum_{i=1}^{n} (x_i - \\overline{x})(y_i - \\overline{y})}\n", - "{\\sqrt{\\sum_{i=1}^{n} (x_i - \\overline{x})^2(y_i - \\overline{y})^2}}$$" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "100 100\n", - "[10.55374249 8.29790426 9.69520582 9.30412856 10.0188368 10.76275235\n", - " 8.35069333 9.63132558 10.87050061 9.51223173]\n", - "[ -8.57072606 -10.57115866 -9.90906428 -10.29654157 -16.81454513\n", - " -7.31634713 -6.28246351 -12.7298158 -14.63215864 -10.75692555]\n" - ] - } - ], - "source": [ - "import numpy\n", - "X = np.random.normal(10, 1, 100)\n", - "Y = -X + numpy.random.normal(0, 4, 100)\n", - "\n", - "print(len(X), len(Y))\n", - "print(X[:10])\n", - "print(Y[:10])" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/svg+xml": [ - "\r\n", - "\r\n", - "\r\n", - "\r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - "\r\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(X, Y)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(-0.28401696991395853, 0.004187473404737506)\n" - ] - } - ], - "source": [ - "# calculando correlação.\n", - "metodo_nutella = scipy.stats.pearsonr(X, Y)\n", - "print(metodo_nutella)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[(10.55374248938698, -8.570726060565887), (8.297904255357617, -10.571158661789699), (9.695205824957856, -9.90906428122503), (9.304128562343449, -10.296541574770174), (10.018836797385346, -16.81454512667393)]\n" - ] - } - ], - "source": [ - "xy = list(zip(list(X),list(Y)))\n", - "print(xy[:5])" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "def corr_metodo_raiz(data):\n", - " n = len(data)\n", - " sumx = sum(i[0] for i in data)\n", - " sumy = sum(i[1] for i in data)\n", - " \n", - " sumxSq=sum([i[0]**2.0 for i in data])\n", - " sumySq=sum([i[1]**2.0 for i in data])\n", - " \n", - " pSum=sum([i[0]*i[1] for i in data])\n", - " \n", - " numerador=pSum-(sumx*sumy/n)\n", - " denominador=((sumxSq-pow(sumx,2)/n)*(sumySq-pow(sumy,2)/n))**.5\n", - " \n", - " if denominador==0:\n", - " r=0\n", - " else:\n", - " r=numerador/denominador\n", - " \n", - " return r" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-0.28401696991396297" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "corr_metodo_raiz(xy)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/correla\303\247\303\265es_deepdive.ipynb" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/correla\303\247\303\265es_deepdive.ipynb" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/.DS_Store" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/.DS_Store" new file mode 100755 index 0000000..5008ddf Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/.DS_Store" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/correlacao2.png" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/correlacao2.png" new file mode 100755 index 0000000..b5222b2 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/correlacao2.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/correlacao_tipos.png" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/correlacao_tipos.png" new file mode 100755 index 0000000..d8f0641 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/correlacao_tipos.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/correlacoes_comp.png" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/correlacoes_comp.png" new file mode 100755 index 0000000..61b90d6 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/correlacoes_comp.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/covariancia.png" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/covariancia.png" new file mode 100755 index 0000000..e935cf0 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/covariancia.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/desvio_padrao.png" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/desvio_padrao.png" new file mode 100755 index 0000000..c7f4eca Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/desvio_padrao.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/estatistica_descritiva.png" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/estatistica_descritiva.png" new file mode 100755 index 0000000..1ba3835 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/estatistica_descritiva.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/medidas_associacao.png" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/medidas_associacao.png" new file mode 100755 index 0000000..b7b54c8 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/medidas_associacao.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/medidas_dispersao.png" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/medidas_dispersao.png" new file mode 100755 index 0000000..4d8ca5c Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/medidas_dispersao.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/variancia.png" "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/variancia.png" new file mode 100755 index 0000000..dc19206 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/02-dispers\303\243o-e-associa\303\247\303\243o/img/variancia.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/03-pandas/Pandas Handson Solu\303\247\303\243o.ipynb" "b/1-analise-explorat\303\263ria-basica/03-pandas/Pandas Handson Solu\303\247\303\243o.ipynb" new file mode 100755 index 0000000..da83a83 --- /dev/null +++ "b/1-analise-explorat\303\263ria-basica/03-pandas/Pandas Handson Solu\303\247\303\243o.ipynb" @@ -0,0 +1,2738 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# LAB: Introdução a Pandas 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Introdução\n", + "\n", + "Neste caso usaremos uma versão muito resumida dos dados do [Censo Demográfico (levantamento realizado pelo INDEC)](http://www.indec.gov.ar/bases-de-datos.asp). Trata-se de uma pesquisa contínua cujo objetivo principal é gerar informações sobre o funcionamento do mercado de trabalho.\n", + "\n", + "Utilizaremos apenas algumas variáveis (idade, escolaridade, número de horas trabalhadas, qualificação da tarefa e renda do trabalho) e alguns casos (os empregados, ou seja, aqueles que trabalharam pelo menos uma hora na semana anterior à pesquisa)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.1 Importamos os pacotes a serem usados" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Importamos os dados a serem usados" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('data/data_filt.csv', encoding = 'latin1', engine='python', delimiter=',')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Explorando o dataset\n", + "\n", + "### 2.1. Quantas filas e quantas colunas o dataset tem?" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 23448 entries, 0 to 23447\n", + "Data columns (total 5 columns):\n", + "ch06 23448 non-null int64\n", + "nivel_ed 23448 non-null object\n", + "htot 23448 non-null int64\n", + "calif 23448 non-null object\n", + "p47t 23448 non-null float64\n", + "dtypes: float64(1), int64(2), object(2)\n", + "memory usage: 916.0+ KB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2 Que informação o dataset tem? Imprimir o nome das colunas" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['ch06', 'nivel_ed', 'htot', 'calif', 'p47t'], dtype='object')" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Os nomes das colunas não são muito descritivos a respeito das informações que elas contêm. Vamos tentar mudá-los pela seguinte lista: \n", + "\n", + "['idade', 'escolaridade', 'hs_trabalhadas', 'qualificação_ocupacional', 'renda_ult_mes']" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "df.columns = ['idade', 'escolaridade', 'hs_trabalhadas', 'qualificação_ocupacional', 'renda_ult_mes']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.3 Como o dataset está indexado?" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RangeIndex(start=0, stop=23448, step=1)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.index" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.4 Qual é o tipo da quarta coluna?" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('O')" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.iloc[:,3].dtype" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.4 Qual é a escolaridade mais comum?" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2_Sec. comp y más 14634\n", + "Name: escolaridade, dtype: int64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[\"escolaridade\"].value_counts().head(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.5 E como a população é distribuída segundo a qualificação? " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2_Op./No calif. 17372\n", + "Name: qualificação_ocupacional, dtype: int64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[\"qualificação_ocupacional\"].value_counts().head(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.6 Qual é a renda total da população? " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "190114176.0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['renda_ult_mes'].sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.4 Qual é a renda média da população? " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8107.905834186285" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['renda_ult_mes'].mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Indexando e organizando os dados" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Selecionar a coluna `escolaridade` e `renda_ult_mes` e atribuí-las a um objeto novo chamado `df2`" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "df2 = df[['escolaridade','renda_ult_mes']]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Selecionar as primeiras 20 filas de df2" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
escolaridaderenda_ult_mes
01_H/Sec inc6000.0
12_Sec. comp y más5000.0
22_Sec. comp y más5000.0
31_H/Sec inc11000.0
41_H/Sec inc9500.0
52_Sec. comp y más6000.0
62_Sec. comp y más9000.0
71_H/Sec inc4260.0
81_H/Sec inc3800.0
92_Sec. comp y más10517.0
101_H/Sec inc8300.0
112_Sec. comp y más4900.0
122_Sec. comp y más11000.0
132_Sec. comp y más9000.0
141_H/Sec inc3500.0
151_H/Sec inc8000.0
161_H/Sec inc2500.0
171_H/Sec inc7500.0
181_H/Sec inc5000.0
191_H/Sec inc5500.0
\n", + "
" + ], + "text/plain": [ + " escolaridade renda_ult_mes\n", + "0 1_H/Sec inc 6000.0\n", + "1 2_Sec. comp y más 5000.0\n", + "2 2_Sec. comp y más 5000.0\n", + "3 1_H/Sec inc 11000.0\n", + "4 1_H/Sec inc 9500.0\n", + "5 2_Sec. comp y más 6000.0\n", + "6 2_Sec. comp y más 9000.0\n", + "7 1_H/Sec inc 4260.0\n", + "8 1_H/Sec inc 3800.0\n", + "9 2_Sec. comp y más 10517.0\n", + "10 1_H/Sec inc 8300.0\n", + "11 2_Sec. comp y más 4900.0\n", + "12 2_Sec. comp y más 11000.0\n", + "13 2_Sec. comp y más 9000.0\n", + "14 1_H/Sec inc 3500.0\n", + "15 1_H/Sec inc 8000.0\n", + "16 1_H/Sec inc 2500.0\n", + "17 1_H/Sec inc 7500.0\n", + "18 1_H/Sec inc 5000.0\n", + "19 1_H/Sec inc 5500.0" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2[0:20]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Selecionar uma amostra aleatória de 500 filas de df" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idadeescolaridadehs_trabalhadasqualificação_ocupacionalrenda_ult_mes
443512_Sec. comp y más482_Op./No calif.8000.0
1065632_Sec. comp y más482_Op./No calif.10000.0
5475462_Sec. comp y más402_Op./No calif.8700.0
7624532_Sec. comp y más301_Prof./Tecn.8000.0
14079382_Sec. comp y más442_Op./No calif.8500.0
7559332_Sec. comp y más331_Prof./Tecn.4000.0
9571502_Sec. comp y más351_Prof./Tecn.7000.0
18322401_H/Sec inc602_Op./No calif.14000.0
9603412_Sec. comp y más202_Op./No calif.11700.0
10775412_Sec. comp y más301_Prof./Tecn.10000.0
11841302_Sec. comp y más362_Op./No calif.2000.0
3041651_H/Sec inc42_Op./No calif.4700.0
6880562_Sec. comp y más202_Op./No calif.2000.0
12165382_Sec. comp y más482_Op./No calif.1500.0
12333541_H/Sec inc162_Op./No calif.3000.0
1789422_Sec. comp y más302_Op./No calif.6000.0
4448372_Sec. comp y más702_Op./No calif.22000.0
6498551_H/Sec inc562_Op./No calif.5000.0
7185262_Sec. comp y más482_Op./No calif.8000.0
10892372_Sec. comp y más482_Op./No calif.8500.0
3779201_H/Sec inc552_Op./No calif.8000.0
13406382_Sec. comp y más541_Prof./Tecn.15000.0
18549231_H/Sec inc242_Op./No calif.1200.0
16092522_Sec. comp y más452_Op./No calif.19000.0
9869442_Sec. comp y más202_Op./No calif.1500.0
3733361_H/Sec inc42_Op./No calif.800.0
2868212_Sec. comp y más201_Prof./Tecn.4500.0
3561381_H/Sec inc252_Op./No calif.3000.0
12541231_H/Sec inc482_Op./No calif.6000.0
11859592_Sec. comp y más152_Op./No calif.1000.0
..................
9734432_Sec. comp y más402_Op./No calif.10000.0
2839402_Sec. comp y más561_Prof./Tecn.9000.0
1120621_H/Sec inc502_Op./No calif.5400.0
13890282_Sec. comp y más402_Op./No calif.10000.0
18621582_Sec. comp y más651_Prof./Tecn.10000.0
9469262_Sec. comp y más421_Prof./Tecn.4000.0
19453471_H/Sec inc202_Op./No calif.4500.0
10115582_Sec. comp y más402_Op./No calif.10000.0
11331341_H/Sec inc252_Op./No calif.1000.0
21837272_Sec. comp y más81_Prof./Tecn.2500.0
21184262_Sec. comp y más302_Op./No calif.20000.0
6260422_Sec. comp y más782_Op./No calif.4000.0
13224562_Sec. comp y más601_Prof./Tecn.35000.0
17424582_Sec. comp y más481_Prof./Tecn.35000.0
23266301_H/Sec inc542_Op./No calif.8000.0
8048491_H/Sec inc302_Op./No calif.4500.0
7595301_H/Sec inc352_Op./No calif.4400.0
16016462_Sec. comp y más301_Prof./Tecn.15000.0
4276302_Sec. comp y más401_Prof./Tecn.42500.0
12629312_Sec. comp y más402_Op./No calif.8000.0
8748472_Sec. comp y más502_Op./No calif.11000.0
4322402_Sec. comp y más602_Op./No calif.40000.0
21026462_Sec. comp y más201_Prof./Tecn.35000.0
20977472_Sec. comp y más451_Prof./Tecn.15000.0
18900682_Sec. comp y más452_Op./No calif.7000.0
501341_H/Sec inc482_Op./No calif.8000.0
13693242_Sec. comp y más182_Op./No calif.2000.0
3562171_H/Sec inc122_Op./No calif.1350.0
9694482_Sec. comp y más481_Prof./Tecn.5000.0
21117451_H/Sec inc122_Op./No calif.20500.0
\n", + "

500 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " idade escolaridade hs_trabalhadas qualificação_ocupacional \\\n", + "443 51 2_Sec. comp y más 48 2_Op./No calif. \n", + "1065 63 2_Sec. comp y más 48 2_Op./No calif. \n", + "5475 46 2_Sec. comp y más 40 2_Op./No calif. \n", + "7624 53 2_Sec. comp y más 30 1_Prof./Tecn. \n", + "14079 38 2_Sec. comp y más 44 2_Op./No calif. \n", + "7559 33 2_Sec. comp y más 33 1_Prof./Tecn. \n", + "9571 50 2_Sec. comp y más 35 1_Prof./Tecn. \n", + "18322 40 1_H/Sec inc 60 2_Op./No calif. \n", + "9603 41 2_Sec. comp y más 20 2_Op./No calif. \n", + "10775 41 2_Sec. comp y más 30 1_Prof./Tecn. \n", + "11841 30 2_Sec. comp y más 36 2_Op./No calif. \n", + "3041 65 1_H/Sec inc 4 2_Op./No calif. \n", + "6880 56 2_Sec. comp y más 20 2_Op./No calif. \n", + "12165 38 2_Sec. comp y más 48 2_Op./No calif. \n", + "12333 54 1_H/Sec inc 16 2_Op./No calif. \n", + "1789 42 2_Sec. comp y más 30 2_Op./No calif. \n", + "4448 37 2_Sec. comp y más 70 2_Op./No calif. \n", + "6498 55 1_H/Sec inc 56 2_Op./No calif. \n", + "7185 26 2_Sec. comp y más 48 2_Op./No calif. \n", + "10892 37 2_Sec. comp y más 48 2_Op./No calif. \n", + "3779 20 1_H/Sec inc 55 2_Op./No calif. \n", + "13406 38 2_Sec. comp y más 54 1_Prof./Tecn. \n", + "18549 23 1_H/Sec inc 24 2_Op./No calif. \n", + "16092 52 2_Sec. comp y más 45 2_Op./No calif. \n", + "9869 44 2_Sec. comp y más 20 2_Op./No calif. \n", + "3733 36 1_H/Sec inc 4 2_Op./No calif. \n", + "2868 21 2_Sec. comp y más 20 1_Prof./Tecn. \n", + "3561 38 1_H/Sec inc 25 2_Op./No calif. \n", + "12541 23 1_H/Sec inc 48 2_Op./No calif. \n", + "11859 59 2_Sec. comp y más 15 2_Op./No calif. \n", + "... ... ... ... ... \n", + "9734 43 2_Sec. comp y más 40 2_Op./No calif. \n", + "2839 40 2_Sec. comp y más 56 1_Prof./Tecn. \n", + "1120 62 1_H/Sec inc 50 2_Op./No calif. \n", + "13890 28 2_Sec. comp y más 40 2_Op./No calif. \n", + "18621 58 2_Sec. comp y más 65 1_Prof./Tecn. \n", + "9469 26 2_Sec. comp y más 42 1_Prof./Tecn. \n", + "19453 47 1_H/Sec inc 20 2_Op./No calif. \n", + "10115 58 2_Sec. comp y más 40 2_Op./No calif. \n", + "11331 34 1_H/Sec inc 25 2_Op./No calif. \n", + "21837 27 2_Sec. comp y más 8 1_Prof./Tecn. \n", + "21184 26 2_Sec. comp y más 30 2_Op./No calif. \n", + "6260 42 2_Sec. comp y más 78 2_Op./No calif. \n", + "13224 56 2_Sec. comp y más 60 1_Prof./Tecn. \n", + "17424 58 2_Sec. comp y más 48 1_Prof./Tecn. \n", + "23266 30 1_H/Sec inc 54 2_Op./No calif. \n", + "8048 49 1_H/Sec inc 30 2_Op./No calif. \n", + "7595 30 1_H/Sec inc 35 2_Op./No calif. \n", + "16016 46 2_Sec. comp y más 30 1_Prof./Tecn. \n", + "4276 30 2_Sec. comp y más 40 1_Prof./Tecn. \n", + "12629 31 2_Sec. comp y más 40 2_Op./No calif. \n", + "8748 47 2_Sec. comp y más 50 2_Op./No calif. \n", + "4322 40 2_Sec. comp y más 60 2_Op./No calif. \n", + "21026 46 2_Sec. comp y más 20 1_Prof./Tecn. \n", + "20977 47 2_Sec. comp y más 45 1_Prof./Tecn. \n", + "18900 68 2_Sec. comp y más 45 2_Op./No calif. \n", + "501 34 1_H/Sec inc 48 2_Op./No calif. \n", + "13693 24 2_Sec. comp y más 18 2_Op./No calif. \n", + "3562 17 1_H/Sec inc 12 2_Op./No calif. \n", + "9694 48 2_Sec. comp y más 48 1_Prof./Tecn. \n", + "21117 45 1_H/Sec inc 12 2_Op./No calif. \n", + "\n", + " renda_ult_mes \n", + "443 8000.0 \n", + "1065 10000.0 \n", + "5475 8700.0 \n", + "7624 8000.0 \n", + "14079 8500.0 \n", + "7559 4000.0 \n", + "9571 7000.0 \n", + "18322 14000.0 \n", + "9603 11700.0 \n", + "10775 10000.0 \n", + "11841 2000.0 \n", + "3041 4700.0 \n", + "6880 2000.0 \n", + "12165 1500.0 \n", + "12333 3000.0 \n", + "1789 6000.0 \n", + "4448 22000.0 \n", + "6498 5000.0 \n", + "7185 8000.0 \n", + "10892 8500.0 \n", + "3779 8000.0 \n", + "13406 15000.0 \n", + "18549 1200.0 \n", + "16092 19000.0 \n", + "9869 1500.0 \n", + "3733 800.0 \n", + "2868 4500.0 \n", + "3561 3000.0 \n", + "12541 6000.0 \n", + "11859 1000.0 \n", + "... ... \n", + "9734 10000.0 \n", + "2839 9000.0 \n", + "1120 5400.0 \n", + "13890 10000.0 \n", + "18621 10000.0 \n", + "9469 4000.0 \n", + "19453 4500.0 \n", + "10115 10000.0 \n", + "11331 1000.0 \n", + "21837 2500.0 \n", + "21184 20000.0 \n", + "6260 4000.0 \n", + "13224 35000.0 \n", + "17424 35000.0 \n", + "23266 8000.0 \n", + "8048 4500.0 \n", + "7595 4400.0 \n", + "16016 15000.0 \n", + "4276 42500.0 \n", + "12629 8000.0 \n", + "8748 11000.0 \n", + "4322 40000.0 \n", + "21026 35000.0 \n", + "20977 15000.0 \n", + "18900 7000.0 \n", + "501 8000.0 \n", + "13693 2000.0 \n", + "3562 1350.0 \n", + "9694 5000.0 \n", + "21117 20500.0 \n", + "\n", + "[500 rows x 5 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.sample(500)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.4 Escolher todas as colunas, exceto escolaridade. Dica: Utilizar a propriedade columns para filtrar na dimensão das colunas." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idadehs_trabalhadasqualificação_ocupacionalrenda_ult_mes
046452_Op./No calif.6000.0
126252_Op./No calif.5000.0
247252_Op./No calif.5000.0
352902_Op./No calif.11000.0
445442_Op./No calif.9500.0
538721_Prof./Tecn.6000.0
640442_Op./No calif.9000.0
753722_Op./No calif.4260.0
824552_Op./No calif.3800.0
944602_Op./No calif.10517.0
1072151_Prof./Tecn.8300.0
1140422_Op./No calif.4900.0
1243151_Prof./Tecn.11000.0
1347452_Op./No calif.9000.0
1440142_Op./No calif.3500.0
1540552_Op./No calif.8000.0
1643482_Op./No calif.2500.0
1743722_Op./No calif.7500.0
1842722_Op./No calif.5000.0
1929202_Op./No calif.5500.0
2044361_Prof./Tecn.7000.0
2125362_Op./No calif.6500.0
2248302_Op./No calif.3000.0
2319252_Op./No calif.2000.0
2453402_Op./No calif.9100.0
2547362_Op./No calif.5100.0
2640402_Op./No calif.7200.0
2754702_Op./No calif.4800.0
2837512_Op./No calif.2700.0
2937242_Op./No calif.3000.0
...............
2341837482_Op./No calif.10500.0
2341936401_Prof./Tecn.13000.0
2342029402_Op./No calif.9500.0
2342128402_Op./No calif.9700.0
2342229481_Prof./Tecn.3500.0
2342347602_Op./No calif.8400.0
2342428202_Op./No calif.3500.0
2342546401_Prof./Tecn.12000.0
2342658202_Op./No calif.6000.0
2342733482_Op./No calif.5500.0
2342836602_Op./No calif.8200.0
2342961301_Prof./Tecn.6000.0
2343062301_Prof./Tecn.8500.0
2343141561_Prof./Tecn.15000.0
2343238441_Prof./Tecn.6800.0
2343341401_Prof./Tecn.8000.0
2343463182_Op./No calif.7100.0
2343539482_Op./No calif.3500.0
2343637502_Op./No calif.5800.0
2343765562_Op./No calif.3500.0
2343831242_Op./No calif.5800.0
2343917562_Op./No calif.3500.0
2344019482_Op./No calif.7000.0
2344133242_Op./No calif.4450.0
2344241392_Op./No calif.9500.0
2344345502_Op./No calif.4000.0
2344458302_Op./No calif.5000.0
2344536402_Op./No calif.13000.0
2344649402_Op./No calif.4000.0
2344736542_Op./No calif.8000.0
\n", + "

23448 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " idade hs_trabalhadas qualificação_ocupacional renda_ult_mes\n", + "0 46 45 2_Op./No calif. 6000.0\n", + "1 26 25 2_Op./No calif. 5000.0\n", + "2 47 25 2_Op./No calif. 5000.0\n", + "3 52 90 2_Op./No calif. 11000.0\n", + "4 45 44 2_Op./No calif. 9500.0\n", + "5 38 72 1_Prof./Tecn. 6000.0\n", + "6 40 44 2_Op./No calif. 9000.0\n", + "7 53 72 2_Op./No calif. 4260.0\n", + "8 24 55 2_Op./No calif. 3800.0\n", + "9 44 60 2_Op./No calif. 10517.0\n", + "10 72 15 1_Prof./Tecn. 8300.0\n", + "11 40 42 2_Op./No calif. 4900.0\n", + "12 43 15 1_Prof./Tecn. 11000.0\n", + "13 47 45 2_Op./No calif. 9000.0\n", + "14 40 14 2_Op./No calif. 3500.0\n", + "15 40 55 2_Op./No calif. 8000.0\n", + "16 43 48 2_Op./No calif. 2500.0\n", + "17 43 72 2_Op./No calif. 7500.0\n", + "18 42 72 2_Op./No calif. 5000.0\n", + "19 29 20 2_Op./No calif. 5500.0\n", + "20 44 36 1_Prof./Tecn. 7000.0\n", + "21 25 36 2_Op./No calif. 6500.0\n", + "22 48 30 2_Op./No calif. 3000.0\n", + "23 19 25 2_Op./No calif. 2000.0\n", + "24 53 40 2_Op./No calif. 9100.0\n", + "25 47 36 2_Op./No calif. 5100.0\n", + "26 40 40 2_Op./No calif. 7200.0\n", + "27 54 70 2_Op./No calif. 4800.0\n", + "28 37 51 2_Op./No calif. 2700.0\n", + "29 37 24 2_Op./No calif. 3000.0\n", + "... ... ... ... ...\n", + "23418 37 48 2_Op./No calif. 10500.0\n", + "23419 36 40 1_Prof./Tecn. 13000.0\n", + "23420 29 40 2_Op./No calif. 9500.0\n", + "23421 28 40 2_Op./No calif. 9700.0\n", + "23422 29 48 1_Prof./Tecn. 3500.0\n", + "23423 47 60 2_Op./No calif. 8400.0\n", + "23424 28 20 2_Op./No calif. 3500.0\n", + "23425 46 40 1_Prof./Tecn. 12000.0\n", + "23426 58 20 2_Op./No calif. 6000.0\n", + "23427 33 48 2_Op./No calif. 5500.0\n", + "23428 36 60 2_Op./No calif. 8200.0\n", + "23429 61 30 1_Prof./Tecn. 6000.0\n", + "23430 62 30 1_Prof./Tecn. 8500.0\n", + "23431 41 56 1_Prof./Tecn. 15000.0\n", + "23432 38 44 1_Prof./Tecn. 6800.0\n", + "23433 41 40 1_Prof./Tecn. 8000.0\n", + "23434 63 18 2_Op./No calif. 7100.0\n", + "23435 39 48 2_Op./No calif. 3500.0\n", + "23436 37 50 2_Op./No calif. 5800.0\n", + "23437 65 56 2_Op./No calif. 3500.0\n", + "23438 31 24 2_Op./No calif. 5800.0\n", + "23439 17 56 2_Op./No calif. 3500.0\n", + "23440 19 48 2_Op./No calif. 7000.0\n", + "23441 33 24 2_Op./No calif. 4450.0\n", + "23442 41 39 2_Op./No calif. 9500.0\n", + "23443 45 50 2_Op./No calif. 4000.0\n", + "23444 58 30 2_Op./No calif. 5000.0\n", + "23445 36 40 2_Op./No calif. 13000.0\n", + "23446 49 40 2_Op./No calif. 4000.0\n", + "23447 36 54 2_Op./No calif. 8000.0\n", + "\n", + "[23448 rows x 4 columns]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.loc[:,df.columns != 'escolaridade']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.5 Organizar o dataset segundo a idade" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idadeescolaridadehs_trabalhadasqualificação_ocupacionalrenda_ult_mes
15308121_H/Sec inc72_Op./No calif.250.0
19856121_H/Sec inc152_Op./No calif.1200.0
20050121_H/Sec inc202_Op./No calif.1600.0
5698121_H/Sec inc52_Op./No calif.250.0
14556131_H/Sec inc142_Op./No calif.800.0
15198131_H/Sec inc62_Op./No calif.800.0
16659131_H/Sec inc602_Op./No calif.3000.0
3776141_H/Sec inc202_Op./No calif.1000.0
6027141_H/Sec inc62_Op./No calif.2316.0
6462141_H/Sec inc32_Op./No calif.250.0
15106141_H/Sec inc292_Op./No calif.2750.0
17971141_H/Sec inc92_Op./No calif.1350.0
14853141_H/Sec inc142_Op./No calif.450.0
19656141_H/Sec inc52_Op./No calif.150.0
14087141_H/Sec inc152_Op./No calif.3000.0
13727151_H/Sec inc242_Op./No calif.3300.0
15286151_H/Sec inc62_Op./No calif.400.0
1386151_H/Sec inc422_Op./No calif.5400.0
23005151_H/Sec inc482_Op./No calif.4200.0
2712151_H/Sec inc122_Op./No calif.600.0
8305151_H/Sec inc252_Op./No calif.3000.0
12169151_H/Sec inc452_Op./No calif.2000.0
19655151_H/Sec inc52_Op./No calif.150.0
11693151_H/Sec inc92_Op./No calif.500.0
14785151_H/Sec inc102_Op./No calif.800.0
17878161_H/Sec inc402_Op./No calif.3000.0
6131161_H/Sec inc242_Op./No calif.540.0
7447161_H/Sec inc482_Op./No calif.2000.0
6473161_H/Sec inc302_Op./No calif.1000.0
3165161_H/Sec inc21_Prof./Tecn.300.0
..................
9620801_H/Sec inc122_Op./No calif.5700.0
14543801_H/Sec inc92_Op./No calif.6200.0
22575801_H/Sec inc92_Op./No calif.6500.0
1404801_H/Sec inc662_Op./No calif.3600.0
20673802_Sec. comp y más242_Op./No calif.6200.0
21036801_H/Sec inc421_Prof./Tecn.8200.0
1701811_H/Sec inc301_Prof./Tecn.6900.0
14882811_H/Sec inc302_Op./No calif.6000.0
14579811_H/Sec inc432_Op./No calif.6700.0
21919811_H/Sec inc302_Op./No calif.6800.0
21567812_Sec. comp y más301_Prof./Tecn.6600.0
5588812_Sec. comp y más501_Prof./Tecn.19500.0
19386811_H/Sec inc72_Op./No calif.10142.0
5342821_H/Sec inc92_Op./No calif.4800.0
5343822_Sec. comp y más331_Prof./Tecn.12300.0
20819821_H/Sec inc152_Op./No calif.5700.0
16497822_Sec. comp y más132_Op./No calif.7000.0
20213822_Sec. comp y más302_Op./No calif.23800.0
17363822_Sec. comp y más122_Op./No calif.8500.0
1270822_Sec. comp y más251_Prof./Tecn.11700.0
12786821_H/Sec inc62_Op./No calif.6900.0
18209831_H/Sec inc562_Op./No calif.26700.0
20745832_Sec. comp y más401_Prof./Tecn.8000.0
766842_Sec. comp y más301_Prof./Tecn.7800.0
10087841_H/Sec inc481_Prof./Tecn.8000.0
4340841_H/Sec inc362_Op./No calif.7500.0
23317841_H/Sec inc252_Op./No calif.9900.0
16461852_Sec. comp y más401_Prof./Tecn.20700.0
16954852_Sec. comp y más362_Op./No calif.8250.0
22574931_H/Sec inc202_Op./No calif.8000.0
\n", + "

23448 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " idade escolaridade hs_trabalhadas qualificação_ocupacional \\\n", + "15308 12 1_H/Sec inc 7 2_Op./No calif. \n", + "19856 12 1_H/Sec inc 15 2_Op./No calif. \n", + "20050 12 1_H/Sec inc 20 2_Op./No calif. \n", + "5698 12 1_H/Sec inc 5 2_Op./No calif. \n", + "14556 13 1_H/Sec inc 14 2_Op./No calif. \n", + "15198 13 1_H/Sec inc 6 2_Op./No calif. \n", + "16659 13 1_H/Sec inc 60 2_Op./No calif. \n", + "3776 14 1_H/Sec inc 20 2_Op./No calif. \n", + "6027 14 1_H/Sec inc 6 2_Op./No calif. \n", + "6462 14 1_H/Sec inc 3 2_Op./No calif. \n", + "15106 14 1_H/Sec inc 29 2_Op./No calif. \n", + "17971 14 1_H/Sec inc 9 2_Op./No calif. \n", + "14853 14 1_H/Sec inc 14 2_Op./No calif. \n", + "19656 14 1_H/Sec inc 5 2_Op./No calif. \n", + "14087 14 1_H/Sec inc 15 2_Op./No calif. \n", + "13727 15 1_H/Sec inc 24 2_Op./No calif. \n", + "15286 15 1_H/Sec inc 6 2_Op./No calif. \n", + "1386 15 1_H/Sec inc 42 2_Op./No calif. \n", + "23005 15 1_H/Sec inc 48 2_Op./No calif. \n", + "2712 15 1_H/Sec inc 12 2_Op./No calif. \n", + "8305 15 1_H/Sec inc 25 2_Op./No calif. \n", + "12169 15 1_H/Sec inc 45 2_Op./No calif. \n", + "19655 15 1_H/Sec inc 5 2_Op./No calif. \n", + "11693 15 1_H/Sec inc 9 2_Op./No calif. \n", + "14785 15 1_H/Sec inc 10 2_Op./No calif. \n", + "17878 16 1_H/Sec inc 40 2_Op./No calif. \n", + "6131 16 1_H/Sec inc 24 2_Op./No calif. \n", + "7447 16 1_H/Sec inc 48 2_Op./No calif. \n", + "6473 16 1_H/Sec inc 30 2_Op./No calif. \n", + "3165 16 1_H/Sec inc 2 1_Prof./Tecn. \n", + "... ... ... ... ... \n", + "9620 80 1_H/Sec inc 12 2_Op./No calif. \n", + "14543 80 1_H/Sec inc 9 2_Op./No calif. \n", + "22575 80 1_H/Sec inc 9 2_Op./No calif. \n", + "1404 80 1_H/Sec inc 66 2_Op./No calif. \n", + "20673 80 2_Sec. comp y más 24 2_Op./No calif. \n", + "21036 80 1_H/Sec inc 42 1_Prof./Tecn. \n", + "1701 81 1_H/Sec inc 30 1_Prof./Tecn. \n", + "14882 81 1_H/Sec inc 30 2_Op./No calif. \n", + "14579 81 1_H/Sec inc 43 2_Op./No calif. \n", + "21919 81 1_H/Sec inc 30 2_Op./No calif. \n", + "21567 81 2_Sec. comp y más 30 1_Prof./Tecn. \n", + "5588 81 2_Sec. comp y más 50 1_Prof./Tecn. \n", + "19386 81 1_H/Sec inc 7 2_Op./No calif. \n", + "5342 82 1_H/Sec inc 9 2_Op./No calif. \n", + "5343 82 2_Sec. comp y más 33 1_Prof./Tecn. \n", + "20819 82 1_H/Sec inc 15 2_Op./No calif. \n", + "16497 82 2_Sec. comp y más 13 2_Op./No calif. \n", + "20213 82 2_Sec. comp y más 30 2_Op./No calif. \n", + "17363 82 2_Sec. comp y más 12 2_Op./No calif. \n", + "1270 82 2_Sec. comp y más 25 1_Prof./Tecn. \n", + "12786 82 1_H/Sec inc 6 2_Op./No calif. \n", + "18209 83 1_H/Sec inc 56 2_Op./No calif. \n", + "20745 83 2_Sec. comp y más 40 1_Prof./Tecn. \n", + "766 84 2_Sec. comp y más 30 1_Prof./Tecn. \n", + "10087 84 1_H/Sec inc 48 1_Prof./Tecn. \n", + "4340 84 1_H/Sec inc 36 2_Op./No calif. \n", + "23317 84 1_H/Sec inc 25 2_Op./No calif. \n", + "16461 85 2_Sec. comp y más 40 1_Prof./Tecn. \n", + "16954 85 2_Sec. comp y más 36 2_Op./No calif. \n", + "22574 93 1_H/Sec inc 20 2_Op./No calif. \n", + "\n", + " renda_ult_mes \n", + "15308 250.0 \n", + "19856 1200.0 \n", + "20050 1600.0 \n", + "5698 250.0 \n", + "14556 800.0 \n", + "15198 800.0 \n", + "16659 3000.0 \n", + "3776 1000.0 \n", + "6027 2316.0 \n", + "6462 250.0 \n", + "15106 2750.0 \n", + "17971 1350.0 \n", + "14853 450.0 \n", + "19656 150.0 \n", + "14087 3000.0 \n", + "13727 3300.0 \n", + "15286 400.0 \n", + "1386 5400.0 \n", + "23005 4200.0 \n", + "2712 600.0 \n", + "8305 3000.0 \n", + "12169 2000.0 \n", + "19655 150.0 \n", + "11693 500.0 \n", + "14785 800.0 \n", + "17878 3000.0 \n", + "6131 540.0 \n", + "7447 2000.0 \n", + "6473 1000.0 \n", + "3165 300.0 \n", + "... ... \n", + "9620 5700.0 \n", + "14543 6200.0 \n", + "22575 6500.0 \n", + "1404 3600.0 \n", + "20673 6200.0 \n", + "21036 8200.0 \n", + "1701 6900.0 \n", + "14882 6000.0 \n", + "14579 6700.0 \n", + "21919 6800.0 \n", + "21567 6600.0 \n", + "5588 19500.0 \n", + "19386 10142.0 \n", + "5342 4800.0 \n", + "5343 12300.0 \n", + "20819 5700.0 \n", + "16497 7000.0 \n", + "20213 23800.0 \n", + "17363 8500.0 \n", + "1270 11700.0 \n", + "12786 6900.0 \n", + "18209 26700.0 \n", + "20745 8000.0 \n", + "766 7800.0 \n", + "10087 8000.0 \n", + "4340 7500.0 \n", + "23317 9900.0 \n", + "16461 20700.0 \n", + "16954 8250.0 \n", + "22574 8000.0 \n", + "\n", + "[23448 rows x 5 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.sort_values(['idade'], ascending = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.6 Qual é a média de horas trabalhadas dos jovens entre 14 e 25 anos pouco qualificados?" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2_Op./No calif. 17372\n", + "1_Prof./Tecn. 6076\n", + "Name: qualificação_ocupacional, dtype: int64" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['qualificação_ocupacional'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "37.57085900688655" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['hs_trabalhadas'][(df['idade'] >= 14) & \\\n", + " (df['idade'] <= 25) & \\\n", + " (df['qualificação_ocupacional'] == '2_Op./No calif.')].mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.7 Gerar um novo dataframe com os trabalhadores que ganham mais que a renda média geral e estão abaixo do número médio de horas trabalhadas. Quantos trabalhadores estão nesta condição? Qual é a média de idade deles?" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idadeescolaridadehs_trabalhadasqualificação_ocupacionalrenda_ult_mes
10721_H/Sec inc151_Prof./Tecn.8300.0
12432_Sec. comp y más151_Prof./Tecn.11000.0
47332_Sec. comp y más391_Prof./Tecn.9500.0
48551_H/Sec inc302_Op./No calif.13000.0
88461_H/Sec inc361_Prof./Tecn.10000.0
\n", + "
" + ], + "text/plain": [ + " idade escolaridade hs_trabalhadas qualificação_ocupacional \\\n", + "10 72 1_H/Sec inc 15 1_Prof./Tecn. \n", + "12 43 2_Sec. comp y más 15 1_Prof./Tecn. \n", + "47 33 2_Sec. comp y más 39 1_Prof./Tecn. \n", + "48 55 1_H/Sec inc 30 2_Op./No calif. \n", + "88 46 1_H/Sec inc 36 1_Prof./Tecn. \n", + "\n", + " renda_ult_mes \n", + "10 8300.0 \n", + "12 11000.0 \n", + "47 9500.0 \n", + "48 13000.0 \n", + "88 10000.0 " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3 = df.loc[(df['renda_ult_mes'] > df.renda_ult_mes.mean())\n", + " & (df['hs_trabalhadas'] < df.hs_trabalhadas.mean())]\n", + "\n", + "df3.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Visulização dos dados" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.1 Plote um histograma para a variável renda do ultimo mês" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[\"renda_ult_mes\"].plot(kind=\"hist\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.2 Plote um histograma das horas trabalhadas" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[\"hs_trabalhadas\"].plot(kind=\"hist\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.3 Plote um histograma da renda do ultimo mês dos funcionários que tem 15 horas trabalhadas" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df[\"hs_trabalhadas\"]==15][\"renda_ult_mes\"].plot(kind=\"hist\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.4 Plote um histograma da renda do ultimos mes dos funcionários classificados como Prof./Tecn." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[df[\"qualificação_ocupacional\"]=='1_Prof./Tecn.'][\"renda_ult_mes\"].plot(kind=\"hist\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/1-analise-explorat\303\263ria-basica/03-pandas/Pandas Handson.ipynb" "b/1-analise-explorat\303\263ria-basica/03-pandas/Pandas Handson.ipynb" new file mode 100755 index 0000000..fcb91bd --- /dev/null +++ "b/1-analise-explorat\303\263ria-basica/03-pandas/Pandas Handson.ipynb" @@ -0,0 +1,382 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# LAB: Introdução a Pandas 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Introdução\n", + "\n", + "Neste caso usaremos uma versão muito resumida dos dados do [Censo Demográfico (levantamento realizado pelo INDEC)](http://www.indec.gov.ar/bases-de-datos.asp). Trata-se de uma pesquisa contínua cujo objetivo principal é gerar informações sobre o funcionamento do mercado de trabalho.\n", + "\n", + "Utilizaremos apenas algumas variáveis (idade, escolaridade, número de horas trabalhadas, qualificação da tarefa e renda do trabalho) e alguns casos (os empregados, ou seja, aqueles que trabalharam pelo menos uma hora na semana anterior à pesquisa)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.1 Importamos os pacotes a serem usados" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Importamos os dados a serem usados" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('data/data_filt.csv', encoding = 'latin1', engine='python', delimiter=',')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Explorando o dataset\n", + "\n", + "### 2.1. Quantas filas e quantas colunas o dataset tem?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2 Que informação o dataset tem? Imprimir o nome das colunas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Os nomes das colunas não são muito descritivos a respeito das informações que elas contêm. Vamos tentar mudá-los pela seguinte lista: \n", + "\n", + "['idade', 'escolaridade', 'hs_trabalhadas', 'qualificação_ocupacional', 'renda_ult_mes']" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "df.columns = ['idade', 'escolaridade', 'hs_trabalhadas', 'qualificação_ocupacional', 'renda_ult_mes']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.3 Como o dataset está indexado?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.4 Qual é o tipo da quarta coluna?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.4 Qual é a escolaridade mais comum?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.5 E como a população é distribuída segundo a qualificação? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.6 Qual é a renda total da população? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.4 Qual é a renda média da população? " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Indexando e organizando os dados" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Selecionar a coluna `escolaridade` e `renda_ult_mes` e atribuí-las a um objeto novo chamado `df2`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Selecionar as primeiras 20 filas de df2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Selecionar uma amostra aleatória de 500 filas de df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.4 Escolher todas as colunas, exceto escolaridade. Dica: Utilizar a propriedade columns para filtrar na dimensão das colunas." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.5 Organizar o dataset segundo a idade" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.6 Qual é a média de horas trabalhadas dos jovens entre 14 e 25 anos pouco qualificados?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.7 Gerar um novo dataframe com os trabalhadores que ganham mais que a renda média geral e estão abaixo do número médio de horas trabalhadas. Quantos trabalhadores estão nesta condição? Qual é a média de idade deles?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Visulização dos dados" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.1 Plote um histograma para a variável renda do ultimo mês" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.2 Plote um histograma das horas trabalhadas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.3 Plote um histograma da renda do ultimo mês dos funcionários que tem 15 horas trabalhadas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.4 Plote um histograma da renda do ultimos mes dos funcionários classificados como Prof./Tecn." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/1-analise-explorat\303\263ria-basica/03-pandas/img/DataFrame_basico.png" "b/1-analise-explorat\303\263ria-basica/03-pandas/img/DataFrame_basico.png" new file mode 100755 index 0000000..9aef9b0 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/03-pandas/img/DataFrame_basico.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/03-pandas/img/caso_real.png" "b/1-analise-explorat\303\263ria-basica/03-pandas/img/caso_real.png" new file mode 100755 index 0000000..0feee20 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/03-pandas/img/caso_real.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/03-pandas/img/modelagem_pandas.png" "b/1-analise-explorat\303\263ria-basica/03-pandas/img/modelagem_pandas.png" new file mode 100755 index 0000000..4c965a7 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/03-pandas/img/modelagem_pandas.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/03-pandas/img/pandas_dataframe.png" "b/1-analise-explorat\303\263ria-basica/03-pandas/img/pandas_dataframe.png" new file mode 100755 index 0000000..7e7adb6 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/03-pandas/img/pandas_dataframe.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/03-pandas/pandas101.ipynb" "b/1-analise-explorat\303\263ria-basica/03-pandas/pandas101.ipynb" old mode 100644 new mode 100755 index fcd2ffc..98a28b3 --- "a/1-analise-explorat\303\263ria-basica/03-pandas/pandas101.ipynb" +++ "b/1-analise-explorat\303\263ria-basica/03-pandas/pandas101.ipynb" @@ -4,21 +4,70 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Pandas" + "# Pandas 1 - Trabalhando com DataFrames\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "O que são os DataFrames do Pandas?\n", + "\n", + "Antes de começar, vamos fazer uma breve recapitulação do que são os DataFrames.\n", + "\n", + "DataFrames são uma maneira de armazenar dados em grades tabelas que podem ser facilmente visualizadas. Cada linha dessas grades corresponde a medidas ou valores de uma instância (observação), enquanto cada coluna é um vetor que contém dados para uma variável específica. Isso significa que as linhas de um frame de dados não precisam conter, mas podem conter o mesmo tipo de valores: elas podem ser numéricas, de caracteres, lógicas, etc.\n", + "\n", + "Agora, os DataFrames em Python são muito semelhantes: eles vêm com a biblioteca Pandas e são definidos como estruturas de dados bidimensionais rotuladas com colunas de tipos potencialmente diferentes.\n", + "\n", + "Em geral, você poderia dizer que o Pandas DataFrame consiste em três componentes principais: os dados, o índice e as colunas.\n", + "\n", + "Em primeiro lugar, o DataFrame pode conter dados que são:\n", + "\n", + "- um DataFrame Pandas\n", + "- uma série Pandas: um array rotulado unidimensional capaz de conter qualquer tipo de dados com rótulos ou índices de eixo. Um exemplo de um objeto de série é uma coluna de um DataFrame.\n", + "- um ndarray NumPy, que pode ser um registro ou estruturado\n", + "- um ndarray bidimensional\n", + "- dicionários de ndarray, listas, dicionários ou séries unidimensionais." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Conhecendo DataFrames\n", + "\n", + "Vamos criar o primeiro DataFrame a partir de uma *Series* e verificar a apresentação de uma tabela" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Importando as bibliotecas" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ - "import pandas as pd" + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Definindo uma Series em Pandas" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -31,7 +80,7 @@ "dtype: float64" ] }, - "execution_count": 4, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -43,182 +92,281 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "California 38332521\n", - "Texas 26448193\n", - "New York 19651127\n", - "Florida 19552860\n", - "Illinois 12882135\n", - "dtype: int64" + "array([0.25, 0.5 , 0.75, 1. ])" ] }, - "execution_count": 5, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "population_dict = {'California': 38332521,\n", - " 'Texas': 26448193,\n", - " 'New York': 19651127, \n", - " 'Florida': 19552860,\n", - " 'Illinois': 12882135}\n", - "\n", - "population = pd.Series(population_dict)\n", - "population" + "data.values" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 39, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
areapop
California42396738332521
Texas69566226448193
New York14129719651127
Florida17031219552860
Illinois14999512882135
\n", - "
" - ], "text/plain": [ - " area pop\n", - "California 423967 38332521\n", - "Texas 695662 26448193\n", - "New York 141297 19651127\n", - "Florida 170312 19552860\n", - "Illinois 149995 12882135" + "RangeIndex(start=0, stop=4, step=1)" ] }, - "execution_count": 6, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "area = pd.Series({'California': 423967,\n", - " 'Texas': 695662,\n", - " 'New York': 141297,\n", - " 'Florida': 170312,\n", - " 'Illinois': 149995})\n", - "\n", - "data = pd.DataFrame({'area':area, 'pop':population})\n", + "data.index" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.5" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1 0.50\n", + "2 0.75\n", + "dtype: float64" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[1:3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Indexação" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 0.25\n", + "b 0.50\n", + "c 0.75\n", + "d 1.00\n", + "dtype: float64" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.Series([0.25, 0.5, 0.75, 1.0],\n", + " index=['a', 'b', 'c', 'd'])\n", "data" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "int" + "0.5" ] }, - "execution_count": 9, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "type(1)" + "data['b']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Criando um DataFrame a partir de duas Series\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "Agora vamos trabalhar com dados reais através da criação de *Series* em **Pandas** que darão origem a um DataFrame. Com isso, vamos realizar operações básicas de separação de dados e criação de uma coluna." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Criando uma Series population a partir de um dicionário" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "pandas.core.frame.DataFrame" + "California 38332521\n", + "Florida 19552860\n", + "Illinois 12882135\n", + "New York 19651127\n", + "Texas 26448193\n", + "dtype: int64" ] }, - "execution_count": 10, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "type(data)" + "population_dict = {'California': 38332521,\n", + " 'Florida': 19552860,\n", + " 'Illinois': 12882135,\n", + " 'New York': 19651127, \n", + " 'Texas': 26448193,}\n", + "population = pd.Series(population_dict)\n", + "population" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "38332521" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "data.to_csv('exemplo.csv')" + "population['California']" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 49, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "California 38332521\n", + "Florida 19552860\n", + "Illinois 12882135\n", + "dtype: int64" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "population['California':'Illinois']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Criando uma Series area a partir de um dicionário" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "California 423967\n", + "Florida 170312\n", + "Illinois 149995\n", + "New York 141297\n", + "Texas 695662\n", + "dtype: int64" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "data['density'] = data['pop'] / data['area']" + "area_dict = {'California': 423967, \n", + " 'Florida': 170312,\n", + " 'Illinois': 149995,\n", + " 'New York': 141297,\n", + " 'Texas': 695662}\n", + "area = pd.Series(area_dict)\n", + "area" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Criando um DataFrame states com dados de 'population' e 'area'" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -242,121 +390,252 @@ " \n", " \n", " \n", + " population\n", " area\n", - " pop\n", - " density\n", " \n", " \n", " \n", " \n", " California\n", - " 423967\n", " 38332521\n", - " 90.413926\n", + " 423967\n", " \n", " \n", " Florida\n", - " 170312\n", " 19552860\n", - " 114.806121\n", + " 170312\n", " \n", " \n", " Illinois\n", - " 149995\n", " 12882135\n", - " 85.883763\n", + " 149995\n", " \n", " \n", " New York\n", - " 141297\n", " 19651127\n", - " 139.076746\n", + " 141297\n", " \n", " \n", " Texas\n", - " 695662\n", " 26448193\n", - " 38.018740\n", + " 695662\n", " \n", " \n", "\n", "
" ], "text/plain": [ - " area pop density\n", - "California 423967 38332521 90.413926\n", - "Florida 170312 19552860 114.806121\n", - "Illinois 149995 12882135 85.883763\n", - "New York 141297 19651127 139.076746\n", - "Texas 695662 26448193 38.018740" + " population area\n", + "California 38332521 423967\n", + "Florida 19552860 170312\n", + "Illinois 12882135 149995\n", + "New York 19651127 141297\n", + "Texas 26448193 695662" ] }, - "execution_count": 7, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "data" + "states = pd.DataFrame({'population': population,\n", + " 'area': area})\n", + "states" ] }, { - "cell_type": "code", - "execution_count": 12, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "novo_dataframe = pd.DataFrame({'col1':[1,2,3,4,5], 'col2':[5,4,3,2,1]})" + "### Identificando os tipos das variáveis" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "col1 3.0\n", - "col2 3.0\n", - "dtype: float64" + "pandas.core.frame.DataFrame" ] }, - "execution_count": 15, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "novo_dataframe.mean()" + "type(states)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 91, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Index: 5 entries, California to Illinois\n", + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(states[\"population\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "list" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type([states[\"population\"]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Verificando as características do DataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5, 2)" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 5 entries, California to Texas\n", "Data columns (total 2 columns):\n", - "area 5 non-null int64\n", - "pop 5 non-null int64\n", + "population 5 non-null int64\n", + "area 5 non-null int64\n", "dtypes: int64(2)\n", - "memory usage: 120.0+ bytes\n" + "memory usage: 280.0+ bytes\n" ] } ], "source": [ - "data.info()" + "states.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['California', 'Florida', 'Illinois', 'New York', 'Texas'], dtype='object')" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states.index" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['population', 'area'], dtype='object')" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "California 423967\n", + "Florida 170312\n", + "Illinois 149995\n", + "New York 141297\n", + "Texas 695662\n", + "Name: area, dtype: int64" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states['area']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Criando uma coluna 'density' a partir da divisão da 'population' pela 'area'" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 167, "metadata": {}, "outputs": [ { @@ -380,95 +659,159 @@ " \n", " \n", " \n", + " population\n", " area\n", - " pop\n", + " density\n", " \n", " \n", " \n", " \n", " California\n", - " 423967\n", " 38332521\n", - " \n", - " \n", - " Texas\n", - " 695662\n", - " 26448193\n", - " \n", - " \n", - " New York\n", - " 141297\n", - " 19651127\n", + " 423967\n", + " 90.413926\n", " \n", " \n", " Florida\n", - " 170312\n", " 19552860\n", + " 170312\n", + " 114.806121\n", " \n", " \n", " Illinois\n", - " 149995\n", " 12882135\n", + " 149995\n", + " 85.883763\n", + " \n", + " \n", + " New York\n", + " 19651127\n", + " 141297\n", + " 139.076746\n", + " \n", + " \n", + " Texas\n", + " 26448193\n", + " 695662\n", + " 38.018740\n", " \n", " \n", "\n", "
" ], "text/plain": [ - " area pop\n", - "California 423967 38332521\n", - "Texas 695662 26448193\n", - "New York 141297 19651127\n", - "Florida 170312 19552860\n", - "Illinois 149995 12882135" + " population area density\n", + "California 38332521 423967 90.413926\n", + "Florida 19552860 170312 114.806121\n", + "Illinois 12882135 149995 85.883763\n", + "New York 19651127 141297 139.076746\n", + "Texas 26448193 695662 38.018740" ] }, - "execution_count": 16, + "execution_count": 167, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "data" + "states['density'] = states['population'] / states['area']\n", + "states" ] }, { - "cell_type": "code", - "execution_count": 22, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "mascara_pop = (data['pop'] > 19552860) & (data['area']>423967)" + "### Ordenando os dados por estados mais populados, maiores e mais populosos" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 220, "metadata": {}, "outputs": [ { "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
populationareadensity
Illinois1288213514999585.883763
Florida19552860170312114.806121
New York19651127141297139.076746
Texas2644819369566238.018740
California3833252142396790.000000
\n", + "
" + ], "text/plain": [ - "California False\n", - "Texas True\n", - "New York False\n", - "Florida False\n", - "Illinois False\n", - "dtype: bool" + " population area density\n", + "Illinois 12882135 149995 85.883763\n", + "Florida 19552860 170312 114.806121\n", + "New York 19651127 141297 139.076746\n", + "Texas 26448193 695662 38.018740\n", + "California 38332521 423967 90.000000" ] }, - "execution_count": 23, + "execution_count": 220, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "mascara_pop" + "states.sort_values(['population'], ascending = True)" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 221, "metadata": {}, "outputs": [ { @@ -492,32 +835,2670 @@ " \n", " \n", " \n", + " population\n", " area\n", - " pop\n", + " density\n", " \n", " \n", " \n", " \n", + " New York\n", + " 19651127\n", + " 141297\n", + " 139.076746\n", + " \n", + " \n", + " Illinois\n", + " 12882135\n", + " 149995\n", + " 85.883763\n", + " \n", + " \n", + " Florida\n", + " 19552860\n", + " 170312\n", + " 114.806121\n", + " \n", + " \n", + " California\n", + " 38332521\n", + " 423967\n", + " 90.000000\n", + " \n", + " \n", " Texas\n", - " 695662\n", " 26448193\n", + " 695662\n", + " 38.018740\n", " \n", " \n", "\n", "
" ], "text/plain": [ - " area pop\n", - "Texas 695662 26448193" + " population area density\n", + "New York 19651127 141297 139.076746\n", + "Illinois 12882135 149995 85.883763\n", + "Florida 19552860 170312 114.806121\n", + "California 38332521 423967 90.000000\n", + "Texas 26448193 695662 38.018740" + ] + }, + "execution_count": 221, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states.sort_values(['area'], ascending = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 222, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
populationareadensity
Texas2644819369566238.018740
Illinois1288213514999585.883763
California3833252142396790.000000
Florida19552860170312114.806121
New York19651127141297139.076746
\n", + "
" + ], + "text/plain": [ + " population area density\n", + "Texas 26448193 695662 38.018740\n", + "Illinois 12882135 149995 85.883763\n", + "California 38332521 423967 90.000000\n", + "Florida 19552860 170312 114.806121\n", + "New York 19651127 141297 139.076746" + ] + }, + "execution_count": 222, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states.sort_values(['density'], ascending = True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Selecionando dados" + ] + }, + { + "cell_type": "code", + "execution_count": 213, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
populationareadensity
Florida19552860170312114.806121
Illinois1288213514999585.883763
\n", + "
" + ], + "text/plain": [ + " population area density\n", + "Florida 19552860 170312 114.806121\n", + "Illinois 12882135 149995 85.883763" + ] + }, + "execution_count": 213, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states['Florida':'Illinois']" + ] + }, + { + "cell_type": "code", + "execution_count": 214, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
populationareadensity
Florida19552860170312114.806121
Illinois1288213514999585.883763
\n", + "
" + ], + "text/plain": [ + " population area density\n", + "Florida 19552860 170312 114.806121\n", + "Illinois 12882135 149995 85.883763" + ] + }, + "execution_count": 214, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states[1:3]" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "California False\n", + "Florida False\n", + "Illinois False\n", + "New York False\n", + "Texas True\n", + "dtype: bool" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_pop = (states['population'] > 19552860) & (states['area']>423967)\n", + "data_pop" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
populationareadensity
Texas2644819369566238.01874
\n", + "
" + ], + "text/plain": [ + " population area density\n", + "Texas 26448193 695662 38.01874" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states[(states['population'] > 19552860) & (states['area']>423967)]" + ] + }, + { + "cell_type": "code", + "execution_count": 211, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
areadensity
California42396790.413926
Florida170312114.806121
Illinois14999585.883763
New York141297139.076746
Texas69566238.018740
\n", + "
" + ], + "text/plain": [ + " area density\n", + "California 423967 90.413926\n", + "Florida 170312 114.806121\n", + "Illinois 149995 85.883763\n", + "New York 141297 139.076746\n", + "Texas 695662 38.018740" + ] + }, + "execution_count": 211, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states[['area','density']]" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
populationareadensity
Florida19552860170312114.806121
New York19651127141297139.076746
\n", + "
" + ], + "text/plain": [ + " population area density\n", + "Florida 19552860 170312 114.806121\n", + "New York 19651127 141297 139.076746" + ] + }, + "execution_count": 208, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states[states.density > 100]" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
populationdensity
Florida19552860114.806121
New York19651127139.076746
\n", + "
" + ], + "text/plain": [ + " population density\n", + "Florida 19552860 114.806121\n", + "New York 19651127 139.076746" + ] + }, + "execution_count": 209, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states.loc[states.density > 100, ['population', 'density']]" + ] + }, + { + "cell_type": "code", + "execution_count": 218, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "90.0" + ] + }, + "execution_count": 218, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states.loc['California', 'density']" + ] + }, + { + "cell_type": "code", + "execution_count": 219, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "90.0" + ] + }, + "execution_count": 219, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "states.iloc[0, 2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Caso Real\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "Agora vamos ler e entender uma tabela de um caso real. O arquivo *UKRetail* traz um banco de dados real de vendas para verificação e análise dos valores como segue.\n", + "\n", + "- Leitura dos dados e acesso por um DataFrame\n", + "- Identificação dos tipos de variáveis\n", + "- Descrição básica dos dados\n", + "- Seleção de dados\n", + "- Criação de uma coluna para o faturamento\n", + "- Tratamento dos valoes negativos contidos no faturamento\n", + "- Obtenção do total faturado por país com agrupamento (*Groupby*)\n", + "- Visualização dos dados de consumo para um cliente por histograma\n", + "- Visualização do consumo de um produto por histograma\n", + "- Tratamento de valores nulos" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lendo e acessando dados de um arquivo real de vendas" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
053636522752SET 7 BABUSHKA NESTING BOXES22010-12-01 08:26:027.6517850.0United Kingdom
153636571053WHITE METAL LANTERN62010-12-01 08:26:023.3917850.0United Kingdom
253636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:023.3917850.0United Kingdom
353636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:022.5517850.0United Kingdom
453636622633HAND WARMER UNION JACK62010-12-01 08:28:021.8517850.0United Kingdom
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "0 536365 22752 SET 7 BABUSHKA NESTING BOXES 2 \n", + "1 536365 71053 WHITE METAL LANTERN 6 \n", + "2 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", + "3 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", + "4 536366 22633 HAND WARMER UNION JACK 6 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country \n", + "0 2010-12-01 08:26:02 7.65 17850.0 United Kingdom \n", + "1 2010-12-01 08:26:02 3.39 17850.0 United Kingdom \n", + "2 2010-12-01 08:26:02 3.39 17850.0 United Kingdom \n", + "3 2010-12-01 08:26:02 2.55 17850.0 United Kingdom \n", + "4 2010-12-01 08:28:02 1.85 17850.0 United Kingdom " + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales = pd.DataFrame(pd.read_csv('data/UKretail.csv',encoding='latin'))" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
053636522752SET 7 BABUSHKA NESTING BOXES22010-12-01 08:26:027.6517850.0United Kingdom
153636571053WHITE METAL LANTERN62010-12-01 08:26:023.3917850.0United Kingdom
253636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:023.3917850.0United Kingdom
353636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:022.5517850.0United Kingdom
453636622633HAND WARMER UNION JACK62010-12-01 08:28:021.8517850.0United Kingdom
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "0 536365 22752 SET 7 BABUSHKA NESTING BOXES 2 \n", + "1 536365 71053 WHITE METAL LANTERN 6 \n", + "2 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", + "3 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", + "4 536366 22633 HAND WARMER UNION JACK 6 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country \n", + "0 2010-12-01 08:26:02 7.65 17850.0 United Kingdom \n", + "1 2010-12-01 08:26:02 3.39 17850.0 United Kingdom \n", + "2 2010-12-01 08:26:02 3.39 17850.0 United Kingdom \n", + "3 2010-12-01 08:26:02 2.55 17850.0 United Kingdom \n", + "4 2010-12-01 08:28:02 1.85 17850.0 United Kingdom " + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
32514258158722899CHILDREN'S APRON DOLLY GIRL62011-12-09 12:49:592.1012680.0France
32514358158723254CHILDRENS CUTLERY DOLLY GIRL42011-12-09 12:49:594.1512680.0France
32514458158723256CHILDRENS CUTLERY SPACEBOY42011-12-09 12:49:594.1512680.0France
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "325142 581587 22899 CHILDREN'S APRON DOLLY GIRL 6 \n", + "325143 581587 23254 CHILDRENS CUTLERY DOLLY GIRL 4 \n", + "325144 581587 23256 CHILDRENS CUTLERY SPACEBOY 4 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country \n", + "325142 2011-12-09 12:49:59 2.10 12680.0 France \n", + "325143 2011-12-09 12:49:59 4.15 12680.0 France \n", + "325144 2011-12-09 12:49:59 4.15 12680.0 France " + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.tail(3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Identificando os tipos de variáveis" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(sales)" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(sales[\"CustomerID\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "list" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type([sales[\"CustomerID\"]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Descrição básica dos dados" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(325145, 8)" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['InvoiceNo', 'StockCode', 'Description', 'Quantity', 'InvoiceDate',\n", + " 'UnitPrice', 'CustomerID', 'Country'], dtype=object)" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.columns.values" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 325145 entries, 0 to 325144\n", + "Data columns (total 8 columns):\n", + "InvoiceNo 325145 non-null object\n", + "StockCode 325145 non-null object\n", + "Description 324275 non-null object\n", + "Quantity 325145 non-null int64\n", + "InvoiceDate 325145 non-null object\n", + "UnitPrice 325145 non-null float64\n", + "CustomerID 244154 non-null float64\n", + "Country 325145 non-null object\n", + "dtypes: float64(2), int64(1), object(5)\n", + "memory usage: 19.8+ MB\n" + ] + } + ], + "source": [ + "sales.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
QuantityUnitPriceCustomerID
count325145.000000325145.000000244154.000000
mean9.2733404.84523915288.823120
std154.394112116.8304511713.496816
min-80995.000000-11062.06000012347.000000
25%1.0000001.25000013959.000000
50%3.0000002.08000015150.000000
75%10.0000004.13000016792.750000
max12540.00000038970.00000018287.000000
\n", + "
" + ], + "text/plain": [ + " Quantity UnitPrice CustomerID\n", + "count 325145.000000 325145.000000 244154.000000\n", + "mean 9.273340 4.845239 15288.823120\n", + "std 154.394112 116.830451 1713.496816\n", + "min -80995.000000 -11062.060000 12347.000000\n", + "25% 1.000000 1.250000 13959.000000\n", + "50% 3.000000 2.080000 15150.000000\n", + "75% 10.000000 4.130000 16792.750000\n", + "max 12540.000000 38970.000000 18287.000000" + ] + }, + "execution_count": 110, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Selecionando dados" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
053636522752SET 7 BABUSHKA NESTING BOXES22010-12-01 08:26:027.6517850.0United Kingdom
153636571053WHITE METAL LANTERN62010-12-01 08:26:023.3917850.0United Kingdom
253636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:023.3917850.0United Kingdom
353636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:022.5517850.0United Kingdom
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "0 536365 22752 SET 7 BABUSHKA NESTING BOXES 2 \n", + "1 536365 71053 WHITE METAL LANTERN 6 \n", + "2 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", + "3 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country \n", + "0 2010-12-01 08:26:02 7.65 17850.0 United Kingdom \n", + "1 2010-12-01 08:26:02 3.39 17850.0 United Kingdom \n", + "2 2010-12-01 08:26:02 3.39 17850.0 United Kingdom \n", + "3 2010-12-01 08:26:02 2.55 17850.0 United Kingdom " + ] + }, + "execution_count": 111, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales[:4]" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 17850.0\n", + "1 17850.0\n", + "2 17850.0\n", + "3 17850.0\n", + "4 17850.0\n", + "Name: CustomerID, dtype: float64" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales[\"CustomerID\"].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Quantity
02
16
26
36
46
\n", + "
" + ], + "text/plain": [ + " Quantity\n", + "0 2\n", + "1 6\n", + "2 6\n", + "3 6\n", + "4 6" + ] + }, + "execution_count": 117, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.loc[:,['Quantity']].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Quantity
02
16
26
36
46
\n", + "
" + ], + "text/plain": [ + " Quantity\n", + "0 2\n", + "1 6\n", + "2 6\n", + "3 6\n", + "4 6" + ] + }, + "execution_count": 115, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.iloc[:,[3]].head()" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Description
0SET 7 BABUSHKA NESTING BOXES
1WHITE METAL LANTERN
2KNITTED UNION FLAG HOT WATER BOTTLE
3WHITE HANGING HEART T-LIGHT HOLDER
4HAND WARMER UNION JACK
5HOME BUILDING BLOCK WORD
\n", + "
" + ], + "text/plain": [ + " Description\n", + "0 SET 7 BABUSHKA NESTING BOXES\n", + "1 WHITE METAL LANTERN\n", + "2 KNITTED UNION FLAG HOT WATER BOTTLE\n", + "3 WHITE HANGING HEART T-LIGHT HOLDER\n", + "4 HAND WARMER UNION JACK\n", + "5 HOME BUILDING BLOCK WORD" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.iloc[0:6,2:3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Criando uma nova coluna de 'Revenue' com total de vendas (multiplicação da 'Quantity' pelo 'UnitPrice')" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [], + "source": [ + "sales['Revenue'] = sales.Quantity*sales.UnitPrice" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryRevenue
053636522752SET 7 BABUSHKA NESTING BOXES22010-12-01 08:26:027.6517850.0United Kingdom15.30
153636571053WHITE METAL LANTERN62010-12-01 08:26:023.3917850.0United Kingdom20.34
253636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:023.3917850.0United Kingdom20.34
353636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:022.5517850.0United Kingdom15.30
453636622633HAND WARMER UNION JACK62010-12-01 08:28:021.8517850.0United Kingdom11.10
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "0 536365 22752 SET 7 BABUSHKA NESTING BOXES 2 \n", + "1 536365 71053 WHITE METAL LANTERN 6 \n", + "2 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", + "3 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", + "4 536366 22633 HAND WARMER UNION JACK 6 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country Revenue \n", + "0 2010-12-01 08:26:02 7.65 17850.0 United Kingdom 15.30 \n", + "1 2010-12-01 08:26:02 3.39 17850.0 United Kingdom 20.34 \n", + "2 2010-12-01 08:26:02 3.39 17850.0 United Kingdom 20.34 \n", + "3 2010-12-01 08:26:02 2.55 17850.0 United Kingdom 15.30 \n", + "4 2010-12-01 08:28:02 1.85 17850.0 United Kingdom 11.10 " + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Criando um novo DataFrame somente com os dados que compõe o 'Revenue'" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [], + "source": [ + "raw_sales = sales[[\"Quantity\",\"UnitPrice\", \"Revenue\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
QuantityUnitPriceRevenue
027.6515.30
163.3920.34
263.3920.34
362.5515.30
461.8511.10
\n", + "
" + ], + "text/plain": [ + " Quantity UnitPrice Revenue\n", + "0 2 7.65 15.30\n", + "1 6 3.39 20.34\n", + "2 6 3.39 20.34\n", + "3 6 2.55 15.30\n", + "4 6 1.85 11.10" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_sales.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 325145 entries, 0 to 325144\n", + "Data columns (total 3 columns):\n", + "Quantity 325145 non-null int64\n", + "UnitPrice 325145 non-null float64\n", + "Revenue 325145 non-null float64\n", + "dtypes: float64(2), int64(1)\n", + "memory usage: 7.4 MB\n" + ] + } + ], + "source": [ + "raw_sales.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Análisando e trantando os dados da variável 'Revenue'" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 134, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pylab import *\n", + "\n", + "sales.plot(x=\"InvoiceDate\", y=\"Revenue\", kind=\"line\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Como existem dados negativos, vamos eliminar os valores menores que 0 " + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5588, 9)" + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cancels = sales[sales[\"Revenue\"]<0]\n", + "cancels.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(319557, 9)" + ] + }, + "execution_count": 136, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.drop(sales[sales.Revenue < 0].index, inplace=True)\n", + "sales.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 138, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEACAYAAABYq7oeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xt8VPWd//HXx4Bi6wXU2J8FWbBLfxX9VdR4K7utS1tEa4Vu1eJ2lbpU2qrbdttaoetW22qrtWqlBVpUFC8rIm0VC3IREUVASJQ7QiJGCRcJl3C/5PL5/THfCUPOTGYyuUxC3s/HYx6Z+ZzvOec7yWQ+53s555i7IyIikuioXFdARERaHyUHERGJUHIQEZEIJQcREYlQchARkQglBxERiVByEBGRCCUHERGJUHIQEZGIDrmuQLZOOeUU79GjR66rISLSphQVFW1x9/x05TJODmaWBxQC6939SjPrCUwATgLeBq5394NmdgzwJHA+sBX4hruXhm2MAIYC1cD33X16iA8AHgbygEfd/d509enRoweFhYWZVl9ERAAz+yCTcg3pVvoBsCrh9X3AQ+7eC9hO7Euf8HO7u/8j8FAoh5n1BgYDZwEDgNFmlheSzijgcqA3cF0oKyIiOZJRcjCzbsBXgEfDawP6AZNCkfHAoPB8YHhNWP7FUH4gMMHdD7j7+0AJcGF4lLj7Wnc/SKw1MrCxb0xERLKXacvh98BPgZrw+mSgwt2rwusyoGt43hVYBxCW7wjla+N11kkVFxGRHEk75mBmVwKb3b3IzC6Nh5MU9TTLUsWTJaik1xE3s2HAMIDu3bvXU2sRORJUVlZSVlbG/v37c12VNqdTp05069aNjh07ZrV+JgPSfYGrzOwKoBNwArGWRGcz6xBaB92ADaF8GXA6UGZmHYATgW0J8bjEdVLFD+PuY4GxAAUFBboRhcgRrqysjOOPP54ePXoQ652WTLg7W7dupaysjJ49e2a1jbTdSu4+wt27uXsPYgPKr7r7N4HZwNWh2BDgxfB8cnhNWP6qx+4oNBkYbGbHhJlOvYCFwCKgl5n1NLOjwz4mZ/VuROSIsn//fk4++WQlhgYyM04++eRGtbgac57D7cAEM7sbeAd4LMQfA54ysxJiLYbBAO6+wswmAiuBKuAWd68GMLNbgenEprKOc/cVjaiXiBxBlBiy09jfW4OSg7u/BrwWnq8lNtOobpn9wDUp1r8HuCdJfCowtSF1EcnUi4vX8y+fOZUTOmXX9yrSHunyGXJEW71pFz+YsJifPr8011WRNiovL48+ffpw9tln89WvfpWKiopcV6lFKDnIEW3vwdhs6407NdtFsnPssceyePFili9fzkknncSoUaNyXaUWoeQgIpKhSy65hPXr19e+vv/++7ngggv47Gc/y5133gnA7bffzujRo2vL3HXXXTzwwAMpy5eWlnLmmWdy0003cdZZZ9G/f3/27dsHwKWXXlp7maAtW7YQv55cdXU1t912W+22/vznPzf5e22zF94TkfblFy+tYOWGnU26zd6fPIE7v3pWRmWrq6uZNWsWQ4fGrhQ0Y8YMiouLWbhwIe7OVVddxeuvv87gwYP54Q9/yM033wzAxIkTmTZtWsry3bt3p7i4mGeffZZHHnmEa6+9lr/85S/8+7//e8q6PPbYY5x44oksWrSIAwcO0LdvX/r375/1tNVklBxEROqxb98++vTpQ2lpKeeffz5f/vKXgVhymDFjBueeey4Au3fvpri4mKFDh7J582Y2bNhAeXk5Xbp0oXv37owcOTJp+e7du9OzZ0/69OkDwPnnn09paWm9dZoxYwZLly5l0qTYFYx27NhBcXGxkoOItD+ZHuE3tfiYw44dO7jyyisZNWoU3//+93F3RowYwXe+853IOldffTWTJk1i06ZNDB48GCBl+dLSUo455pja13l5ebXdSh06dKCmJnbVosRzFtydP/zhD1x22WVN/n7jNOYgIpKBE088kZEjR/K73/2OyspKLrvsMsaNG8fu3bsBWL9+PZs3bwZg8ODBTJgwgUmTJnH11bFzhesrn0qPHj0oKioCqG0lxLc1ZswYKisrAVizZg179uxp0verloOISIbOPfdczjnnHCZMmMD111/PqlWruOSSSwA47rjjePrppzn11FM566yz2LVrF127duW0004DoH///knL5+XlpdzfT37yE6699lqeeuop+vXrVxv/9re/TWlpKeeddx7uTn5+Pi+88EKTvleLXdmi7SkoKHDd7EfSeefD7Xxt9DzOOb0zL97SN9fVkQZatWoVZ555Zq6r0WYl+/2ZWZG7F6RbV91KIiISoeQgIiIRSg4i0qq11a7vXGvs703JQURarU6dOrF161YliAaK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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sales.plot(x=\"InvoiceDate\", y=\"Revenue\", kind=\"line\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Groupby\n", + "\n", + "### Encontrando o total do 'Revenue' por país agrupando a coluna 'Country' pelo 'Revenue'" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": {}, + "outputs": [], + "source": [ + "CountryGroups = sales.groupby(\"Country\")[\"Revenue\"].sum().reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CountryRevenue
36United Kingdom5311080.101
10EIRE176304.590
24Netherlands165582.790
14Germany138778.440
13France127193.680
0Australia79197.590
31Spain36116.710
33Switzerland34315.240
3Belgium24014.970
25Norway23182.220
32Sweden21762.450
20Japan21072.590
27Portugal20109.410
30Singapore13383.590
6Channel Islands12556.740
12Finland12362.880
9Denmark11739.370
19Italy10837.890
16Hong Kong8227.020
7Cyprus7781.900
1Austria6100.960
18Israel4225.780
26Poland3974.080
37Unspecified2898.650
15Greece2677.570
17Iceland2461.230
34USA2388.740
5Canada2093.390
23Malta1318.990
35United Arab Emirates1277.500
21Lebanon1120.530
22Lithuania1038.560
11European Community876.550
4Brazil602.310
28RSA573.180
8Czech Republic488.580
2Bahrain343.400
29Saudi Arabia90.720
\n", + "
" + ], + "text/plain": [ + " Country Revenue\n", + "36 United Kingdom 5311080.101\n", + "10 EIRE 176304.590\n", + "24 Netherlands 165582.790\n", + "14 Germany 138778.440\n", + "13 France 127193.680\n", + "0 Australia 79197.590\n", + "31 Spain 36116.710\n", + "33 Switzerland 34315.240\n", + "3 Belgium 24014.970\n", + "25 Norway 23182.220\n", + "32 Sweden 21762.450\n", + "20 Japan 21072.590\n", + "27 Portugal 20109.410\n", + "30 Singapore 13383.590\n", + "6 Channel Islands 12556.740\n", + "12 Finland 12362.880\n", + "9 Denmark 11739.370\n", + "19 Italy 10837.890\n", + "16 Hong Kong 8227.020\n", + "7 Cyprus 7781.900\n", + "1 Austria 6100.960\n", + "18 Israel 4225.780\n", + "26 Poland 3974.080\n", + "37 Unspecified 2898.650\n", + "15 Greece 2677.570\n", + "17 Iceland 2461.230\n", + "34 USA 2388.740\n", + "5 Canada 2093.390\n", + "23 Malta 1318.990\n", + "35 United Arab Emirates 1277.500\n", + "21 Lebanon 1120.530\n", + "22 Lithuania 1038.560\n", + "11 European Community 876.550\n", + "4 Brazil 602.310\n", + "28 RSA 573.180\n", + "8 Czech Republic 488.580\n", + "2 Bahrain 343.400\n", + "29 Saudi Arabia 90.720" + ] + }, + "execution_count": 140, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "CountryGroups.sort_values(by= \"Revenue\", ascending=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotando um histograma do consumo ou 'revenue' para um cliente" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD8CAYAAAB6paOMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAEVpJREFUeJzt3XusZWV9xvHvI4Ny8QLIgBMuHmknCGnk4inFYG0FNSgWsFGrNWZiqNOLtRpNdLRGbdImkLQiTY12BHW0KiKKULAqjqJp04DDRUUHg+JUpyAzWgjeCgK//rHXaU/HM+fsmXHtdfa830+ys9d6z1qznjlseFjXnapCktSuRwwdQJI0LItAkhpnEUhS4ywCSWqcRSBJjbMIJKlxFoEkNc4ikKTGWQSS1LgVQwcYx6GHHlozMzNDx5CkqXLjjTf+sKpWLrXcVBTBzMwMmzZtGjqGJE2VJP8xznIeGpKkxlkEktQ4i0CSGmcRSFLjLAJJalyvRZDkoCSXJ7ktyeYkT0tySJJrk9zevR/cZwZJ0uL63iO4CPhMVT0ZOAHYDKwDNlbVamBjNy9JGkhvRZDkscAzgEsAquqBqroXOAfY0C22ATi3rwySpKX1uUdwDLAdeH+Sm5NcnORA4PCqugugez+sxwySpCX0eWfxCuBk4NVVdX2Si9iFw0BJ1gJrAY4++ujdDjGz7prdXndPbDn/rEG2K0m7qs89gq3A1qq6vpu/nFEx3J1kFUD3vm2hlatqfVXNVtXsypVLPipDkrSbeiuCqvoB8P0kx3ZDZwDfBK4C1nRja4Ar+8ogSVpa3w+dezXw4SSPBO4AXsGofC5Lch7wPeBFPWeQJC2i1yKoqluA2QV+dEaf25Ukjc87iyWpcRaBJDXOIpCkxlkEktQ4i0CSGmcRSFLjLAJJapxFIEmNswgkqXEWgSQ1ziKQpMZZBJLUOItAkhpnEUhS4ywCSWqcRSBJjbMIJKlxFoEkNc4ikKTGWQSS1DiLQJIaZxFIUuMsAklqnEUgSY2zCCSpcRaBJDVuRZ9/eJItwI+Bh4AHq2o2ySHAx4AZYAvw4qq6p88ckqSdm8QewTOr6sSqmu3m1wEbq2o1sLGblyQNZIhDQ+cAG7rpDcC5A2SQJHX6LoICPpfkxiRru7HDq+ougO79sIVWTLI2yaYkm7Zv395zTElqV6/nCIDTqurOJIcB1ya5bdwVq2o9sB5gdna2+gooSa3rdY+gqu7s3rcBVwCnAHcnWQXQvW/rM4MkaXG9FUGSA5M8Zm4aeA5wK3AVsKZbbA1wZV8ZJElL6/PQ0OHAFUnmtvORqvpMkq8AlyU5D/ge8KIeM0iSltBbEVTVHcAJC4z/CDijr+1KknaNdxZLUuMsAklqnEUgSY2zCCSpcRaBJDXOIpCkxlkEktQ4i0CSGmcRSFLjLAJJapxFIEmN6/v7CDSAmXXXDLLdLeefNch2Je0Z9wgkqXEWgSQ1ziKQpMZZBJLUOItAkhpnEUhS4ywCSWqcRSBJjbMIJKlxFoEkNc4ikKTGWQSS1DiLQJIa13sRJNknyc1Jru7mn5Tk+iS3J/lYkkf2nUGStHOT2CN4DbB53vwFwIVVtRq4BzhvAhkkSTvRaxEkORI4C7i4mw9wOnB5t8gG4Nw+M0iSFtf3HsE7gTcAD3fzjwfuraoHu/mtwBE9Z5AkLaK3IkjyfGBbVd04f3iBRWsn669NsinJpu3bt/eSUZLU7x7BacDZSbYAlzI6JPRO4KAkc1+ReSRw50IrV9X6qpqtqtmVK1f2GFOS2tZbEVTVm6rqyKqaAV4CfKGqXgZ8EXhht9ga4Mq+MkiSljbEfQRvBF6X5NuMzhlcMkAGSVJnxdKL7Lmqug64rpu+AzhlEtuVJC1trD2CJL/RdxBJ0jDGPTT0niQ3JPmzJAf1mkiSNFFjFUFVPR14GXAUsCnJR5I8u9dkkqSJGPtkcVXdDryF0cne3wH+PsltSX6/r3CSpP6Ne47gKUkuZPTMoNOB36uq47rpC3vMJ0nq2bhXDf0D8F7gzVX187nBqrozyVt6SSZJmohxi+B5wM+r6iGAJI8A9quqn1XVh3pLJ0nq3bjnCD4P7D9v/oBuTJI05cYtgv2q6idzM930Af1EkiRN0rhF8NMkJ8/NJHkq8PNFlpckTYlxzxG8Fvh4krknha4C/qCfSJKkSRqrCKrqK0meDBzL6DsFbquqX/SaTJI0Ebvy0LnfBGa6dU5KQlV9sJdUkqSJGasIknwI+DXgFuChbrgAi0CSpty4ewSzwPFVteDXSkqSpte4Vw3dCjyhzyCSpGGMu0dwKPDNJDcA988NVtXZvaSSJE3MuEXw9j5DSJKGM+7lo19K8kRgdVV9PskBwD79RpMkTcK4Vw29ElgLHMLo6qEjgPcAZ/QXbbrNrLtm6AiSNJZxTxa/CjgNuA/+90tqDusrlCRpcsYtgvur6oG5mSQrGN1HIEmacuMWwZeSvBnYv/uu4o8D/9xfLEnSpIxbBOuA7cDXgT8GPs3o+4slSVNu3KuGHmb0VZXv7TeOJGnSxr1q6LsscE6gqo75lSeSJE3UrjxraM5+wIsYXUq6U0n2A74MPKrbzuVV9bYkTwIu7da/CXj5/BPRkqTJGuscQVX9aN7rP6vqncDpS6x2P3B6VZ0AnAicmeRU4ALgwqpaDdwDnLcH+SVJe2jcQ0Mnz5t9BKM9hMcstk73pNK57znet3sVowL5w258A6PHV7x77MSSpF+pcQ8N/d286QeBLcCLl1opyT7AjcCvA+8CvgPcW1UPdotsZXSX8kLrrmV0NzNHH330mDElSbtq3KuGnrk7f3hVPQScmOQg4ArguIUW28m664H1ALOzs968Jkk9GffQ0OsW+3lVvWOJn9+b5DrgVOCgJCu6vYIjgTvHzCpJ6sG4N5TNAn/K6DDOEcCfAMczOk+w4LmCJCu7PQGS7A88C9gMfBF4YbfYGuDK3Q0vSdpzu/LFNCdX1Y8Bkrwd+HhV/dEi66wCNnTnCR4BXFZVVyf5JnBpkr8GbgYu2e30kqQ9Nm4RHA3Mv9b/AWBmsRWq6mvASQuM3wGcMuZ2JUk9G7cIPgTckOQKRid3XwB8sLdUkqSJGfeqob9J8i/Ab3dDr6iqm/uLJUmalHFPFgMcANxXVRcBW7tHRUiSptxYRZDkbcAbgTd1Q/sC/9RXKEnS5Iy7R/AC4GzgpwBVdSdLPGJCkjQdxi2CB7pnBxVAkgP7iyRJmqRxi+CyJP/I6K7gVwKfxy+pkaS9wrhXDf1t913F9wHHAm+tqmt7TSZJmogli6C7M/izVfUswP/4S9JeZslDQ90TRH+W5HETyCNJmrBx7yz+b+DrSa6lu3IIoKr+opdUkqSJGbcIrulekqS9zKJFkOToqvpeVW2YVCBJ0mQtdY7gU3MTST7RcxZJ0gCWKoLMmz6mzyCSpGEsVQS1k2lJ0l5iqZPFJyS5j9Gewf7dNN18VdVje00nSerdokVQVftMKogkaRi78n0EkqS9kEUgSY2zCCSpcRaBJDXOIpCkxlkEktQ4i0CSGjfu00d3WZKjgA8CTwAeBtZX1UVJDgE+BswAW4AXV9U9feXQ5MysG+4BtVvOP2uwbUvTrs89ggeB11fVccCpwKuSHA+sAzZW1WpgYzcvSRpIb0VQVXdV1U3d9I+BzcARwDnA3GOtNwDn9pVBkrS0iZwjSDIDnARcDxxeVXfBqCyAwyaRQZK0sN6LIMmjgU8Ar62q+5Zaft56a5NsSrJp+/bt/QWUpMb1WgRJ9mVUAh+uqk92w3cnWdX9fBWwbaF1q2p9Vc1W1ezKlSv7jClJTeutCJIEuATYXFXvmPejq4A13fQa4Mq+MkiSltbb5aPAacDLga8nuaUbezNwPnBZkvOA7wEv6jGDJGkJvRVBVf0r//+rLuc7o6/tSpJ2jXcWS1LjLAJJapxFIEmNswgkqXEWgSQ1ziKQpMZZBJLUOItAkhpnEUhS4ywCSWqcRSBJjbMIJKlxFoEkNc4ikKTGWQSS1DiLQJIaZxFIUuMsAklqnEUgSY2zCCSpcRaBJDXOIpCkxlkEktQ4i0CSGmcRSFLjLAJJalxvRZDkfUm2Jbl13tghSa5Ncnv3fnBf25ckjafPPYIPAGfuMLYO2FhVq4GN3bwkaUC9FUFVfRn4rx2GzwE2dNMbgHP72r4kaTyTPkdweFXdBdC9H7azBZOsTbIpyabt27dPLKAktWbZniyuqvVVNVtVsytXrhw6jiTttSZdBHcnWQXQvW+b8PYlSTuYdBFcBazpptcAV054+5KkHfR5+ehHgX8Hjk2yNcl5wPnAs5PcDjy7m5ckDWhFX39wVb10Jz86o69tSpJ23bI9WSxJmgyLQJIaZxFIUuMsAklqnEUgSY2zCCSpcRaBJDXOIpCkxlkEktQ4i0CSGmcRSFLjLAJJapxFIEmNswgkqXEWgSQ1rrfvI5CkvcXMumsG2e6W88+ayHbcI5CkxlkEktQ4i0CSGmcRSFLjLAJJapxFIEmN8/JRaQ8MdVkhTO7SQu393COQpMZZBJLUuEEODSU5E7gI2Ae4uKrOHyKHNM329rtdNTkT3yNIsg/wLuC5wPHAS5McP+kckqSRIQ4NnQJ8u6ruqKoHgEuBcwbIIUlimCI4Avj+vPmt3ZgkaQBDnCPIAmP1Swsla4G13exPknyr11SLOxT44YDb3xPTmn2XcueCHpPsumn9ncMY2ZfZ73q+af297zT3r+B3/cRxFhqiCLYCR82bPxK4c8eFqmo9sH5SoRaTZFNVzQ6dY3dMa/ZpzQ1mH8q0Zl8OuYc4NPQVYHWSJyV5JPAS4KoBckiSGGCPoKoeTPLnwGcZXT76vqr6xqRzSJJGBrmPoKo+DXx6iG3vpmVxiGo3TWv2ac0NZh/KtGYfPHeqfuk8rSSpIT5iQpIaZxHsIMn7kmxLcuu8sUOSXJvk9u794CEzLiTJUUm+mGRzkm8keU03Pg3Z90tyQ5Kvdtn/qht/UpLru+wf6y4uWHaS7JPk5iRXd/PTkntLkq8nuSXJpm5s2X9eAJIclOTyJLd1n/mnTUP2JMd2v++5131JXjt0dovgl30AOHOHsXXAxqpaDWzs5pebB4HXV9VxwKnAq7pHd0xD9vuB06vqBOBE4MwkpwIXABd22e8Bzhsw42JeA2yeNz8tuQGeWVUnzrt8cRo+LzB6VtlnqurJwAmMfv/LPntVfav7fZ8IPBX4GXAFQ2evKl87vIAZ4NZ5898CVnXTq4BvDZ1xjL/DlcCzpy07cABwE/BbjG6yWdGNPw347ND5Fsh7JKN/cU8HrmZ0w+Syz91l2wIcusPYsv+8AI8Fvkt3jnOasu+Q9znAvy2H7O4RjOfwqroLoHs/bOA8i0oyA5wEXM+UZO8Or9wCbAOuBb4D3FtVD3aLLNdHkbwTeAPwcDf/eKYjN4zu6P9ckhu7O/lhOj4vxwDbgfd3h+QuTnIg05F9vpcAH+2mB81uEexlkjwa+ATw2qq6b+g846qqh2q0u3wkowcTHrfQYpNNtbgkzwe2VdWN84cXWHRZ5Z7ntKo6mdGTgF+V5BlDBxrTCuBk4N1VdRLwU5bhYaDFdOeNzgY+PnQWsAjGdXeSVQDd+7aB8ywoyb6MSuDDVfXJbngqss+pqnuB6xid5zgoydy9Lgs+imRgpwFnJ9nC6Cm6pzPaQ1juuQGoqju7922MjlOfwnR8XrYCW6vq+m7+ckbFMA3Z5zwXuKmq7u7mB81uEYznKmBNN72G0fH3ZSVJgEuAzVX1jnk/mobsK5Mc1E3vDzyL0cm/LwIv7BZbdtmr6k1VdWRVzTDazf9CVb2MZZ4bIMmBSR4zN83oePWtTMHnpap+AHw/ybHd0BnAN5mC7PO8lP87LARDZx/6hMlye3X/cO4CfsHo/zzOY3TcdyNwe/d+yNA5F8j9dEaHIL4G3NK9njcl2Z8C3NxlvxV4azd+DHAD8G1Gu9CPGjrrIn+H3wWunpbcXcavdq9vAH/ZjS/7z0uX80RgU/eZ+RRw8BRlPwD4EfC4eWODZvfOYklqnIeGJKlxFoEkNc4ikKTGWQSS1DiLQJIaZxFIUuMsAklqnEUgSY37HweQX80uK2vbAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sales[sales[\"CustomerID\"] == 17850.0][\"Revenue\"].plot(kind=\"hist\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotando um histograma da quantidade vendida de um produto" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 192, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sales[sales[\"StockCode\"] == '71053'][\"Quantity\"].hist()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Identificando e tratando os valores nulos" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 319557 entries, 0 to 325144\n", + "Data columns (total 9 columns):\n", + "InvoiceNo 319557 non-null object\n", + "StockCode 319557 non-null object\n", + "Description 318687 non-null object\n", + "Quantity 319557 non-null int64\n", + "InvoiceDate 319557 non-null object\n", + "UnitPrice 319557 non-null float64\n", + "CustomerID 238801 non-null float64\n", + "Country 319557 non-null object\n", + "Revenue 319557 non-null float64\n", + "dtypes: float64(3), int64(1), object(5)\n", + "memory usage: 24.4+ MB\n" + ] + } + ], + "source": [ + "sales.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NaN 80756\n", + " 17841.0 4702\n", + " 14911.0 3449\n", + "Name: CustomerID, dtype: int64" + ] + }, + "execution_count": 203, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.CustomerID.value_counts(dropna=False).nlargest(3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Foram identificados 80756 valores NaN em 'CustomerID', vamos preencher com 0" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [], + "source": [ + "sales.CustomerID.fillna(0, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryRevenue
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [InvoiceNo, StockCode, Description, Quantity, InvoiceDate, UnitPrice, CustomerID, Country, Revenue]\n", + "Index: []" + ] + }, + "execution_count": 206, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales[sales.CustomerID.isnull()]" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 319557 entries, 0 to 325144\n", + "Data columns (total 9 columns):\n", + "InvoiceNo 319557 non-null object\n", + "StockCode 319557 non-null object\n", + "Description 318687 non-null object\n", + "Quantity 319557 non-null int64\n", + "InvoiceDate 319557 non-null object\n", + "UnitPrice 319557 non-null float64\n", + "CustomerID 319557 non-null float64\n", + "Country 319557 non-null object\n", + "Revenue 319557 non-null float64\n", + "dtypes: float64(3), int64(1), object(5)\n", + "memory usage: 34.4+ MB\n" + ] + } + ], + "source": [ + "sales.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Substituindo os nomes dos países por números" + ] + }, + { + "cell_type": "code", + "execution_count": 223, + "metadata": {}, + "outputs": [], + "source": [ + "mymap = {'United Kingdom':1, 'Netherlands':2, 'Germany':3, 'France':4, 'USA':5} \n", + "\n", + "sales = sales.applymap(lambda s: mymap.get(s) if s in mymap else s)" + ] + }, + { + "cell_type": "code", + "execution_count": 224, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryRevenue
053636522752SET 7 BABUSHKA NESTING BOXES22010-12-01 08:26:027.6517850.0115.30
153636571053WHITE METAL LANTERN62010-12-01 08:26:023.3917850.0120.34
253636584029GKNITTED UNION FLAG HOT WATER BOTTLE62010-12-01 08:26:023.3917850.0120.34
353636585123AWHITE HANGING HEART T-LIGHT HOLDER62010-12-01 08:26:022.5517850.0115.30
453636622633HAND WARMER UNION JACK62010-12-01 08:28:021.8517850.0111.10
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "0 536365 22752 SET 7 BABUSHKA NESTING BOXES 2 \n", + "1 536365 71053 WHITE METAL LANTERN 6 \n", + "2 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", + "3 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", + "4 536366 22633 HAND WARMER UNION JACK 6 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country Revenue \n", + "0 2010-12-01 08:26:02 7.65 17850.0 1 15.30 \n", + "1 2010-12-01 08:26:02 3.39 17850.0 1 20.34 \n", + "2 2010-12-01 08:26:02 3.39 17850.0 1 20.34 \n", + "3 2010-12-01 08:26:02 2.55 17850.0 1 15.30 \n", + "4 2010-12-01 08:28:02 1.85 17850.0 1 11.10 " + ] + }, + "execution_count": 224, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 231, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1 292640\n", + "3 5466\n", + "4 5026\n", + "EIRE 4789\n", + "Spain 1420\n", + "2 1393\n", + "Belgium 1191\n", + "Name: Country, dtype: int64" ] }, - "execution_count": 24, + "execution_count": 231, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "data[(data['pop'] > 19552860) | (data['area']>423967)]" + "sales.Country.value_counts().nlargest(7)" ] } ], @@ -538,7 +3519,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.6.8" }, "toc": { "base_numbering": 1, diff --git "a/1-analise-explorat\303\263ria-basica/03-pandas/pandas102.ipynb" "b/1-analise-explorat\303\263ria-basica/03-pandas/pandas102.ipynb" old mode 100644 new mode 100755 index eee1606..8626738 --- "a/1-analise-explorat\303\263ria-basica/03-pandas/pandas102.ipynb" +++ "b/1-analise-explorat\303\263ria-basica/03-pandas/pandas102.ipynb" @@ -1,56 +1,60 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Pandas 2 - Trabalhando com modelagem de dados\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "Python é a linguagem preferida para *data scientists*, pois fornece o maior ecossistema entre as linguagens de programação e a profundidade de suas bibliotecas de computação científica é muito boa.\n", + "\n", + "Entre suas bibliotecas de computação científica, o **Pandas** está entre as mais úteis para operações de *Data Science*. Juntamente com o Scikit-learn (que vamos aprender mais adiante), o **Pandas** fornece quase tudo o que é necessário para um trabalho de qualidade na modelagem estatística de um *DataSet*. Esta aula se concentra em fornecer maneiras de manipulação de dados em Python, com a finalidade de dar fluência ao aprendizado desta linguagem, e aumentar a familiaridade com os recursos do **Pandas**. \n", + "\n", + "Dentro desta proposta de modelagem estatística de dados, passaremos por técnicas básicas de manipulação de dados, como segue.\n", + "\n", + "- Leitura do DataSet e reconhecimento dos dadso\n", + "- Tratamento de variável quantitativa contínua (salário) com preenchiemnto de NaNs e aplicação de LOG (para correção de assimetria da distribuição)\n", + "- Tratamento e análise de variável quantitativa discreta (idade, anos de estudo, região, cor/raça, estado civil, sexo)\n", + "- **Desafio: os homens ganham mais que as mulheres?**" + ] + }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 147, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", + "import numpy as np\n", "%matplotlib inline\n", - "%config InlineBackend.figure_formats=['svg']" + "%config InlineBackend.figure_formats=['svg']\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")" ] }, { - "cell_type": "code", - "execution_count": 21, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " O volume na unidade D ‚ Novo volume\n", - " O N£mero de S‚rie do Volume ‚ 9EB8-09AE\n", - "\n", - " Pasta de D:\\OneDrive\\datascience\\datascience_course\\1-analise-explorat¢ria-basica\\03-pandas\n", - "\n", - "26/01/2019 15:52 .\n", - "26/01/2019 15:52 ..\n", - "26/01/2019 15:52 .ipynb_checkpoints\n", - "26/01/2019 15:52 data\n", - "26/01/2019 08:30 img\n", - "11/01/2019 10:38 12.954 pandas101.ipynb\n", - "26/01/2019 15:52 74.033 pandas102.ipynb\n", - " 2 arquivo(s) 86.987 bytes\n", - " 5 pasta(s) 253.047.848.960 bytes dispon¡veis\n" - ] - } - ], "source": [ - "ls" + "# Leitura do DataSet e reconhecimento das variáveis" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 375, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Wall time: 133 ms\n" + "CPU times: user 143 ms, sys: 30.9 ms, total: 174 ms\n", + "Wall time: 173 ms\n" ] } ], @@ -60,169 +64,7 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Unnamed: 0ididadeanos_estudosalarioestado_civil
count66470.0000006.647000e+0466470.00000066036.00000047878.00000066470.000000
mean33234.5000003.445307e+1037.6348138.68606519706.7903230.587724
std19188.3805341.292491e+1011.3801583.37452288627.5320240.492248
min0.0000001.100190e+1020.0000005.000000-1.0000000.000000
25%16617.2500003.110060e+1028.0000005.0000003780.0000000.000000
50%33234.5000003.316781e+1037.0000008.0000007113.5996091.000000
75%49851.7500004.310361e+1047.00000011.00000012720.0000001.000000
max66469.0000005.311702e+1060.00000015.000000999999.0000001.000000
\n", - "
" - ], - "text/plain": [ - " Unnamed: 0 id idade anos_estudo salario \\\n", - "count 66470.000000 6.647000e+04 66470.000000 66036.000000 47878.000000 \n", - "mean 33234.500000 3.445307e+10 37.634813 8.686065 19706.790323 \n", - "std 19188.380534 1.292491e+10 11.380158 3.374522 88627.532024 \n", - "min 0.000000 1.100190e+10 20.000000 5.000000 -1.000000 \n", - "25% 16617.250000 3.110060e+10 28.000000 5.000000 3780.000000 \n", - "50% 33234.500000 3.316781e+10 37.000000 8.000000 7113.599609 \n", - "75% 49851.750000 4.310361e+10 47.000000 11.000000 12720.000000 \n", - "max 66469.000000 5.311702e+10 60.000000 15.000000 999999.000000 \n", - "\n", - " estado_civil \n", - "count 66470.000000 \n", - "mean 0.587724 \n", - "std 0.492248 \n", - "min 0.000000 \n", - "25% 0.000000 \n", - "50% 1.000000 \n", - "75% 1.000000 \n", - "max 1.000000 " - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.describe()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(66470, 9)" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 25, + "execution_count": 376, "metadata": {}, "outputs": [ { @@ -338,7 +180,7 @@ "4 157800.000000 1.0 norte " ] }, - "execution_count": 25, + "execution_count": 376, "metadata": {}, "output_type": "execute_result" } @@ -349,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 377, "metadata": {}, "outputs": [ { @@ -465,7 +307,7 @@ "66469 460.350006 1.0 centro-oeste " ] }, - "execution_count": 26, + "execution_count": 377, "metadata": {}, "output_type": "execute_result" } @@ -476,7 +318,57 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 378, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(66470, 9)" + ] + }, + "execution_count": 378, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 379, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 66470 entries, 0 to 66469\n", + "Data columns (total 9 columns):\n", + "Unnamed: 0 66470 non-null int64\n", + "id 66470 non-null float64\n", + "idade 66470 non-null int64\n", + "sexo 66470 non-null object\n", + "anos_estudo 66036 non-null float64\n", + "cor/raca 66228 non-null object\n", + "salario 47878 non-null float64\n", + "estado_civil 66470 non-null float64\n", + "regiao 66470 non-null object\n", + "dtypes: float64(4), int64(2), object(3)\n", + "memory usage: 4.6+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 380, "metadata": {}, "outputs": [ { @@ -607,7 +499,7 @@ "max 1.000000 " ] }, - "execution_count": 27, + "execution_count": 380, "metadata": {}, "output_type": "execute_result" } @@ -617,1191 +509,4755 @@ ] }, { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pandas.core.frame.DataFrame" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pandas.core.series.Series" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "type(df['salario'])" + "# Tratamento da variável 'salario'\n", + "\n", + "O Salário é a variável quantitativa contínua que desperta grande interesse denro do banco de dados, tanto para análise quanto para predição (como veremos mais adiante em *Machine Learning*). Por isso, o seu tratamento deve contar com a maior atenção pelo cientista de dados, no sentido de obter a modelagem mais favorável dentro do estudo." ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 381, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "pandas.core.frame.DataFrame" + "NaN 18592\n", + " 0.0 1841\n", + "-1.0 1101\n", + " 999999.0 367\n", + " 5229.0 277\n", + " 7200.0 260\n", + " 7560.0 244\n", + "Name: salario, dtype: int64" ] }, - "execution_count": 30, + "execution_count": 381, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "type(df[['salario']])" + "df['salario'].value_counts(dropna=False).nlargest(7)" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 382, "metadata": { - "scrolled": true + "scrolled": false }, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 36, + "execution_count": 382, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/svg+xml": [ - "\r\n", - "\r\n", - "\r\n", - "\r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - "\r\n" + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" ], "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1809,1841 +5265,4691 @@ } ], "source": [ - "df['salario'].plot.hist(bins=50, xlim=(-10000, 100000))" + "df['salario'].plot.hist(bins=500, xlim=(-10000, 100000))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podemos perceber que a quantidade de valores nulos é muito grande (18592 em 66470 -> 28%). Além disso, temos uma distribuição bastante assimétrica para a direita. Como boas práticas, vamos preencher os nulos com a mediana, o que deve centralizar a amostra, e utilizar a função logarítmica **LOG** para corrigir a assimetria, e observar a evolução da sua distribuição no histograma." + ] + }, + { + "cell_type": "code", + "execution_count": 383, + "metadata": {}, + "outputs": [], + "source": [ + "df['salario'].fillna(df['salario'].median(),inplace=True)" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 384, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + " 7113.599609 18594\n", + " 0.000000 1841\n", + "-1.000000 1101\n", + " 999999.000000 367\n", + " 5229.000000 277\n", + " 7200.000000 260\n", + " 7560.000000 244\n", + "Name: salario, dtype: int64" ] }, - "execution_count": 32, + "execution_count": 384, "metadata": {}, "output_type": "execute_result" - }, - { - "data": { - "image/svg+xml": [ - "\r\n", - "\r\n", - "\r\n", - "\r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - "\r\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ - "df['salario'].sample(1000).plot.kde()" + "df['salario'].value_counts(dropna=False).nlargest(7)" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 385, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 40, + "execution_count": 385, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/svg+xml": [ - "\r\n", - "\r\n", - "\r\n", - "\r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - "\r\n" + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" ], "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -3651,243 +9957,9071 @@ } ], "source": [ - "df.anos_estudo.plot.hist(bins=50, figsize=(8,6))" + "df['salario'].plot.hist(bins=500, xlim=(-10000, 100000))" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 386, "metadata": {}, - "outputs": [ - { + "outputs": [], + "source": [ + "df['salario'] = np.log1p(df['salario'])" + ] + }, + { + "cell_type": "code", + "execution_count": 387, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " 8.869904 18594\n", + " 0.000000 1841\n", + "-inf 1101\n", + " 13.815511 367\n", + " 8.562167 277\n", + " 8.881975 260\n", + " 8.930759 244\n", + "Name: salario, dtype: int64" + ] + }, + "execution_count": 387, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['salario'].value_counts(dropna=False).nlargest(7)" + ] + }, + { + "cell_type": "code", + "execution_count": 388, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "df = df.replace(-np.inf, np.nan)" + ] + }, + { + "cell_type": "code", + "execution_count": 389, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " 8.869904 18594\n", + " 0.000000 1841\n", + "NaN 1101\n", + " 13.815511 367\n", + " 8.562167 277\n", + " 8.881975 260\n", + " 8.930759 244\n", + "Name: salario, dtype: int64" + ] + }, + "execution_count": 389, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['salario'].value_counts(dropna=False).nlargest(7)" + ] + }, + { + "cell_type": "code", + "execution_count": 391, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 391, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df['salario'].plot.hist(bins=50, xlim=(-1, 15))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podemos observar que, apresar do pico central, a distribuição da amostra parece normalizada, ou semelhante à uma distribuição Gaussiana, como veremos mais adiante." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tratamento da variável 'idade'\n", + "\n", + "A idade é uma variável quantitativa discreta que não apresenta valores faltantes (*missind values*). Vamos explorara os valores e a distribuição dos dados." + ] + }, + { + "cell_type": "code", + "execution_count": 288, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20 2104\n", + "28 2056\n", + "26 2040\n", + "22 2034\n", + "27 2017\n", + "23 2014\n", + "25 2014\n", + "Name: idade, dtype: int64" + ] + }, + "execution_count": 288, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.idade.value_counts(dropna=False).nlargest(7)" + ] + }, + { + "cell_type": "code", + "execution_count": 216, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 216, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.idade.plot.hist(bins=50)" + ] + }, + { + "cell_type": "code", + "execution_count": 217, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 217, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df['idade'].sample(1000).plot.kde()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Como a distribuição apresenta alguma assimetria à direita, podemos pensar em utilizar a função **LOG**, de acordo com as boas práticas, e observar a evolução do seu comportamento." + ] + }, + { + "cell_type": "code", + "execution_count": 218, + "metadata": {}, + "outputs": [], + "source": [ + "df['idade'] = np.log(df['idade'])" + ] + }, + { + "cell_type": "code", + "execution_count": 219, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 219, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df['idade'].sample(1000).plot.kde()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tratando a variável 'anos_estudo'\n", + "\n", + "Também trata-se de uma variável quantitativa discreta, com valores faltantes (*missing values*) ou NaNs estatísticamente insignificante (434 em 66470 -> 0.65%)" + ] + }, + { + "cell_type": "code", + "execution_count": 220, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " 5.0 23349\n", + " 11.0 16790\n", + " 15.0 5636\n", + " 8.0 5017\n", + " 10.0 2704\n", + " 7.0 2612\n", + " 12.0 2610\n", + " 9.0 2474\n", + " 6.0 2237\n", + " 13.0 1348\n", + " 14.0 1259\n", + "NaN 434\n", + "Name: anos_estudo, dtype: int64" + ] + }, + "execution_count": 220, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.anos_estudo.value_counts(dropna=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 221, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 221, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.anos_estudo.plot.hist(bins=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Observamos picos de dados nos anos de conclusão das etapas do processo formal de educação em 5 anos (ensino primário), 9 anos (ensino fundamental), 11 anos (ensino médio) e 15 anos (ensino superior)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tratamento da variável 'regiao\n", + "\n", + "A variável da região pode ser classificada como qualitativa nominal com 5 categorias. Observamos que a opção do **nosdeste** está muito reduzida, o que indica possivelmente a presença de um viés (**Viés** ou tendência é um peso desproporcional a favor ou contra uma coisa, pessoa ou grupo comparado a outro, geralmente de uma maneira considerada injusta. *fonte: Wikipedia*)." + ] + }, + { + "cell_type": "code", + "execution_count": 222, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "sudeste 25220\n", + "centro-oeste 14702\n", + "norte 14653\n", + "sul 11890\n", + "nordeste 5\n", + "Name: regiao, dtype: int64" + ] + }, + "execution_count": 222, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.regiao.value_counts(dropna=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 223, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 223, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.regiao.value_counts().plot(kind='bar')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tratamento da variável cor/raca\n", + "\n", + "Também trata-se de uma variável qualitativa nominal com 5 categorias, com número de valores faltantes ou *missing values* insignificante. Como boas práticas, vamos eliminar o caracter de barra ( / ) do título para evitar erros de processamento computacional." + ] + }, + { + "cell_type": "code", + "execution_count": 242, + "metadata": {}, + "outputs": [], + "source": [ + "df.rename(columns={'cor/raca':'cor_raca'},inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 243, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Unnamed: 0', 'id', 'idade', 'sexo', 'anos_estudo', 'cor_raca',\n", + " 'salario', 'estado_civil', 'regiao'],\n", + " dtype='object')" + ] + }, + "execution_count": 243, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 244, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Branca 31689\n", + "Parda 28370\n", + "Preta 5249\n", + "Indigena 597\n", + "Amarela 323\n", + "NaN 242\n", + "Name: cor_raca, dtype: int64" + ] + }, + "execution_count": 244, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['cor_raca'].value_counts(dropna=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 245, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 245, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.cor_raca.value_counts().plot(kind='bar')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tratamento da variável 'estado_civil'\n", + "\n", + "Trata-se de uma variável binária (duas categorias), sem *missing values*. O fato mais curioso é que não está explicito qual a representação dos valores encontrados, ou seja, quais opções correspondem aos números 0.0 e 1.0. Geralmente os bancos de dados tem uma dicionário ou memorial descritivo com informações complementares, como por exemplo quais valores equivalem a solteiros e casados, ou alguma outra opção." + ] + }, + { + "cell_type": "code", + "execution_count": 248, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0 39066\n", + "0.0 27404\n", + "Name: estado_civil, dtype: int64" + ] + }, + "execution_count": 248, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['estado_civil'].value_counts(dropna=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 249, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 249, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.estado_civil.value_counts().plot(kind='bar')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tratando da variável 'sexo'\n", + "\n", + "Também trata-se de uma variável binária (duas categorias), e sem *mising values*. Além disso, também apresenta um fato curioso de 72 observações dentro de uma terceira categoria denominada 'gestante'. Trataremos destes valores com a substituição por 'mulher'." + ] + }, + { + "cell_type": "code", + "execution_count": 250, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "mulher 33607\n", + "homem 32791\n", + "gestante 72\n", + "Name: sexo, dtype: int64" + ] + }, + "execution_count": 250, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['sexo'].value_counts(dropna=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 254, + "metadata": {}, + "outputs": [], + "source": [ + "df = df.replace('gestante', 'mulher')" + ] + }, + { + "cell_type": "code", + "execution_count": 255, + "metadata": {}, + "outputs": [ + { "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
rider_id_xrider_feeorigin_latitudeorigin_longitudelogistic_regiondistance_origin_destinationdistance_originexpected_delivery_timedelivery_date_localexpected_delivery_time_minreal_delivery_time_mintime_to_confirm_mintime_to_assign_mintime_to_accept_mintime_to_origin_mintime_at_origin_mintime_in_standby_mintime_to_destination_mintime_at_destination_min
015158.9-30.030975-51.231535Porto Alegre781.00.780 days 00:34:59.4660000002018-09-06T15:32:40.637Z34.99110029.8488502.5343670.3694830.0000003.62730010.1425830.013.5401678.640600
168858.9-22.973995-43.188620Rio - Zona Sul845.04.330 days 00:39:59.6170000002018-09-23T19:37:43.494Z39.99361739.7098330.42475028.3942000.0899177.1042673.1277330.00.5689679.248500
260412.9-15.774803-47.885519Brasilia6633.02.140 days 01:04:59.3780000002018-09-07T13:00:29.639Z64.98963349.9025670.5303830.3245000.4993507.98538313.0563500.027.5066002.030917
312369.9-25.438178-49.266473Curitiba2196.03.920 days 00:39:59.2310000002018-09-09T19:35:35.349Z39.98718339.1148000.4553179.3620500.0928177.2729675.1878670.016.7437832.726683
4228288.9-22.948660-43.184058Rio - Zona Sul609.02.670 days 00:39:59.2010000002018-11-08T21:00:56.439Z39.98668336.1013500.6380170.3188830.2046178.69818319.6311330.06.6105170.560167
\n", - "
" + "text/plain": [ + "" + ] + }, + "execution_count": 255, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" ], "text/plain": [ - " rider_id_x rider_fee origin_latitude origin_longitude logistic_region \\\n", - "0 1515 8.9 -30.030975 -51.231535 Porto Alegre \n", - "1 6885 8.9 -22.973995 -43.188620 Rio - Zona Sul \n", - "2 604 12.9 -15.774803 -47.885519 Brasilia \n", - "3 1236 9.9 -25.438178 -49.266473 Curitiba \n", - "4 22828 8.9 -22.948660 -43.184058 Rio - Zona Sul \n", - "\n", - " distance_origin_destination distance_origin expected_delivery_time \\\n", - "0 781.0 0.78 0 days 00:34:59.466000000 \n", - "1 845.0 4.33 0 days 00:39:59.617000000 \n", - "2 6633.0 2.14 0 days 01:04:59.378000000 \n", - "3 2196.0 3.92 0 days 00:39:59.231000000 \n", - "4 609.0 2.67 0 days 00:39:59.201000000 \n", - "\n", - " delivery_date_local expected_delivery_time_min \\\n", - "0 2018-09-06T15:32:40.637Z 34.991100 \n", - "1 2018-09-23T19:37:43.494Z 39.993617 \n", - "2 2018-09-07T13:00:29.639Z 64.989633 \n", - "3 2018-09-09T19:35:35.349Z 39.987183 \n", - "4 2018-11-08T21:00:56.439Z 39.986683 \n", - "\n", - " real_delivery_time_min time_to_confirm_min time_to_assign_min \\\n", - "0 29.848850 2.534367 0.369483 \n", - "1 39.709833 0.424750 28.394200 \n", - "2 49.902567 0.530383 0.324500 \n", - "3 39.114800 0.455317 9.362050 \n", - "4 36.101350 0.638017 0.318883 \n", - "\n", - " time_to_accept_min time_to_origin_min time_at_origin_min \\\n", - "0 0.000000 3.627300 10.142583 \n", - "1 0.089917 7.104267 3.127733 \n", - "2 0.499350 7.985383 13.056350 \n", - "3 0.092817 7.272967 5.187867 \n", - "4 0.204617 8.698183 19.631133 \n", - "\n", - " time_in_standby_min time_to_destination_min time_at_destination_min \n", - "0 0.0 13.540167 8.640600 \n", - "1 0.0 0.568967 9.248500 \n", - "2 0.0 27.506600 2.030917 \n", - "3 0.0 16.743783 2.726683 \n", - "4 0.0 6.610517 0.560167 " + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.sexo.value_counts().plot(kind='bar')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Desafio: os homens ganham mais do que as mulheres?\n", + "\n", + "\n", + "\n", + "O objetivo deste desafio é trabalhar com os conceitos de **Medidas de Centralidade** (média, moda, mediana), e a partir dos resultados, fazer uma análise do comportamento da variável salário.\n", + "\n", + "Como na nossa modelagem fizemos muitas alterações nos dados, vamos começar do zero lendo novamente o arquivo original." + ] + }, + { + "cell_type": "code", + "execution_count": 336, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 149 ms, sys: 34.4 ms, total: 184 ms\n", + "Wall time: 186 ms\n" + ] + } + ], + "source": [ + "%time df = pd.read_csv(r'./data/data.zip')" + ] + }, + { + "cell_type": "code", + "execution_count": 337, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 66470 entries, 0 to 66469\n", + "Data columns (total 9 columns):\n", + "Unnamed: 0 66470 non-null int64\n", + "id 66470 non-null float64\n", + "idade 66470 non-null int64\n", + "sexo 66470 non-null object\n", + "anos_estudo 66036 non-null float64\n", + "cor/raca 66228 non-null object\n", + "salario 47878 non-null float64\n", + "estado_civil 66470 non-null float64\n", + "regiao 66470 non-null object\n", + "dtypes: float64(4), int64(2), object(3)\n", + "memory usage: 4.6+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 338, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "mulher 33607\n", + "homem 32791\n", + "gestante 72\n", + "Name: sexo, dtype: int64" ] }, - "execution_count": 24, + "execution_count": 338, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df.head()" + "df['sexo'].value_counts(dropna=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 339, + "metadata": {}, + "outputs": [], + "source": [ + "df = df.replace('gestante', 'mulher')" + ] + }, + { + "cell_type": "code", + "execution_count": 340, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "mulher 33679\n", + "homem 32791\n", + "Name: sexo, dtype: int64" + ] + }, + "execution_count": 340, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['sexo'].value_counts(dropna=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Separando os dados em dois DataFrames distintos (homem e mulher)" + ] + }, + { + "cell_type": "code", + "execution_count": 341, + "metadata": {}, + "outputs": [], + "source": [ + "df_homem = df[df['sexo'] == 'homem']\n", + "df_mulher = df[df['sexo'] == 'mulher']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testando as hipóteses de salário maior para os homens para média, mediana e moda" + ] + }, + { + "cell_type": "code", + "execution_count": 342, + "metadata": {}, + "outputs": [], + "source": [ + "media_salario_homem = df_homem['salario'].mean()\n", + "mediana_salario_homem = df_homem['salario'].median()\n", + "moda_salario_homem = df_homem['salario'].idxmax()\n", + "\n", + "media_salario_mulher = df_mulher['salario'].mean()\n", + "mediana_salario_mulher = df_mulher['salario'].median()\n", + "moda_salario_mulher = df_mulher['salario'].idxmax()" + ] + }, + { + "cell_type": "code", + "execution_count": 343, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 343, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "media_salario_homem > media_salario_mulher" + ] + }, + { + "cell_type": "code", + "execution_count": 344, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 344, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mediana_salario_homem > mediana_salario_mulher" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 345, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "10738550.000000007" + "False" ] }, - "execution_count": 25, + "execution_count": 345, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df['rider_fee'].sum()" + "moda_salario_homem > moda_salario_mulher" + ] + }, + { + "cell_type": "code", + "execution_count": 346, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Salário médio homens = 22650.38 Salário médio mulheres = 15590.65\n", + "Salário mediano homens = 8400.00 Salário mediano mulheres = 5562.00\n", + "Salário mais frequente homens = 386.00 Salário mais frequente mulheres = 1099.00\n" + ] + } + ], + "source": [ + "print('Salário médio homens =',\"%.2f\"% media_salario_homem,'Salário médio mulheres =',\"%.2f\"% media_salario_mulher)\n", + "print('Salário mediano homens =',\"%.2f\"% mediana_salario_homem,'Salário mediano mulheres =',\"%.2f\"% mediana_salario_mulher)\n", + "print('Salário mais frequente homens =',\"%.2f\"% moda_salario_homem,'Salário mais frequente mulheres =',\"%.2f\"% moda_salario_mulher)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Concluimos que na média os homens ganham mais, e segundo a mediana também. Porém o salários mais frequente (moda) é maios para as mulheres." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## No histograma fica claro que os homens tem salário maior que as mulheres" + ] + }, + { + "cell_type": "code", + "execution_count": 347, + "metadata": {}, + "outputs": [], + "source": [ + "df_homem.dropna(inplace=True)\n", + "df_mulher.dropna(inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 353, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import pyplot\n", + "\n", + "bins = 45\n", + "\n", + "ax = pyplot.hist(df_homem['salario'], bins, alpha=0.5, label='Salário Homens',color='blue')\n", + "ax = pyplot.hist(df_mulher['salario'], bins, alpha=0.5, label='Salário Mulheres',color='red')\n", + "\n", + "pyplot.legend(loc='upper right')\n", + "pyplot.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -3907,7 +19041,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.8" }, "toc": { "base_numbering": 1, diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/aula.ipynb" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/aula.ipynb" old mode 100644 new mode 100755 index 5e8bbec..daee24a --- "a/1-analise-explorat\303\263ria-basica/04-probabilidade/aula.ipynb" +++ "b/1-analise-explorat\303\263ria-basica/04-probabilidade/aula.ipynb" @@ -4,18 +4,119 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Probabilidade\n", - "\"Probabilidade ... é, portanto, simplesmente uma fração cujo numerador é o número de casos favoráveis e cujo denominador é o número de todos os casos possíveis ... quando nada nos leva a esperar que qualquer um desses casos ocorra mais do que qualquer outro. Pierre-Simon Laplace, 1814\"\n", + "# Probabilidade\n", "\n", - "### Exemplos\n", + "
\n", + "\n", + "
\n", "\n", - "#### (1) Qual a probabilidade de retirarmos duas cartas de paus (naipe) em um baralho (52 cartas) em 2 retiradas com reposicao (apos a retirada da carta, devolvemos ao baralho e reembaralhamos)?\n", - "\n" + "*fonte: Mundo Educação*\n", + "\n", + "Probabilidade é o estudo das chances de obtenção de cada resultado de um experimento aleatório. A essas chances são atribuídos os números reais do intervalo entre 0 e 1. Resultados mais próximos de 1 têm mais chances de ocorrer. Além disso, a probabilidade também pode ser apresentada na forma percentual.\n", + "\n", + "### Experimento aleatório e ponto amostral\n", + "\n", + "Um experimento aleatório pode ser repetido inúmeras vezes e nas mesmas condições e, mesmo assim, apresenta resultados diferentes. Cada um desses resultados possíveis é chamado de ponto amostral. São exemplos de experimentos aleatórios:\n", + "\n", + "- Cara ou coroa\n", + "\n", + "Lançar uma moeda e observar se a face voltada para cima é cara ou coroa é um exemplo de experimento aleatório. Se a moeda não for viciada e for lançada sempre nas mesmas condições, poderemos ter como resultado tanto cara quanto coroa.\n", + "\n", + "- Lançamento de um dado\n", + "\n", + "Lançar um dado e observar qual é o número da face superior também é um experimento aleatório. Esse número pode ser 1, 2, 3, 4, 5 ou 6 e cada um desses resultados apresenta a mesma chance de ocorrer. Em cada lançamento, o resultado pode ser igual ao anterior ou diferente dele.\n", + "\n", + "Observe que, no lançamento da moeda, as chances de repetir o resultado anterior são muito maiores.\n", + "\n", + "- Retirar uma carta aleatória de um baralho\n", + "\n", + "Cada carta tem a mesma chance de ocorrência cada vez que o experimento é realizado, por isso, esse é também um experimento aleatório.\n", + "\n", + "### Espaço amostral\n", + "\n", + "O espaço amostral (Ω) é o conjunto formado por todos os resultados possíveis de um experimento aleatório. Em outras palavras, é o conjunto formado por todos os pontos amostrais de um experimento. Veja exemplos:\n", + "\n", + "- O espaço amostral do experimento “cara ou coroa” é o conjunto S = {Cara, Coroa}. Os pontos amostrais desse experimento são os mesmos elementos desse conjunto.\n", + "\n", + "- O espaço amostral do experimento “lançamento de um dado” é o conjunto S = {1, 2, 3, 4, 5, 6}. Os pontos amostrais desse experimento são 1, 2, 3, 4, 5 e 6.\n", + "\n", + "O espaço amostral também é chamado de Universo e pode ser representado pelas outras notações usadas nos conjuntos. Além disso, todas as operações entre conjuntos valem também para espaços amostrais.\n", + "\n", + "O número de elementos do espaço amostral, número de pontos amostrais do espaço amostral ou número de casos possíveis em um espaço amostral é representado da seguinte maneira: n(Ω).\n", + "\n", + "### Evento\n", + "\n", + "Um evento é qualquer subconjunto de um espaço amostral. Ele pode conter nenhum elemento (conjunto vazio) ou todos os elementos de um espaço amostral. O número de elementos do evento é representado da seguinte maneira: n(E), sendo E o evento em questão.\n", + "\n", + "São exemplos de eventos:\n", + "\n", + "- Sair cara em um lançamento de uma moeda\n", + "\n", + "O evento é sair cara e possui um único elemento. A representação dos eventos também é feita com notações de conjuntos:\n", + "\n", + "E = {cara}\n", + "\n", + "O seu número de elementos é n(E) = 1.\n", + "\n", + "- Sair um número par no lançamento de um dado.\n", + "\n", + "O evento é sair um número par:\n", + "\n", + "E = {2, 4, 6}\n", + "\n", + "O seu número de elementos é n(E) = 3.\n", + "Não pare agora... Tem mais depois da publicidade ;)\n", + "\n", + "Os eventos que possuem apenas um elemento (ponto amostral) são chamados de simples. Quando o evento é igual ao espaço amostral, ele é chamado de evento certo e sua probabilidade de ocorrência é de 100%. Quando um evento é igual ao conjunto vazio, ele é chamado de evento impossível e possui 0% de chances de ocorrência.\n", + "\n", + "### Cálculo da probabilidade\n", + "\n", + "Seja E um evento qualquer no espaço amostral Ω. A probabilidade do evento A ocorrer é a razão entre o número de resultados favoráveis e o número de resultados possíveis. Em outras palavras, é o número de elementos do evento dividido pelo número de elementos do espaço amostral a que ele pertence.\n", + "\n", + "P(E) = n(E)/n(Ω)\n", + "\n", + "Observações:\n", + "\n", + "- O número de elementos do evento sempre é menor ou igual ao número de elementos do espaço amostral e maior ou igual a zero. Por isso, o resultado dessa divisão sempre está no intervalo 0 ≤ P(A) ≤ 1;\n", + "\n", + "- Quando é necessário usar porcentagem, devemos multiplicar o resultado dessa divisão por 100 ou usar regra de três;\n", + "\n", + "- A probabilidade de um evento não acontecer é determinada por:\n", + "\n", + "P(A-1) = 1 – P(A)\n", + "\n", + "### De maneira objetiva\n", + "\n", + "\"Probabilidade ... é, portanto, simplesmente uma fração cujo numerador é o número de casos favoráveis e cujo denominador é o número de todos os casos possíveis ... quando nada nos leva a esperar que qualquer um desses casos ocorra mais do que qualquer outro.\" Pierre-Simon Laplace, 1814.\n", + "\n", + "Vamos a alguns exemplos." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Baralho de cartas\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "O principal baralho de 52 cartas, em uso atualmente, inclui 13 cartas de cada um dos quatro naipes franceses, paus (♣), ouros (♦), copas (♥) e espadas (♠), com cartas de figuras. Cada naipe inclui um ás, que descreve um único símbolo de seu naipe (muito grande, muitas vezes apenas o ás de espadas) um rei, uma rainha, e um valete, cada um representado com um símbolo de seu naipe, com valores de dois a dez, com cada cartão mostrando o número de símbolos de seu naipe. Para além destas 52 cartas, baralhos comerciais geralmente incluem dois coringas. Em muitos jogos, os coringas não são usados. Os coringas são geralmente distinguidos pela cor. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Qual a probabilidade de retirarmos duas cartas de paus (naipe) em um baralho (52 cartas) em 2 retiradas com reposição (apos a retirada da carta, devolvemos ao baralho e reembaralhamos)?" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -24,7 +125,7 @@ "0.0625" ] }, - "execution_count": 1, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -43,12 +144,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### (2) E se nao devolvessemos a primeira carta ao baralho?" + "### E se não devolvessemos a primeira carta ao baralho?" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -57,7 +158,7 @@ "0.058823529411764705" ] }, - "execution_count": 2, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -82,22 +183,349 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### (3) Paradoxo do aniversariante.\n", - "Quantas pessoas precisam ter em uma sala para que tenha pelo menos um par de aniversarios no mesmo dia?" + "# Dados\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "A função do dado é gerar um resultado aleatório que fica restrito ao número de faces dele. Esse resultado, então, pode ser manipulado (caso seja um número) através de fórmulas caso o jogo exija. Por exemplo, um número entre 20 e 25 utilizando dados de seis lados exige a aplicação de uma fórmula matemática. Os dados são comumente utilizados em jogos de tabuleiro tradicionais e jogos de RPG.\n", + "\n", + "Uma pequena curiosidade quanto aos dados clássicos (fabricados de forma correta), de seis lados: a soma dos lados opostos resulta no número sete. Ou seja, se de um lado temos o número um automaticamente teríamos o número seis do outro lado. Isso ocorre também com o dois casando com o cinco, e o três com o quatro. Isso se aplica também a qualquer outro dado, a soma de dois lados opostos sempre é igual ao número de faces mais um. Assim, um D20 somaria 21 nos lados opostos, um D12 somaria 13, e assim por diante. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Três dados comuns e honestos serão lançados. A probabilidade de obter o número 6 mais de uma vez é?\n", + "\n", + "A probabilidade do número 6 ser obtido mais de uma vez significa que ele deve aparecer nos três dados OU em pelo menos dois.\n", + "\n", + "- A probabilidade de se obter \"6\" nos três dados é:\n", + "```python\n", + "1/6 × 1/6 × 1/6 = 1/216 \n", + "```\n", + "\n", + "- A probabilidade de se obter \"6\" em pelo menos dois dados é:\n", + "\n", + "Obs: Deve-se considerar que podemos obter as seguintes combinações,\n", + "\n", + "dado1 = 6 e dado2 = 6 e dado3 ≠ 6 ou..\n", + "dado1 = 6 e dado2 ≠ 6 e dado3 = 6 ou..\n", + "dado1 ≠ 6 e dado2 = 6 e dado3 = 6;\n", + "\n", + "```python\n", + "1/6 × 1/6 × 5/6 = 5/216\n", + "1/6 × 1/6 × 5/6 = 5/216\n", + "1/6 × 1/6 × 5/6 = 5/216\n", + "```\n", + "Somando estas probabilidades temos:\n", + "\n", + "\n", + "```python\n", + "15/216\n", + "```\n", + "\n", + "Como pode aparecer duas OU três vezes, somamos as duas probabilidades:\n", + "\n", + "```python\n", + "1/216 + 15/216 = 16/216\n", + "```\n", + "\n", + "\n", + "Leia mais em Brainly.com.br - https://brainly.com.br/tarefa/4343213#readmore\n", + "\n", + "Vamos testar este exemplo na prática, através de um simulador que capaz de realizar **n** lançamentos, e comparar os resultados com a probabilidade teórica calculada (16/216 = 0.074074)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simulador para rolagem de três dados, obtendo o resultado 6 em pelo menos dois dados" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Digite o número de pessoas: 40\n", - "Digite o número de repetições: 10000\n", - "Em 40 pessoas e 10000 testes deram-se 8905 vezes em que pelo menos duas pessoas fazem anos no mesmo dia, percentagem: 89.05%\n" + "CPU times: user 4.83 ms, sys: 74.8 ms, total: 79.6 ms\n", + "Wall time: 79.4 ms\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "%matplotlib inline\n", + "\n", + "# definimos a quantidade de ensaios.\n", + "\n", + "n = 100000\n", + "quantidade_ensaios = n\n", + "\n", + "# definimos a quantidade de lançamentos por ensaio.\n", + "lançamentos = 3\n", + "\n", + "# definimos a probabilidade de obter cada em cada lançamento.\n", + "probabilidade_sucesso = 1/6\n", + "\n", + "# binomial retorna o número de sucessos de cada vez que se realizou um ensaio de 8 lançamentos.\n", + "%time samples_binomial = np.random.binomial(n = lançamentos, p = probabilidade_sucesso, size = quantidade_ensaios)\n", + "\n", + "# construímos um gráfico.\n", + "eixo_x = 'Número de acertos por ensaio de 8 lançamentos'\n", + "sns.distplot(samples_binomial, axlabel = eixo_x, kde = False);" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 57993\n", + "1 34518\n", + "2 6984\n", + "3 505\n", + "dtype: int64" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.value_counts(samples_binomial)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.07489" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "simulator = (pd.value_counts(samples_binomial)[2] + pd.value_counts(samples_binomial)[3])/n\n", + "simulator" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Comparação do resultado do simulador com a probabilidade nominal" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.07407407407407407" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "probability = 16/216\n", + "probability" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A diferença do simulador para 100000 jogadas é 0.0008159259259259283\n" + ] + } + ], + "source": [ + "print('A diferença do simulador para',n,'jogadas é',simulator-probability)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulação da rolagem de dois dados com a distribuição dos resultados\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "O programa representa o total da rolagem de dois dados por **n** vezes e exibe o total dso valores acumuladdos em um histograma através da função **roll_pair( )** que exibe o total das possibilidades dentro do intervalo de **n** vezes. Para a rolagem 1 e a rolagem 2, a função **random** escolherá um número inteiro aleatório de 1-6, e após isso o total da rolagem 1 será adicionado ao total da rolagem 2. Isto irá repetir **n** vezes e depois produzir um histograma, plotando os totais acumulados em uma distribuição.\n", + "\n", + "Sabemos que o valor médio da distribuição é 7 calculado como (2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12) / 12 ou 77/11 = 7.\n", + "\n", + "Podemos ver que a média da amostra não está extatamente no ponto médio, o que é esperado porque é uma estimativa da média populacional, ou amostra.\n", + "\n", + "O procedimento mias interessante aqui é aumentar o **n** e identificar que a média cada vez mais se aproxima da probabilidade teórica nominal. De acordo com o teorema do limite central, o histograma dessas médias amostrais será uma **Distribuição Normal** ou **Gaussiana**, de acordo com o *teorema do limite central*.\n", + "\n", + "O exemplo abaixo realiza este experimento e plota a distribuição resultante de médias amostrais.\n", + "\n", + "Para uma ferramente interativa online [clique aqui](https://www.openprocessing.org/sketch/124236/)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import random\n", + "%matplotlib inline\n", + "\n", + "plt.ion()\n", + "\n", + "def roll_pair():\n", + " total = []\n", + " n=1000\n", + " for choice in range(n):\n", + " roll1 = random.randint(1,6)\n", + " roll2 = random.randint(1,6)\n", + " total += [(roll1+roll2)]\n", + " \n", + " print (total)\n", + " \n", + " plt.hist(total)\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 8, 8, 7, 9, 10, 10, 9, 9, 9, 5, 6, 5, 8, 9, 4, 7, 4, 9, 10, 9, 8, 6, 10, 10, 7, 9, 11, 8, 6, 7, 7, 7, 4, 6, 5, 3, 9, 5, 7, 8, 8, 6, 6, 11, 12, 10, 10, 4, 6, 7, 11, 8, 9, 9, 4, 9, 7, 3, 8, 6, 9, 11, 8, 5, 5, 5, 8, 8, 9, 6, 5, 7, 4, 7, 8, 9, 4, 3, 9, 11, 4, 7, 9, 5, 4, 11, 7, 7, 8, 11, 5, 8, 8, 4, 5, 7, 5, 11, 6, 7, 3, 7, 5, 7, 4, 7, 7, 6, 11, 4, 9, 6, 12, 8, 8, 6, 8, 6, 4, 5, 8, 9, 9, 10, 9, 10, 7, 10, 7, 6, 8, 5, 7, 5, 8, 9, 5, 11, 6, 4, 6, 5, 4, 8, 8, 8, 6, 11, 3, 9, 6, 7, 7, 8, 7, 11, 2, 11, 10, 5, 2, 4, 9, 9, 8, 8, 11, 4, 11, 6, 5, 8, 4, 6, 5, 4, 6, 5, 5, 12, 6, 7, 8, 11, 5, 12, 6, 10, 3, 9, 7, 3, 3, 6, 7, 7, 5, 12, 7, 10, 6, 7, 4, 9, 2, 7, 4, 2, 7, 7, 11, 8, 11, 6, 10, 7, 4, 6, 9, 6, 4, 9, 6, 7, 7, 4, 7, 7, 8, 9, 11, 4, 3, 7, 7, 10, 10, 7, 3, 9, 5, 3, 7, 3, 10, 8, 11, 5, 11, 5, 8, 12, 7, 3, 3, 11, 9, 5, 3, 7, 5, 12, 9, 11, 6, 5, 8, 7, 9, 7, 6, 8, 6, 6, 6, 4, 9, 10, 11, 10, 11, 7, 11, 4, 10, 11, 6, 9, 7, 6, 8, 8, 9, 11, 9, 2, 9, 7, 7, 8, 9, 11, 7, 11, 9, 4, 11, 7, 10, 8, 6, 10, 10, 10, 6, 7, 2, 11, 12, 10, 6, 4, 10, 9, 8, 7, 8, 11, 12, 10, 7, 4, 10, 4, 9, 8, 7, 7, 6, 3, 7, 7, 4, 6, 10, 3, 6, 4, 6, 6, 5, 7, 3, 8, 8, 6, 9, 11, 9, 8, 3, 3, 6, 4, 8, 6, 5, 7, 11, 8, 9, 5, 7, 6, 9, 9, 7, 10, 6, 9, 5, 9, 4, 4, 5, 2, 4, 3, 9, 4, 8, 9, 8, 8, 6, 12, 11, 10, 10, 9, 9, 4, 3, 9, 7, 2, 8, 7, 5, 6, 9, 7, 9, 5, 5, 7, 9, 4, 7, 9, 8, 6, 9, 7, 8, 9, 10, 8, 11, 3, 6, 8, 10, 12, 12, 11, 9, 4, 7, 7, 6, 9, 4, 10, 4, 6, 8, 6, 7, 6, 5, 6, 5, 3, 3, 7, 7, 8, 7, 10, 9, 7, 8, 6, 10, 5, 7, 8, 11, 12, 6, 2, 12, 3, 4, 5, 2, 10, 7, 6, 5, 8, 3, 5, 7, 3, 7, 11, 7, 3, 7, 7, 12, 6, 3, 11, 7, 4, 3, 7, 5, 9, 8, 9, 9, 4, 5, 5, 3, 11, 5, 8, 6, 5, 3, 8, 8, 7, 4, 4, 8, 6, 7, 8, 6, 10, 7, 8, 3, 7, 10, 5, 6, 7, 6, 8, 3, 2, 4, 3, 5, 7, 6, 2, 6, 7, 3, 4, 7, 3, 7, 7, 6, 8, 10, 9, 7, 7, 10, 11, 9, 2, 4, 7, 8, 5, 9, 5, 9, 6, 10, 5, 6, 12, 5, 10, 8, 9, 9, 5, 4, 7, 6, 10, 8, 4, 8, 7, 8, 8, 5, 9, 9, 6, 2, 2, 5, 4, 7, 4, 7, 10, 11, 5, 5, 6, 5, 5, 10, 8, 11, 7, 4, 7, 6, 3, 7, 8, 12, 7, 2, 7, 4, 10, 7, 6, 11, 8, 3, 5, 3, 6, 9, 8, 7, 11, 5, 7, 8, 5, 3, 12, 6, 9, 12, 7, 9, 12, 3, 6, 9, 3, 3, 7, 7, 10, 7, 4, 7, 5, 9, 12, 3, 6, 9, 9, 6, 8, 7, 6, 3, 7, 2, 9, 4, 7, 8, 2, 11, 12, 3, 8, 2, 5, 7, 4, 4, 8, 12, 6, 6, 6, 5, 4, 8, 8, 7, 7, 11, 7, 4, 12, 5, 7, 8, 3, 7, 3, 8, 5, 5, 8, 9, 3, 7, 5, 7, 6, 2, 11, 6, 9, 9, 7, 11, 8, 8, 11, 3, 8, 4, 9, 5, 11, 12, 3, 9, 4, 9, 9, 6, 10, 10, 11, 11, 5, 5, 8, 9, 10, 4, 6, 9, 9, 8, 7, 7, 3, 6, 6, 4, 9, 6, 6, 5, 6, 7, 6, 7, 4, 5, 4, 6, 9, 3, 6, 9, 8, 11, 7, 7, 5, 8, 11, 7, 7, 11, 10, 7, 4, 2, 8, 9, 10, 5, 9, 6, 2, 4, 5, 10, 7, 10, 2, 10, 9, 6, 10, 5, 4, 3, 12, 3, 6, 9, 7, 7, 9, 6, 6, 9, 7, 9, 7, 6, 6, 9, 3, 8, 4, 5, 8, 8, 5, 8, 12, 8, 5, 5, 8, 11, 7, 12, 6, 8, 7, 8, 9, 4, 5, 4, 8, 10, 9, 7, 4, 8, 4, 4, 6, 8, 8, 7, 5, 3, 7, 5, 6, 10, 6, 8, 8, 7, 9, 5, 2, 6, 6, 3, 7, 10, 7, 5, 7, 6, 4, 8, 7, 3, 10, 8, 6, 11, 2, 7, 5, 5, 8, 6, 9, 7, 6, 8, 12, 8, 6, 8, 7, 8, 9, 6, 5, 2, 11, 2, 6, 11, 5, 11, 8, 6, 3, 6, 7, 8, 3, 6, 10, 6, 8, 7, 8, 10, 12, 8, 6, 6, 7, 7, 8, 8, 7, 7, 5, 5, 9, 3, 11, 8, 6, 10, 5, 7, 4, 8, 7, 4, 2, 7, 10, 6, 9, 7, 7, 7, 6, 2, 9, 8, 4, 10, 10, 9, 5, 2, 11, 8, 5, 7, 10, 9, 7, 4, 5, 4, 9, 2, 6, 7, 6, 5, 7, 8, 7, 8, 7, 9, 5, 10]\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "roll_pair()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# AVANÇADO\n", + "\n", + "Para fixação dos conceitos de probabilidade, passamos problemas matemáticos clássicos envolvendo o cálculo das probabilidades para os resultados em **Python.** \n", + "\n", + "- (1) Paradoxo do aniversariante\n", + "- (2) Paradoxo de Monty Hall - *Let's make a deal!*\n", + "- (3) Calculando **π** com simulação de Monte-Carlo " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# (1) Paradoxo do aniversariante\n", + "\n", + "Qual a probabilidade de duas pessoas fazerem aniversário no mesmo dia em uma sala com **N** pessoas?\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "Em teoria das probabilidades, o paradoxo do aniversário afirma que dado um grupo de 23 (ou mais) pessoas escolhidas aleatoriamente, a chance de que duas pessoas terão a mesma data de aniversário é de mais de 50%. Para 57 ou mais pessoas, a probabilidade é maior do que 99%, entretanto, ela não pode ser exatamente 100% exceto que se tenha pelo menos 367 pessoas. Calcular essa probabilidade (e as relacionadas a ela) é o problema do aniversário. A matemática por trás disso tem sido utilizada para executar o ataque do aniversário.\n", + "\n", + "O problema foi apresentado pela primeira vez pelo matemático polonês Richard von Mises. \n", + "\n", + "Para calcular aproximadamente a probabilidade de que em uma sala com n pessoas, pelo menos duas possuam o mesmo aniversário, desprezamos variações na distribuição, tais como anos bissextos, gêmeos, variações sazonais ou semanais, e assumimos que 365 possíveis aniversários são todos igualmente prováveis. Distribuições de aniversários na realidade não são uniformes uma vez que as datas não são equiprováveis.[1]\n", + "\n", + "É mais fácil calcular a probabilidade p(n) de que todos os n aniversários sejam diferentes. Se n > 365, pelo Princípio da Casa dos Pombos esta probabilidade é 0. Por outro lado, se n ≤ 365, ele é dado por \n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "porque a segunda pessoa não pode ter o mesmo aniversário do que o primeiro (364/365), o terceiro não pode ter o mesmo aniversário do que o segundo (363/365), etc.\n", + "\n", + "O evento de pelo menos duas pessoas entre n terem o mesmo aniversário é o complementar de todos n serem diferentes. Consequentemente, sua probabilidade p(n) é\n", + "\n", + "```python\n", + " p(n) = 1 − pc(n)\n", + "```\n", + "\n", + "Esta probabilidade ultrapassa 1/2 para n = 23 (com valor aproximado de 50.7%). A seguinte tabela mostra a probabilidade para alguns valores de n (ignorando anos bissextos como descrito anteriormente): \n", + "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Digite o número de pessoas: 357\n", + "Digite o número de repetições: 1000\n", + "Em 357 pessoas e 1000 testes deram-se 1000 vezes em que pelo menos duas pessoas fazem anos no mesmo dia\n", + "percentagem(%): 100.00\n" ] } ], @@ -108,26 +536,25 @@ "num_loops = int(input(\"Digite o número de repetições: \")) # num de testes\n", "favoraveis = 0\n", "for _ in range(num_loops):\n", - " ani_dates = {random.randint(1, 366) for _ in range(num_p)} # sortear novo set de datas (dias) de aniversario\n", - " if(len(ani_dates) != num_p): # se o comprimento do set for diferente do num de pessoas\n", + " ani_dates = [random.randint(1, 366) for _ in range(num_p)] # sortear nova lista de datas (dias) de aniversario\n", + " if(any(ani_dates.count(i) > 1 for i in ani_dates)): # verificar se existe a mesma data (valor) mais do que uma vez na lista\n", " favoraveis += 1\n", "\n", "probs_perc = (favoraveis/num_loops)*100\n", - "print('Em {} pessoas e {} testes deram-se {} vezes em que pelo menos duas pessoas fazem anos no mesmo dia, percentagem: {}%'.format(num_p, num_loops, favoraveis, probs_perc))\n", - "\n", - "# Em 23 pessoas e 1000 testes deram-se 506 vezes em que pelo menos duas pessoas fazem anos no mesmo dia, percentagem: 50.6%" + "print('Em {} pessoas e {} testes deram-se {} vezes em que pelo menos duas pessoas fazem anos no mesmo dia'.format(num_p, num_loops, favoraveis))\n", + "print('percentagem(%):', \"%.2f\" %probs_perc)" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 19, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -156,7 +583,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### (4) Monty Hall\n", + "# (2) Monty Hall\n", "\n", "O problema de Monty Hall, também conhecido por paradoxo de Monty Hall é um problema matemático e paradoxo que surgiu a partir de um concurso televisivo dos Estados Unidos chamado Let’s Make a Deal, exibido na década de 1970.\n", "\n", @@ -171,12 +598,14 @@ "\n", "Qual é a estratégia mais lógica? Ficar com a porta escolhida inicialmente ou mudar de porta? Com qual das duas portas ainda fechadas o concorrente tem mais probabilidades de ganhar? Por quê?\n", "\n", - "\n" + "
\n", + "\n", + "
" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -194,9 +623,9 @@ "This problem relies on conditional probabilities.\n", "It is suggested that you switch doors, you will have a higher probability of winning of you do.\n", "The door I will now open is: 'C'\n", - "Would you like to select the third door? Type 'Yes' or 'No': Yes\n", - "The door you will switch to is: 'B' \n", - "Congrats, you win! The prize was behind the alternate, 'B'\n", + "Would you like to select the third door? Type 'Yes' or 'No': yes\n", + "You decided to keep your initial door, 'A'\n", + "Sorry, the prize was behind the alternate door, 'B'\n", "This is a check:\n", "Prize: 'B'\n", "Selection: 'A' \n", @@ -268,9 +697,16 @@ "print (\"Door opened: %r \" % open_door)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparando os resultados da simulação com a probabilidade nominal" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -368,70 +804,121 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulating 1000 trials...\n", + " Switching won 669 times out of 1000 (66.9% of the time)\n", + "Not switching won 344 times out of 1000 (34.4% of the time)\n" + ] + } + ], "source": [ - "monty_hall(3, 100)" + "monty_hall(3, 1000)" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "#### (5) Calculando pi com Monte Carlo" + "# (3) Calculando π com Monte Carlo\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "Na matemática, o número **π** é uma proporção numérica definida pela relação entre o perímetro de uma circunferência e seu diâmetro; por outras palavras, se uma circunferência tem perímetro **p** e diâmetro **d**, então \n", + "\n", + "```python\n", + "π = p/d\n", + "```\n", + "\n", + "É representado pela letra grega π. A letra grega π (lê-se: pi), foi adotada para o número a partir da palavra grega para perímetro, provavelmente por William Jones em 1706, e popularizada por Leonhard Euler alguns anos mais tarde. Outros nomes para esta constante são constante circular ou número de Ludolph. \n", + "\n", + "O valor de **π** pertence aos números irracionais. Para a maioria dos cálculos simples é comum aproximar **π** por 3,14. Uma boa parte das calculadoras científicas de 8 dígitos aproxima **π** por 3,1415926. Para calcular rotas de navegações interplanetárias a NASA utiliza **π ≈ 3,141592653589793** (com 15 casas decimais). Para calcular um círculo com 46 bilhões de anos-luz de raio em volta do universo observável seria suficiente uma aproximação de **π** com apenas 40 casas decimais para garantir precisão de 1 átomo de hidrogênio.\n", + "\n", + "Um engenheiro japonês e um estudante americano de Ciência da computação calcularam, usando um computador com doze núcleos físicos, cinco trilhões de dígitos, o equivalente a 6 terabytes de dados.\n", + "\n", + "### Método estatístico\n", + "\n", + "Um método interessante para o cálculo de **π** pode ser realizado através de Monte Carlo utilizando-se a estatística. Nesse método são sorteados aleatoriamente pontos num quadrado compreendido entre as coordenadas O=(0,0) e B=(1,1). Em seguida calcula-se a distância dos pontos sorteados cn=(xn,yn) até a origem O=(0,0). **π** pode ser aproximado através do número de pontos inscritos na circunferência de raio 1 em relação ao total de pontos sorteados no quadrado de lado 1." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 74, "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", "import matplotlib.pyplot as plt\n", + "import random\n", "\n", - "n=1e3\n", - "x = 1-2*np.random.random(int(n))\n", - "y = 1-2.*np.random.random(int(n))\n", - "insideX, insideY = x[(x*x+y*y)<=1],y[(x*x+y*y)<=1]\n", - "outsideX, outsideY = x[(x*x+y*y)>1],y[(x*x+y*y)>1]\n", - "\n", - "fig, ax = plt.subplots(1)\n", - "fig.set_size_inches(6,6)\n", - "ax.scatter(insideX, insideY, c='b', alpha=0.8, edgecolor=None)\n", - "ax.scatter(outsideX, outsideY, c='r', alpha=0.8, edgecolor=None)\n", - "ax.set_aspect('equal')\n", - "fig.show()" + "inside = 0\n", + "n = 10000\n", + "\n", + "x_inside = []\n", + "y_inside = []\n", + "x_outside = []\n", + "y_outside = []\n", + "\n", + "for _ in range(n):\n", + " x = random.uniform(-1.0,1.0)\n", + " y = random.uniform(-1.0,1.0)\n", + " if x**2+y**2 <= 1:\n", + " inside += 1\n", + " x_inside.append(x)\n", + " y_inside.append(y)\n", + " else:\n", + " x_outside.append(x)\n", + " y_outside.append(y)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 75, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3.1216\n" + ] + } + ], "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "n=1e3\n", - "x = 1-2*np.random.random(int(n))\n", - "y = 1-2.*np.random.random(int(n))\n", - "insideX, insideY = x[(x*x+y*y)<=1],y[(x*x+y*y)<=1]\n", - "outsideX, outsideY = x[(x*x+y*y)>1],y[(x*x+y*y)>1]\n", + "pi = 4*inside/n\n", + "print(pi)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", "\n", - "fig, ax = plt.subplots(1)\n", - "fig.set_size_inches(6,6)\n", - "ax.scatter(insideX, insideY, c='b', alpha=0.8, edgecolor=None)\n", - "ax.scatter(outsideX, outsideY, c='r', alpha=0.8, edgecolor=None)\n", + "fig, ax = plt.subplots()\n", "ax.set_aspect('equal')\n", + "ax.scatter(x_inside, y_inside, color='b', marker='s')\n", + "ax.scatter(x_outside, y_outside, color='r', marker='s')\n", "fig.show()" ] }, @@ -459,7 +946,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.8" } }, "nbformat": 4, diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/.DS_Store" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/.DS_Store" new file mode 100755 index 0000000..5008ddf Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/.DS_Store" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/Curso_de_Economia_Informa\303\247\303\265es_2013.pdf" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/Curso_de_Economia_Informa\303\247\303\265es_2013.pdf" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/Teste_T_Gr\303\241fico_bicaudal.gif" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/Teste_T_Gr\303\241fico_bicaudal.gif" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/baralho_cartas.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/baralho_cartas.png" new file mode 100755 index 0000000..3d79a76 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/baralho_cartas.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/bode.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/bode.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/dado.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/dado.png" new file mode 100755 index 0000000..45f0e4f Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/dado.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/dois_dados.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/dois_dados.png" new file mode 100755 index 0000000..89e7509 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/dois_dados.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/erros.PNG" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/erros.PNG" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/houses_tableau.jpg" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/houses_tableau.jpg" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/linear_regression_scheme.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/linear_regression_scheme.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/normal.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/normal.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/paradoxo_aniversario.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/paradoxo_aniversario.png" new file mode 100755 index 0000000..30e8444 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/paradoxo_aniversario.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/paradoxo_aniversario_2.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/paradoxo_aniversario_2.png" new file mode 100755 index 0000000..f49b7f4 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/paradoxo_aniversario_2.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/pi.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/pi.png" new file mode 100755 index 0000000..234a78c Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/pi.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/pi_monte_carlo.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/pi_monte_carlo.png" new file mode 100755 index 0000000..9cfa684 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/pi_monte_carlo.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/prob_dois_dados.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/prob_dois_dados.png" new file mode 100755 index 0000000..53bf810 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/prob_dois_dados.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/probabilidade.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/probabilidade.png" new file mode 100755 index 0000000..2d17d49 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/probabilidade.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/04-probabilidade/img/regiao_critica_bilateral_aceitacao_exemplo.png" "b/1-analise-explorat\303\263ria-basica/04-probabilidade/img/regiao_critica_bilateral_aceitacao_exemplo.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/Distribui\303\247\303\265es.ipynb" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/Distribui\303\247\303\265es.ipynb" old mode 100644 new mode 100755 index fecb91b..5180d78 --- "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/Distribui\303\247\303\265es.ipynb" +++ "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/Distribui\303\247\303\265es.ipynb" @@ -1,5 +1,26 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Distribuições de probabilidade\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "*fonte:Wikipedia*\n", + "\n", + "Em teoria da probabilidade e em estatística, uma distribuição de probabilidade descreve o comportamento aleatório de um fenômeno dependente do acaso. O estudo dos fenômenos aleatórios começou com o estudo dos jogos de azar – jogos de dados, sorteios de bolas de urna e cara ou coroa eram motivações para compreender e prever os experimentos aleatórios. Essas abordagens iniciais são fenômenos discretos, o que significa que o número de resultados possíveis é finito ou contável. Entretanto, certas questões revelam distribuições de probabilidade com suporte infinito não contável. Por exemplo, quando o lançamento de uma moeda tende ao infinito, o número de coroas aproxima-se de uma distribuição normal.\n", + "\n", + "Flutuações e variabilidade estão presentes em quase todo valor que pode ser medido durante a observação de um fenômeno, independente de sua natureza, além disso quase todas as medidas possuem uma parte de erro intrínseco. A distribuição de probabilidade pode modelar incertezas e descrever fenômenos físicos, biológicos, econômicos, entre outros. O domínio da estatística permite o encontro das distribuições de probabilidade adaptadas aos fenômenos aleatórios.\n", + "\n", + "Há muitas distribuições de probabilidade diferentes. Entre as distribuições de probabilidade, a distribuição normal tem uma importância particular. De acordo com o teorema central do limite, a distribuição normal aborda o comportamento assintótico de várias distribuições de probabilidade.\n", + "\n", + "O conceito de distribuição de probabilidade é formalizado matematicamente pela teoria da medida – uma distribuição de probabilidade é uma medida muitas vezes vista como uma distribuição que descreve o comportamento de uma variável aleatória discreta ou contínua. Uma medida é uma distribuição de probabilidade se sua massa total for 1. O estudo de uma variável aleatória de acordo com uma distribuição de probabilidade discreta revela o cálculo de somas e de séries, enquanto que o estudo de uma variável aleatória de acordo com uma distribuição de probabilidade absolutamente contínua revela o cálculo de integrais. As funções particulares permitem caracterizar as distribuições de probabilidade como a função de distribuição e a função característica. " + ] + }, { "cell_type": "markdown", "metadata": { @@ -7,7 +28,7 @@ "id": "EVE0sbeI2vi9" }, "source": [ - "# Amostra de distribuições com numpy e scipy\n", + "# Amostras para distribuições com numpy e scipy\n", "\n", "A biblioteca numpy oferece um conjunto de funções que geram valores aleatórios, esses valores podem vir de diferentes tipos de distribuições estatísticas e nos fornecem um conjunto de dados pertencentes aos valores do espaço de amostra dessas distribuições.\n", "\n", @@ -21,12 +42,14 @@ "\n", "Vamos trabalhar com dados de diferentes distribuições (dados por numpy.random) para visualizar o comportamento dessas variáveis. A quantidade de dados será grande para podermos apreciar corretamente sua forma gráfica.\n", "\n", - "É importante reconhecer visualmente o comportamento estatístico das variáveis, já que é uma primeira aproximação à modelagem e previsão desses dados. Muitas vezes é possível ter uma ideia de como eles se comportam matematicamente apenas visualizando-os em um gráfico.\n" + "É importante reconhecer visualmente o comportamento estatístico das variáveis, já que é uma primeira aproximação à modelagem e previsão desses dados. Muitas vezes é possível ter uma ideia de como eles se comportam matematicamente apenas visualizando-os em um gráfico.\n", + "\n", + "Para biblioteca original [clique aqui](https://docs.scipy.org/doc/numpy-1.15.1/reference/routines.random.html)" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 62, "metadata": { "colab": { "autoexec": { @@ -44,7 +67,10 @@ "import numpy as np\n", "import pandas as pd\n", "from scipy import stats\n", - "import seaborn as sns" + "import seaborn as sns\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")" ] }, { @@ -54,8 +80,8 @@ "id": "37EluvzT2vi-" }, "source": [ - "### Distribuição uniforme discreta.\n", - "Diz-se que uma variável segue uma distribuição uniforme discreta (se escreve **_X_ ~ ** _unif_ {$x_1, x_2, ... x_n$}) se a probabilidade de aparição dos valores em cada ensaio for constante e igual: \n", + "# Distribuição uniforme discreta\n", + "Diz-se que uma variável segue uma distribuição uniforme discreta (se escreve **_X_ ~ ** unif {$x_1, x_2, ... x_n$}) se a probabilidade de aparição dos valores em cada ensaio for constante e igual: \n", "\n", "\\begin{equation*}\n", "P(x_i)= \\dfrac{1}{n}\n", @@ -63,12 +89,12 @@ "\n", "Onde **_P_** é a probabilidade, **_x_** valores dentro do espaço amostral e **_n_** a quantidade de elementos do espaço amostral.\n", "\n", - "A seguir, vamos realizar uma chamada à função ```randint``` que ajusta a valores provenientes de uma distribuição uniforme discreta, com a motivação de simular o lançamento de um dado equilibrado 6000 vezes..." + "A seguir, vamos realizar uma chamada à função ```randint``` que ajusta a valores provenientes de uma distribuição uniforme discreta, com a motivação de simular o lançamento de um dado equilibrado 6000 vezes." ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 41, "metadata": { "colab": { "autoexec": { @@ -81,17 +107,9 @@ "outputId": "a3bad4ce-2e84-4e3d-f62e-fae46c2d7b3f" }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\sn3fru\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", - " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n" - ] - }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -119,38 +137,63 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# distribuição acumulada:\n", - "# df = pd.DataFrame(samples_uniforme,columns=['face'])\n", - "# df.groupby('face').size().hist(cumulative=True)" + "#distribuição acumulada\n", + "df = pd.DataFrame(samples_uniforme,columns=['face'])\n", + "df.groupby('face').size().hist(cumulative=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Distribuição de Bernoulli\n", + "# Distribuição de Bernoulli\n", + "\n", + "*fonte: Wikipedia*\n", + "\n", + "Na área de teoria das probabilidades e estatística, a distribuição de Bernoulli, nome em homenagem ao cientista suíço Jakob Bernoulli, é a distribuição discreta de espaço amostral {0, 1}, que tem valor 1 com a probabilidade de sucesso p e valor 0 com a probabilidade de falha q = 1 − p. \n", "\n", - "Distribuição discreta de espaço amostral {0, 1}, que tem valor 1 com a probabilidade de sucesso p e valor 0 com a probabilidade de falha q=1-p.\n", + "Um exemplo clássico de uma experiência de Bernoulli é uma jogada única de uma moeda. A moeda pode dar \"coroa\" com probabilidade p e \"cara\" com probabilidade 1 − p. A experiência é dita justa se p = 0.5, indicando a origem dessa terminologia em jogos de aposta (a aposta é justa se ambos os possíveis resultados tem a mesma probabilidade). \n", "\n", - "Um exemplo simples é jogar um dado, onde uma face tem probabilidade p e a outra o complemento (1-p). Em um dado honesto, p=.5\n", + "A média dessa distribuição é sempre **p** e a variância **p(1-p)**.\n", "\n", + "### Exemplo\n", "\n", - "A média dessa distribuição é sempre = p\n", - "e a Variância = p(1-p)" + "Vamos trabalhar com uma distribuição de Bernoulli, com ```p = 0.7```, e observar a convergência dos resultados conforme o tamanho da amostra é incrementado." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 79, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -161,24 +204,24 @@ ], "source": [ "from scipy.stats import bernoulli\n", - "bern = bernoulli.rvs(p=0.7, size=123)\n", + "bern = bernoulli.rvs(p=0.7, size=1000000)\n", "\n", "plt.title('Bernoulli: variáveis dicotômicas')\n", - "plt.hist(bern, color='m');" + "plt.hist(bern);" ] }, { "cell_type": "code", - "execution_count": 111, + "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([1, 0, 0, 0, 1, 1, 1, 0, 0, 1])" + "array([1, 0, 1, 1, 1, 1, 1, 0, 1, 1])" ] }, - "execution_count": 111, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -189,47 +232,54 @@ }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "84" + "0.700312" ] }, - "execution_count": 112, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "bern.sum() # casos na amostra" + "bern.sum()/len(bern) # média empirica" ] }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.6829268292682927" + "0.20987510265599996" ] }, - "execution_count": 113, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "bern.sum()/len(bern) # média empirica" + "bern.std()**2 # variância" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulação para convergência de Bernoulli com o aumento da amostra" ] }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -243,61 +293,44 @@ "var: 0.0\n", "\n", "amostra: 10\n", - "média: 0.9\n", - "var: 0.09000000000000002\n", + "média: 0.7\n", + "var: 0.20999999999999994\n", "\n", "amostra: 100\n", - "média: 0.75\n", - "var: 0.18749999999999997\n", + "média: 0.66\n", + "var: 0.22440000000000002\n", "\n", "amostra: 1000\n", - "média: 0.688\n", - "var: 0.214656\n", + "média: 0.685\n", + "var: 0.215775\n", "\n", "amostra: 10000\n", - "média: 0.7008\n", - "var: 0.20967935999999998\n", + "média: 0.7024\n", + "var: 0.20903424\n", "\n", "amostra: 100000\n", - "média: 0.69961\n", - "var: 0.21015584789999997\n", + "média: 0.70024\n", + "var: 0.20990394240000004\n", "\n", "amostra: 1000000\n", - "média: 0.699868\n", - "var: 0.21005278257599996\n" + "média: 0.699683\n", + "var: 0.21012669951100005\n", + "\n", + "amostra: 10000000\n", + "média: 0.7001807\n", + "var: 0.20992768734750972\n" ] } ], "source": [ "print('Média Verdadeira: 0.7, Variância Verdadeira: 0.21')\n", - "for n in [3,10,100,1000,10000,100000,1000000]:\n", + "for n in [3,10,100,1000,10000,100000,1000000,10000000]:\n", " bern = bernoulli.rvs(p=0.7, size=n)\n", " print('\\namostra:',n)\n", " print('média:', bern.sum()/len(bern))\n", " print('var:', bern.std()**2) " ] }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.21000000000000002" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "0.7*(1-0.7)\n", - "p(1-p)" - ] - }, { "cell_type": "markdown", "metadata": { @@ -305,11 +338,18 @@ "id": "FOwQ6J-K2vjG" }, "source": [ - "### Distribuição Binomial.\n", + "# Distribuição Binomial\n", + "\n", + "*fonte: Wikipedia*\n", "\n", - "Mede o número de sucessos em uma sequência de _**n**_ ensaios independentes entre si, com uma probabilidade fixa **_p_** de ocorrência de sucesso entre os ensaios.\n", + "Em teoria das probabilidades e estatística, a distribuição binomial é a distribuição de probabilidade discreta do número de sucessos numa sequência de n {\\displaystyle n} n tentativas tais que:\n", "\n", - "Quando uma variável **_X_** segue uma distribuição binomial, escreve-se **_X ~ B (n, p)_** . Onde **_p_** é a probabilidade de sucesso (que é fixa), y _**n**_ o número de ensaios. \n", + "- Cada tentativa tem exclusivamente como resultado duas possibilidades, sucesso ou fracasso (binomial, a que se chama de tentativa de Bernoulli), e;\n", + "- Cada tentativa é independente das demais, e;\n", + "- A probabilidade de sucesso p {\\displaystyle p} p a cada tentativa permanece constante independente das demais, e;\n", + "- A variável de interesse, ou pretendida, é o número de sucessos k {\\displaystyle k} k nas n {\\displaystyle n} n tentativas.\n", + "\n", + "Mede o número de sucessos em uma sequência de _**n**_ ensaios independentes entre si, com uma probabilidade fixa **_p_** de ocorrência de sucesso entre os ensaios. Quando uma variável **_X_** segue uma distribuição binomial, escreve-se **_X ~ B (n, p)_** . Onde **_p_** é a probabilidade de sucesso (que é fixa), y _**n**_ o número de ensaios. \n", "\n", "A função da probabilidade é:\n", "\n", @@ -319,7 +359,7 @@ "\n", "Onde **_x_** é a quantidade de acertos, **_p_** a probabilidade de sucesso, **_n_** a quantidade de ensaios.\n", "\n", - "\n", + "### Exemplo\n", "\n", "Neste caso, vamos simular o lançamento de uma moeda 8 vezes por ensaio, onde a probabilidade de sucesso (obter cara) será 0,5. A seguir, a função de distribuição para o caso:\n", "\n", @@ -329,36 +369,12 @@ "\n", "Vamos realizar um chamado à função```binomial``` que ajusta a valores provenientes de uma distribuição binomial e vamos realizar 10.000 ensaios para montar a distribuição.\n", "\n", - "Nota: A distribuição de Bernoulli é um caso especial da distribuição Binomial, com n = 1 e sua média, como esperado é np (contra p) e a variância teórica é np(1-p) (contra p(1-p) )\n" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([5, 5, 3, 7, 4, 7, 4, 7, 3, 3, 3, 5, 5, 3, 5, 5, 3, 4, 5, 4, 7, 3,\n", - " 4, 5, 4, 3, 5, 6, 6, 2, 3, 6, 4, 4, 5, 5, 6, 5, 1, 4, 4, 5, 4, 3,\n", - " 6, 7, 3, 6, 5, 1, 2, 3, 4, 4, 4, 5, 5, 5, 6, 2, 4, 3, 1, 6, 2, 3,\n", - " 3, 3, 3, 4, 2, 5, 4, 4, 2, 2, 3, 2, 5, 3, 3, 5, 3, 6, 5, 4, 3, 3,\n", - " 3, 4, 4, 3, 5, 4, 5, 4, 3, 5, 6, 6])" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "samples_binomial[:100]" + "Nota: A distribuição de Bernoulli é um caso especial da distribuição Binomial, com n = 1 e sua média, como esperado é np (contra p) e a variância teórica é np(1-p) (contra p(1-p))." ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 57, "metadata": { "colab": { "autoexec": { @@ -371,17 +387,9 @@ "outputId": "9c8e0f35-326c-4648-f8c7-e701719909d0" }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\sn3fru\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", - " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n" - ] - }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -392,7 +400,7 @@ ], "source": [ "# definimos a quantidade de ensaios.\n", - "quantidade_ensaios = 1000\n", + "quantidade_ensaios = 10000\n", "\n", "# definimos a quantidade de lançamentos por ensaio.\n", "lançamentos = 8\n", @@ -408,6 +416,50 @@ "sns.distplot(samples_binomial, axlabel = eixo_x, kde = False);" ] }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 4, 4, 1, 1, 4, 2, 6, 4, 6, 4, 3, 4, 4, 4, 5, 3, 4, 1, 3, 2, 2,\n", + " 4, 4, 5, 5, 7, 3, 3, 3, 6, 5, 3, 6, 5, 3, 3, 4, 5, 5, 5, 4, 3, 5,\n", + " 4, 2, 5, 5, 5, 4, 1, 5, 4, 6, 7, 5, 4, 2, 4, 5, 5, 6, 3, 3, 3, 2,\n", + " 4, 5, 5, 4, 3, 4, 5, 6, 4, 4, 0, 6, 5, 5, 5, 3, 6, 6, 4, 6, 3, 4,\n", + " 2, 6, 6, 2, 4, 7, 5, 6, 7, 3, 2, 4])" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "samples_binomial[:100]" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10000" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "samples_binomial.size" + ] + }, { "cell_type": "markdown", "metadata": { @@ -415,11 +467,11 @@ "id": "d82_kn_N2vjN" }, "source": [ - "### Distribuição de Poisson\n", + "# Distribuição de Poisson\n", "\n", - "É uma distribuição de probabilidade de variável aleatória **discreta** que expressa a probabilidade de uma série de eventos ocorrer num certo período de tempo se estes eventos ocorrem **independentemente** de quando ocorreu o último evento. Por exemplo, o número de clientes que entram em um banco durante a manhã ou o número de falhas de um carro durante um trajeto (embora podemos argumentar que esses eventos não são exatamente independentes).\n", + "É uma distribuição de probabilidade de variável aleatória **discreta** que expressa a probabilidade de uma série de eventos ocorrer num certo período de tempo se estes eventos ocorrem **independentemente** de quando ocorreu o último evento. Por exemplo, o número de clientes que entram em um banco durante a manhã ou o número de falhas de um carro durante um trajeto (embora exista o argumento de que esses eventos não são exatamente independentes).\n", "\n", - "Esta distribuição tem como parâmetro $\\lambda$, que é sempre maior que zero. Este parâmetro indica o número médio de ocorrências de um evento por unidade contínua (como tempo ou espaço). Por exemplo, se o evento ocorre a uma média de 4 minutos, e estamos interessados no número de eventos que ocorrem num intervalo de 10 minutos, usariámos como modelo a distribuição de Poisson com λ = 10/4 = 2.5.\n", + "Esta distribuição tem como parâmetro $\\lambda$ é sempre maior que zero. **Este parâmetro indica o número médio de ocorrências de um evento por unidade contínua (como tempo ou espaço)**. Por exemplo, se o evento ocorre a uma média de 4 minutos, e estamos interessados no número de eventos que ocorrem num intervalo de 10 minutos, usariámos como modelo a distribuição de Poisson com λ = 10/4 = 2.5.\n", "\n", "Quando uma variável **_X_** segue uma distribuição de Poisson, escreve-se **_X ~ Poisson ($\\lambda$)_** e a função de probabilidade é:\n", "\n", @@ -430,15 +482,6 @@ "* $e$ é base do logaritmo natural ($e$ = 2.71828...),\n", "* ! significa fatorial, muito usado em arranjos e permutações. Ex: Placa de carro.\n", "\n", - "Propomos o exemplo de um trem onde ocorre uma média de 1,5 falhas por dia, portanto $\\lambda = 1,5 $ e nossa função de probabilidades: \n", - "\n", - "\\begin{equation*}\n", - "f(x)= e^{-1.5} \\dfrac{1.5^x}{x!}\n", - "\\end{equation*}\n", - "\n", - "Vamos obter um conjunto de dados provenientes de uma distribuição de Poisson através da chamada à função ```poisson```, com a motivação de modelar o problema apresentado.\n", - "\n", - "\n", "A distribuição de Poisson representa um modelo probabilístico adequado para o estudo de um grande número de fenômenos observáveis. Eis alguns exemplos:\n", "\n", "- Chamadas telefônicas por unidade de tempo;\n", @@ -451,12 +494,24 @@ "Nota: tanto a média quanto a variância em uma distribuição de Poisson é dado por $\\lambda$\n", "\n", "[Calculadora](http://www.elektro-energetika.cz/calculations/po.php)\n", - "(Será que conseguimos construir uma calculadora em python nesse estilo?)" + "(Será que conseguimos construir uma calculadora em python nesse estilo?)\n", + "\n", + "### Exemplo\n", + "\n", + "Propomos o exemplo de um trem onde ocorre uma **média de 1,5 falhas por dia**, portanto $\\lambda = 1,5 $ e nossa função de probabilidades.\n", + "\n", + "\\begin{equation*}\n", + "f(x)= e^{-1.5} \\dfrac{1.5^x}{x!}\n", + "\\end{equation*}\n", + "\n", + "Vamos obter um conjunto de dados provenientes de uma distribuição de Poisson através da chamada à função ```poisson```, com a motivação de modelar o problema apresentado.\n", + "\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 72, "metadata": { "colab": { "autoexec": { @@ -469,17 +524,9 @@ "outputId": "e7b085c2-ccd1-4091-d595-67a9012ac552" }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\sn3fru\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", - " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n" - ] - }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -506,20 +553,20 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([1, 1, 1, 2, 1, 1, 0, 0, 5, 0, 2, 0, 1, 6, 1, 1, 2, 3, 3, 0, 1, 2,\n", - " 2, 1, 1, 0, 2, 2, 1, 1, 3, 2, 2, 3, 5, 3, 1, 1, 0, 1, 3, 1, 1, 2,\n", - " 2, 1, 0, 3, 2, 0, 1, 3, 0, 3, 0, 2, 0, 2, 1, 1, 2, 3, 2, 2, 3, 2,\n", - " 2, 1, 2, 4, 1, 2, 2, 0, 0, 2, 2, 0, 0, 1, 2, 1, 0, 2, 1, 1, 0, 5,\n", - " 2, 2, 5, 3, 0, 1, 0, 1, 0, 2, 0, 0])" + "array([1, 2, 2, 1, 1, 2, 0, 2, 2, 1, 2, 0, 2, 0, 3, 2, 0, 1, 0, 4, 6, 1,\n", + " 0, 0, 4, 1, 1, 0, 2, 0, 2, 3, 2, 3, 2, 1, 3, 3, 1, 0, 1, 1, 2, 1,\n", + " 4, 0, 2, 2, 1, 1, 6, 0, 1, 0, 0, 4, 1, 1, 0, 1, 2, 0, 2, 1, 1, 2,\n", + " 1, 2, 2, 4, 3, 1, 3, 0, 1, 1, 1, 2, 0, 1, 0, 0, 0, 3, 3, 1, 2, 2,\n", + " 3, 0, 0, 4, 0, 2, 4, 3, 1, 1, 1, 1])" ] }, - "execution_count": 55, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -529,37 +576,58 @@ ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 67, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "365" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "### Distribuição Exponencial\n" + "samples_poisson.size" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Esta é uma distribuição que se caracteriza por ter uma função de taxa de falha constante. A distribuição exponencial é a única com esta propriedade. Ela é considerada uma das mais simples em termos matemáticos. Esta distribuição tem sido usada extensivamente como um modelo para o tempo de vida de certos produtos e materiais. Ela descreve adequadamente o tempo de vida de óleos isolantes e dielétricos, entre outros.\n", + "# Distribuição Exponencial\n", "\n", + "Esta é uma distribuição que se caracteriza por ter uma função de taxa de falha constante. A distribuição exponencial é a única com esta propriedade. Ela é considerada uma das mais simples em termos matemáticos. Esta distribuição tem sido usada extensivamente como um modelo para o tempo de vida de certos produtos e materiais. Ela descreve adequadamente o tempo de vida de óleos isolantes e dielétricos, entre outros.\n", "\n", "De uma forma bastante resumida imagine uma variável aleatória Poisson, onde temos a contagem do número de ocorrências em um intervalo. Suponha agora que estejamos interessados em verificar a probabilidade do tempo transcorrido entre duas ocorrências consecutivas. Essa última é considerada uma variável aleatória exponencial.\n", "\n", + "Essa distribuição contínua que pode ser utilizada para descrever as probabilidades envolvidas no tempo que decorre para que um determinado evento aconteça. Existe uma conexão muito próxima entre a distribuição exponencial e a de Poisson, de forma que a função exponencial é utilizada para descrever o tempo entre as ocorrências de sucessivos eventos de uma distribuição de Poisson. As relações entre as distribuições podem ser associadas a um processo estocástico, chamado de processo de poisson.\n", "\n", - "Essa distribuição contínua que pode ser utilizada para descrever as probabilidades envolvidas no tempo que decorre para que um determinado evento aconteça. Existe uma conexão muito próxima entre a distribuição exponencial e a de Poisson. Ou seja, é Utilizada para descrever o tempo entre as ocorrências de sucessivos eventos de uma distribuição de Poisson. As relações entre as distribuições podem ser associadas a um processo estocástico, chamado de processo de poisson.\n", + "Pode ser representada pela fórmula abaixo, para valores de x >= 0.\n", "\n", - "\n" + "\\begin{equation*}\n", + "f(x;\\lambda)= \\lambda e^{-\\lambda x}\n", + "\\end{equation*}\n", + "\n", + "### Exemplo\n", + "\n", + "Da mesma forma que acontece na distribuição de Poisson, vamos adotar o parâmetro $\\lambda$ que define a frequência de ocorrência do evento igual a 1.5 e os dias contados igual a 365." ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 80, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -571,12 +639,61 @@ "parametro_lambda = 1.5\n", "dias_contados = 365\n", "\n", - "# poisson retorna o número de falhas por dia.\n", + "# poisson retorna o número de falhas por dia e a exponencial o tempo para o próximo evento\n", "samples_exp = np.random.exponential(1/parametro_lambda, dias_contados*2)\n", "\n", "# por fim, plotamos\n", "plt.figure(figsize=(10,8))\n", - "sns.distplot(samples_exp, color='y');" + "sns.distplot(samples_exp);" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1.76820747, 1.36323582, 1.39373736, 1.14134532, 0.29919301,\n", + " 0.03234264, 0.47398208, 0.68103603, 0.97048864, 0.0943977 ,\n", + " 0.30171689, 0.37967919, 1.26887538, 0.48971952, 0.16778011,\n", + " 0.04293686, 0.29955847, 2.41714907, 1.84523852, 1.01430334,\n", + " 0.31763228, 0.00443888, 0.18072796, 0.12275792, 2.63430663,\n", + " 0.47810353, 1.26597642, 0.50794551, 1.56032902, 2.98651326,\n", + " 0.95106112, 0.32917332, 1.01172693, 0.8475592 , 0.54606061,\n", + " 1.05140209, 1.58484419, 0.65211205, 0.12419268, 0.0059618 ,\n", + " 0.18066926, 0.14093276, 0.62362037, 0.10791053, 0.65958543,\n", + " 0.68009407, 0.41460734, 0.08592923, 0.80772691, 0.05755562])" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "samples_exp[:50]" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "730" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "samples_exp.size" ] }, { @@ -586,15 +703,15 @@ "id": "ef7cLBzM2vjT" }, "source": [ - "## Distribuição Normal\n", + "# Distribuição Normal\n", "\n", "A distribuição normal (ou Guassiana) modela uma grande quantidade de variáveis observadas na natureza, como a estatura ou peso de uma população.\n", "\n", "Também sob certas condições, algumas distribuições se comportam como normais, isto é conhecido como o **teorema do limite central**.\n", "\n", - "É possível ajustar uma distribuição de Poisson a uma normal quando $\\lambda$ é um valor de grande magnitude: (podem rodar posteriormente a distribuição Poisson alterando o lambda para algo em torno de 15e dias_contados para em torno de 3000 que verá que a forma da distribuição ficará parecida com nossa normal)\n", + "É possível ajustar uma distribuição de Poisson a uma normal quando $\\lambda$ é um valor de grande magnitude (rodar posteriormente a distribuição Poisson alterando o lambda para algo em torno de 15e dias_contados para em torno de 3000 onde a forma da distribuição ficará parecida com a normal).\n", "\n", - "Também é possível ajustar uma binomial a uma distribuição normal. Para isso, propõe-se como exemplo agregar o argumento ```fit=stats.norm``` à construção do gráfico.\n", + "Também é possível ajustar uma binomial a uma distribuição normal fazendo-se uma normalização dos dados. Para isso, propõe-se como exemplo agregar o argumento ```fit=stats.norm``` à construção do gráfico.\n", "\n", "Dizemos que uma variável aleatória _**X**_ segue uma distribuição normal **_X ~ N ( $\\mu$, $\\sigma$)_** se sua distribuição de probabilidades estiver dada por:\n", "\n", @@ -602,6 +719,10 @@ "p(x)= \\dfrac{1}{\\sqrt{2 \\pi \\sigma^²}} e^ \\dfrac{-(x-\\mu)^2}{2 \\sigma^2}\n", "\\end{equation*}\n", "\n", + "### Exemplo\n", + "\n", + "Para a definição de uma distribuiç˜åo normal, é necessário estabelecer uma média e um desvio padrão, como as características de uma certa amostra. \n", + "\n", "Imaginemos um exemplo em que temos uma população de animais cujo peso segue uma distribuição normal, com $\\mu = 342,73 $ kg e $\\sigma = 45,78 $ kg\n", "\n", "A seguir, vamos usar um conjunto de amostras que vêm de uma distribuição normal, chamando à função ```normal``` do numpy com os parâmetros propostos." @@ -609,7 +730,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 81, "metadata": { "colab": { "autoexec": { @@ -622,17 +743,9 @@ "outputId": "37713d5a-fe7f-4129-c2f6-2fcc6f8a063e" }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\sn3fru\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", - " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n" - ] - }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -670,9 +783,18 @@ "# plt.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Distribuição normal convergente com o aumento do tamanho da amostra\n", + "\n", + "Utilizando os mesmos valoes para a média (342.73) e o desvio padrão (45.78), vamos variar o tamanho da amostra em 10, 100, 1000, 10000 e 100000 observações, para observar o comportamento da distribuição sendo normalizado, seguido do gráfico da função densidade acumulada." + ] + }, { "cell_type": "code", - "execution_count": 152, + "execution_count": 103, "metadata": { "scrolled": false }, @@ -686,9 +808,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -703,9 +825,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -720,9 +842,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -737,9 +859,26 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n: 100000\n" + ] + }, + { + "data": { + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -747,10 +886,10 @@ } ], "source": [ - "for n, c in [[10,'b'],[100,'r'],[1000,'y'],[10000,'g']]:\n", + "for n, c in [[10,'b'],[100,'r'],[1000,'y'],[10000,'g'],[100000,'m']]:\n", " print('n:',n)\n", " \n", - " fig, ax =plt.subplots(2,1,figsize=(7, 11))\n", + " fig, ax = plt.subplots(2,1,figsize=(7, 11))\n", "\n", " samples_normal = np.random.normal(loc = media,\n", " scale = desvio_padrão,\n", @@ -772,17 +911,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Distribuição normal padrão\n", + "# Distribuição normal padrão\n", "\n", "Existe uma infinidade de possibilidade para uma variável X seguir uma distribuição Normal com média $\\mu$ e desvio $\\sigma$ quaisquer:\n", "\n", "$X \\sim \\mathcal{N}(\\mu,\\,\\sigma^{2})\\,$\n", "\n", - "Uma forma mais fácil de trabalhar com uma distribuição que segue uma normal é tornando-a uma normal padrão, e fazemos isso com uma operação bastante simples, basicamente dividindo todos os valores pela média da amostra e dividindo esse resultado pelo desvio padrão da amostra.\n", + "Uma forma mais fácil de trabalhar com uma distribuição que segue uma normal é tornando-a uma **normal padrão**, e fazemos isso com uma operação bastante simples, basicamente dividindo todos os valores pela média da amostra e dividindo esse resultado pelo desvio padrão da amostra.\n", "\n", - "Isso faz com que a média seja centrada no zero e o desvio padrão em um e isso vai simplificar muito as contas de agora em diante.\n", + "Isso faz com que a média seja centrada no zero e o desvio padrão seja o valor 1, e isso vai simplificar muito as contas de agora em diante.\n", "\n", - "A escala horizontal do gráfico da distribuição normal padrão corresponde ao score-z que é uma medida de posição que indica o número de desvios padrão em que um valor se encontra a partir da média. Podemos transformar um valor x em escore-z usando a fórmula:\n", + "A escala horizontal do gráfico da distribuição normal padrão corresponde ao **Z-Score**, que é uma medida de posição que indica o número de desvios padrão em que um valor se encontra a partir da média. Podemos transformar um valor x em **Z-Score** subtraindo o valor meedio µ e em seguida dividindo-se pelo desvio padrão $\\sigma$.\n", "\n", "$Z \\sim \\dfrac{x - \\mu} {\\sigma^{2}\\,} $\n", "\n", @@ -791,52 +930,44 @@ "- A área acumulada é próxima de 0 para z-scores próximos a z=-3,49.\n", "- A área acumulada aumenta conforme os z-scores aumentam.\n", "- A área acumulada para z=0 é 0,5000.\n", - "- A área acumulada é próxima a 1 para z-scores próximos a z=3,49.\n", - "\n" + "- A área acumulada é próxima a 1 para z-scores próximos a z=3,49." ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 84, "metadata": {}, "outputs": [], "source": [ + "# vamos trabalhar com a mesma média e o mesmo desvio padrão (samples_normal.std = 45.71075907280459)\n", + "media = 342.73\n", + "\n", "new_samples_normal = []\n", "\n", "samples_normal_std = samples_normal.std()\n", "for row in samples_normal:\n", - " new_value = (row-342.73)/samples_normal_std\n", + " new_value = (row-media)/samples_normal_std\n", " new_samples_normal.append(new_value)" ] }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 85, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\sn3fru\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", - " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n", - "C:\\Users\\sn3fru\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", - " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n" - ] - }, { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 58, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -859,14 +990,37 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Z-score\n", + "# Z-score\n", + "\n", + "
\n", + "
\n", + "\\begin{equation*}\n", + "Z \\sim \\dfrac{x - \\mu} {\\sigma^{2}\\,}\n", + "\\end{equation*}\n", + "
\n", + "
\n", "\n", - "![z-score e suas probabilidades](http://www.portalaction.com.br/sites/default/files/EstatisticaBasica/figuras/distribuicaoNormal/normal3.PNG)" + "![z-score e suas probabilidades](http://www.portalaction.com.br/sites/default/files/EstatisticaBasica/figuras/distribuicaoNormal/normal3.PNG)\n", + "\n", + "Na estatística, o escore padrão **z-score** é o número fracionário assinado de desvios padrão pelo qual o valor de uma observação ou ponto de dados está acima do valor médio do que está sendo observado ou medido. Valores observados acima da média têm escores padrões positivos, enquanto valores abaixo da média têm escores padrão negativos.\n", + "\n", + "É calculado subtraindo a média populacional de uma pontuação bruta individual e dividindo a diferença pelo desvio padrão da população. É uma quantidade adimensional. Esse processo de conversão é chamado de padronização ou normalização (no entanto, \"normalização\" pode se referir a muitos tipos de proporções; consulte a normalização para saber mais).\n", + "\n", + "Os escores padrão também são chamados de valores z, escores z, escores normais e variáveis padronizadas. Eles são usados com mais frequência para comparar uma observação a um desvio teórico, como um desvio normal padrão.\n", + "\n", + "A computação de um escore z requer o conhecimento da média e do desvio padrão da população completa à qual um ponto de dados pertence; se alguém tiver apenas uma amostra de observações da população, então o cálculo análogo com média da amostra e desvio padrão da amostra produz a estatística-t." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cálculo das probabilidades p-value dos valores da distribuição normal com Scipy.Stats" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -875,7 +1029,7 @@ "0.5" ] }, - "execution_count": 41, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -887,42 +1041,82 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.8413447460685429" + "0.6826894921370859" ] }, - "execution_count": 42, + "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "scipy.stats.norm(0, 1).cdf(1)" + "2 * (scipy.stats.norm(0, 1).cdf(1) - scipy.stats.norm(0, 1).cdf(0))" ] }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.3413447460685429" + "0.9544997361036416" ] }, - "execution_count": 44, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "2 * (scipy.stats.norm(0, 1).cdf(2) - scipy.stats.norm(0, 1).cdf(0))" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9973002039367398" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "2 * (scipy.stats.norm(0, 1).cdf(3) - scipy.stats.norm(0, 1).cdf(0))" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9999366575163338" + ] + }, + "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "scipy.stats.norm(0, 1).cdf(1)- scipy.stats.norm(0, 1).cdf(0)" + "2 * (scipy.stats.norm(0, 1).cdf(4) - scipy.stats.norm(0, 1).cdf(0))" ] }, { @@ -932,14 +1126,14 @@ "id": "RFBq4LpH2vjk" }, "source": [ - "### Teste de Normalidade\n", + "## Teste de Normalidade\n", "\n", "O test shapiro-wilks é um indicador de quão bem os nossos dados se ajustam à distribuição normal." ] }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 94, "metadata": { "colab": { "autoexec": { @@ -951,17 +1145,28 @@ "id": "h0rV4jm12vjl", "outputId": "d4e76aa2-0449-4789-d013-4e7c810ff748" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "poisson: (0.9078379273414612, 0.0)\n", + "uniforme: (0.9078379273414612, 0.0)\n", + "binomial: (0.9573074579238892, 0.0)\n", + "normal: (0.9999753832817078, 0.7880359888076782)\n" + ] + } + ], "source": [ - "# resultado_poisson = stats.shapiro(samples_uniforme)\n", - "# resultado_uniforme = stats.shapiro(samples_uniforme)\n", - "# resultado_binomial = stats.shapiro(samples_binomial)\n", - "# resultado_normal = stats.shapiro(samples_normal)\n", - "\n", - "# print('poisson: ', resultado_poisson)\n", - "# print('uniforme:', resultado_uniforme)\n", - "# print('binomial:', resultado_binomial)\n", - "# print('normal: ', resultado_normal)" + "resultado_poisson = stats.shapiro(samples_uniforme)\n", + "resultado_uniforme = stats.shapiro(samples_uniforme)\n", + "resultado_binomial = stats.shapiro(samples_binomial)\n", + "resultado_normal = stats.shapiro(samples_normal)\n", + "\n", + "print('poisson: ', resultado_poisson)\n", + "print('uniforme:', resultado_uniforme)\n", + "print('binomial:', resultado_binomial)\n", + "print('normal: ', resultado_normal)" ] }, { @@ -977,39 +1182,82 @@ "id": "MD8ZZ-vC2vjr" }, "source": [ - "### Test de Kolmogorow-Smirnov" + "## Teste de Kolmogorow-Smirnov\n", + "\n", + "Em estatística, o teste Kolmogorov–Smirnov (também conhecido como teste KS ou teste K–S) é um teste não paramétrico sobre a igualdade de distribuições de probabilidade contínuas e unidimensionais que pode ser usado para comparar uma amostra com uma distribuição de probabilidade de referência (teste K–S uniamostral) ou duas amostras uma com a outra (teste K–S biamostral).[1] Recebe este nome em homenagem aos matemáticos russos Andrei Kolmogorov e Nikolai Smirnov.\n", + "\n", + "A estatística de Kolmogorov–Smirnov quantifica a distância entre a função distribuição empírica da amostra e a função distribuição acumulada da distribuição de referência ou entre as funções distribuição empírica de duas amostras. A distribuição nula desta estatística é calculada sob a hipótese nula de que a amostra é retirada da distribuição de referência (no caso uniamostral) ou de que as amostras são retiradas da mesma distribuição (no caso biamostral). Em cada caso, as distribuições consideradas sob a hipótese nula são distribuições contínuas, mas não restritas.\n", + "\n", + "O teste K–S biamostral é um dos métodos não paramétricos mais úteis e difundidos para a comparação de duas amostras, já que é sensível a diferenças tanto no local, como na forma das funções distribuição acumulada empírica das duas amostras.[2]\n", + "\n", + "O teste de Kolmogorov–Smirnov pode ser modificado para servir como um teste da qualidade do ajuste. No caso especial do teste da normalidade da distribuição, as amostras são padronizadas e comparadas com uma distribuição normal padrão. Isto equivale a tornar a média e a variância da distribuição de referência iguais aos estimados da amostras, sabendo que usar isto para definir a distribuição de referência específica muda a distribuição nula da estatística. Vários estudos encontraram que, mesmo nesta forma corrigida, o teste é menos potente em avaliar a normalidade do que o teste de Shapiro–Wilk e o teste de Anderson–Darling.[3] Entretanto, estes outros testes também têm suas desvantagens. O teste de Shapiro–Wilk, por exemplo, é conhecido por não funcionar bem em amostras com muitos valores idênticos. \n", + "\n", + "
\n", + "\n", + "
\n" ] }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 95, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "KstestResult(statistic=1.0, pvalue=0.0)" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# from scipy.stats import kstest, ks_2samp\n", + "from scipy.stats import kstest, ks_2samp\n", "\n", - "# #kstest(np.random.choice(samples_normal, 500, replace=False), 'norm')\n", - "# #stats.kstest(samples_normal,'norm', alternative = 'greater', mode='asymp')\n", - "# stats.kstest(samples_normal,'norm')" + "kstest(np.random.choice(samples_normal, 500, replace=False), 'norm')\n", + "stats.kstest(samples_normal,'norm', alternative = 'greater', mode='asymp')\n", + "stats.kstest(samples_normal,'norm')" ] }, { "cell_type": "code", - "execution_count": 115, + "execution_count": 96, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "Ks_2sampResult(statistic=0.21999999999999997, pvalue=0.1546294612305996)" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# ks_2samp(np.random.choice(samples_normal, 50, replace=False), np.random.choice(samples_normal, 50, replace=True))" + "ks_2samp(np.random.choice(samples_normal, 50, replace=False), np.random.choice(samples_normal, 50, replace=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "## Mapa com a origem e relação entre os tipos de distribuição de probabilidade\n", + "\n", "

\n", "![mapa_distribuicoes](http://blog.cloudera.com/wp-content/uploads/2015/12/distribution.png)\n", "

" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -1035,7 +1283,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.6.8" } }, "nbformat": 4, diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/Exercicios.ipynb" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/Exercicios.ipynb" old mode 100644 new mode 100755 index 9b704ba..442218d --- "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/Exercicios.ipynb" +++ "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/Exercicios.ipynb" @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -18,127 +18,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### (1) Três dados comuns e honestos serão lançados. A probabilidade de que o número 6 seja obtido mais de uma vez é: " - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.07407407407407407" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2/27" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Wall time: 998 µs\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\sn3fru\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n", - " warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# definimos a quantidade de ensaios.\n", - "quantidade_ensaios = 10000\n", - "\n", - "# definimos a quantidade de lançamentos por ensaio.\n", - "lançamentos = 3\n", - "\n", - "# definimos a probabilidade de obter cara em cada lançamento.\n", - "probabilidade_sucesso = 1/6\n", - "\n", - "# binomial retorna o número de sucessos de cada vez que se realizou um ensaio de 8 lançamentos.\n", - "%time samples_binomial = np.random.binomial(n = lançamentos, p = probabilidade_sucesso, size = quantidade_ensaios)\n", - "\n", - "# construímos um gráfico.\n", - "eixo_x = 'Número de acertos por ensaio de 8 lançamentos'\n", - "sns.distplot(samples_binomial, axlabel = eixo_x, kde = False);" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 5807\n", - "1 3468\n", - "2 665\n", - "3 60\n", - "dtype: int64" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.value_counts(samples_binomial)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.0725" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(60+665)/10000" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### (2) Seja X uma variável aleatória que contém o número de caras saídas em 12 lançamentos de uma moeda honesta. Qual a probabilidade de sair 5 caras em 12 lançamentos, P(X=5)" + "### (1) Seja X uma variável aleatória que contém o número de caras saídas em 12 lançamentos de uma moeda honesta. Qual a probabilidade de sair 5 caras em 12 lançamentos, P(X=5)" ] }, { @@ -146,15 +26,13 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "\n" - ] + "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### (3) Um departamento de polícia recebe em média 5 solicitações por hora.  Qual  a  probabilidade  de  receber  2 solicitações numa hora selecionada aleatoriamente? " + "### (2) Um departamento de polícia recebe em média 5 solicitações por hora.  Qual  a  probabilidade  de  receber  2 solicitações numa hora selecionada aleatoriamente? " ] }, { @@ -177,7 +55,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### (4) (Meyer,2000) Suponha que Xt, o nº de partículas emitidas em t horas por uma fonte radioativa, tenha uma distribuição de Poisson com parâmetro 20t. Qual será a probabilidade de que exatamente 5 partículas sejam emitidas durante um período de 15 min?" + "### (3) (Meyer,2000) Suponha que Xt, o nº de partículas emitidas em t horas por uma fonte radioativa, tenha uma distribuição de Poisson com parâmetro 20t. Qual será a probabilidade de que exatamente 5 partículas sejam emitidas durante um período de 15 min?" ] }, { @@ -191,7 +69,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### (5) Gere uma distribuição normal com o peso da população, utilize média=70, desvio=25 e 100 observações e Plot a Função Densidade de Probabilidade (fdp em português mas vocês acharam mais frequentemente pdf, probability density functions)." + "### (4) Gere uma distribuição normal com o peso da população, utilize média=70, desvio=25 e 100 observações e Plot a Função Densidade de Probabilidade (fdp em português mas vocês acharam mais frequentemente pdf, probability density functions)." ] }, { @@ -205,7 +83,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### (6) Normalize a distribuição anterior com z-score\n", + "### (5) Normalize a distribuição anterior com z-score\n", "\n", "$Z \\sim \\dfrac{x - \\mu} {\\sigma^{2}\\,} $\n" ] @@ -225,7 +103,7 @@ "\n", "![z-score e suas probabilidades](http://www.portalaction.com.br/sites/default/files/EstatisticaBasica/figuras/distribuicaoNormal/normal3.PNG)\n", "\n", - "### (7) Sugira um procedimento para descobrirmos qual a probabilidade de um individuo ter peso menor que 20kg (não é necessário calcular, apenas descrever).\n", + "### (6) Sugira um procedimento para descobrirmos qual a probabilidade de um individuo ter peso menor que 20kg (não é necessário calcular, apenas descrever).\n", "\n", "- Vamos supor que a probabilidade encontrada é p%, seria possível descobrir a probabilidade de encontrar um individuo com mais de 120kg através de p%?\n", "- E se quisermos saber apenas a probabilidade de um individuo ter peso entre 70 e 120?" @@ -277,7 +155,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.6.8" } }, "nbformat": 4, diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/.DS_Store" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/.DS_Store" new file mode 100755 index 0000000..5008ddf Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/.DS_Store" differ diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/distribuicoes_prob.png" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/distribuicoes_prob.png" new file mode 100755 index 0000000..0a25f74 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/distribuicoes_prob.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/numpy_scipy.png" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/numpy_scipy.png" new file mode 100755 index 0000000..0190b4b Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/numpy_scipy.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/teste_ks.png" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/teste_ks.png" new file mode 100755 index 0000000..572d18d Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/img/teste_ks.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/d1.png" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/d1.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/ex1.png" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/ex1.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/ex2.png" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/ex2.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/ex3.png" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/ex3.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/ex4.png" "b/1-analise-explorat\303\263ria-basica/05-distribui\303\247\303\265es/solu\303\247\303\265es/ex4.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/Curso_de_Economia_Informa\303\247\303\265es_2013.pdf" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/Curso_de_Economia_Informa\303\247\303\265es_2013.pdf" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/Teste_T_Gr\303\241fico_bicaudal.gif" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/Teste_T_Gr\303\241fico_bicaudal.gif" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/anova.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/anova.png" new file mode 100755 index 0000000..79dff03 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/anova.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/anova_explicada.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/anova_explicada.png" new file mode 100755 index 0000000..1a3f8b2 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/anova_explicada.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/erro_tabela.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/erro_tabela.png" new file mode 100755 index 0000000..fa92a90 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/erro_tabela.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/erros.PNG" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/erros.PNG" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/estatistica.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/estatistica.png" new file mode 100755 index 0000000..3390565 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/estatistica.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/houses_tableau.jpg" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/houses_tableau.jpg" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/intervalo_de_confianca.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/intervalo_de_confianca.png" new file mode 100755 index 0000000..4eec992 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/intervalo_de_confianca.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/klout.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/klout.png" new file mode 100755 index 0000000..2f31798 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/klout.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/linear_regression_scheme.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/linear_regression_scheme.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/normal.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/normal.png" old mode 100644 new mode 100755 index aa7b449..ffc9cc6 Binary files "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/normal.png" and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/normal.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/regiao_critica_bilateral_aceitacao_exemplo.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/regiao_critica_bilateral_aceitacao_exemplo.png" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/t-student.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/t-student.png" new file mode 100755 index 0000000..e4798e5 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/t-student.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/teste_hipotese.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/teste_hipotese.png" new file mode 100755 index 0000000..4efdedf Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/teste_hipotese.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/img/zona_aceitacao.png" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/zona_aceitacao.png" new file mode 100755 index 0000000..83ab307 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/06-inferencia1/img/zona_aceitacao.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/06-inferencia1/inferencia_1.ipynb" "b/1-analise-explorat\303\263ria-basica/06-inferencia1/inferencia_1.ipynb" old mode 100644 new mode 100755 index ba016bf..c626250 --- "a/1-analise-explorat\303\263ria-basica/06-inferencia1/inferencia_1.ipynb" +++ "b/1-analise-explorat\303\263ria-basica/06-inferencia1/inferencia_1.ipynb" @@ -4,176 +4,336 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Inferência\n", - "Wikipedia: Inferência estatística é um ramo da Estatística cujo objetivo é fazer afirmações a partir de um conjunto de valores representativo (amostra) sobre um universo (população)\n", + "# Introdução à Inferência Estatística\n", "\n", - "Matematica é mais dedutiva e a inferência é indutiva.\n", + "*fonte: Wikipedia*\n", "\n", - " Parâmetros -> População\n", - " Estatisticas -> Amostra\n", + "Inferência estatística é um ramo da Estatística cujo objetivo é fazer afirmações a partir de um conjunto de valores representativo (amostra) sobre um universo (população), sendo que assume-se que a população é muito maior do que o conjunto de dados observados, a amostra. Tal tipo de afirmação deve sempre vir acompanhada de uma medida de precisão sobre sua veracidade. Para realizar este trabalho o estatístico coleta informações de dois tipos, experimentais (as amostras) e aquelas que obtém na literatura. As duas principais escolas de inferência são a inferência frequencista (ou clássica) e a inferência bayesiana.\n", "\n", - "- **Viés**: Viés ou erro sistemático é a distorção sistemática entre a medida de uma variável estatística e o valor real da grandeza a estimar. A introdução de um viés no cálculo estatístico pode estar ligada quer a imperfeição ou deformação da amostra (estatística) que serve de base para a estimativa, quer ao próprio método de avaliação.\n", + "A inferência estatística é geralmente distinta da estatística descritiva. A descrição estatística pode ser vista como a simples apresentação dos fatos, nos quais o modelo de decisões feito pelo analista tem pouca influência. É natural que análises estatísticas avancem, indo da descrição para a inferência de padrões. Essa última tarefa depende do modelo usado e/ou criado pelo analista dos dados. \n", + "\n", + "Na prática, a matematica é mais dedutiva e a inferência é indutiva.\n", + "\n", + "- Parâmetros -> População\n", + "- Estatisticas -> Amostra\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "### Conceitos fundamentais para a compreeensão da estatística\n", + "\n", + "- **Viés**: Viés ou erro sistemático é a distorção sistemática entre a medida de uma variável estatística e o valor real da grandeza a estimar. A introdução de um viés no cálculo estatístico pode estar ligada quer a imperfeição ou deformação da amostra (estatística) que serve de base para a estimativa, quer ao próprio método de avaliação. Estudaremos **viés** na aula de **Inferência 2**.\n", "\n", "- **Intervalos de confiança**: Intervalo de confiança (IC) é um tipo de estimativa por intervalo de um parâmetro populacional desconhecido.\n", "\n", "- **Testes de hipóteses**: ou teste de significância é um procedimento estatístico que permite tomar uma decisão (aceitar ou rejeitar a hipótese).\n", "\n", + "Vamos então aprofundar agora os conceitos de **intervalo de confiança** e **teste de hipótese**, e deixar viés para a próxima aula." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Intervalo de Confiança\n", + "\n", + "*fonte: Wikipedia*\n", "\n", - "### Viés !!\n", + "Em estatística, intervalo de confiança (IC) é um tipo de estimativa por intervalo de um parâmetro populacional desconhecido. Introduzido na estatística por Jerzy Neyman em 1937, é um intervalo observado (calculado a partir de observações) que pode variar de amostra para amostra e que com dada frequência (nível de confiança) inclui o parâmetro de interesse real não observável.\n", "\n", - "Exemplo (1) Erros aleatórios e Sistematicos.\n", + "Como os dados observados são amostras aleatórias da população, o intervalo de confiança construído a partir dos dados também é aleatório. Entretanto, o intervalo de confiança calculado a partir de uma amostra particular não inclui necessariamente o valor real do parâmetro. Quando se tem 99% de confiança de que o valor real do parâmetro está no intervalo de confiança, significa que 99% dos intervalos de confiança observados têm o valor real do parâmetro. Tomando–se qualquer amostra particular, o parâmetro populacional desconhecido pode ou não pode estar no intervalo de confiança observado.\n", "\n", - " Aleatórios: Eventos estocasticos.\n", - " Sistematicos: Viés!\n", - " \n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Teste de Hipóteses\n", + "\n", + "Teste de hipóteses, teste estatístico ou teste de significância é um procedimento estatístico que permite tomar uma decisão (aceitar ou rejeitar a hipótese nula ${H_0}$ entre duas ou mais hipóteses (geralmente adota-se hipótese nula ${H_0}$ e hipótese alternativa ${H_1}$), utilizando os dados observados de um determinado experimento. Há diversos métodos para realizar o teste de hipóteses, que incluem Fisher (teste de significância), o método de Neyman–Pearson, método de Bayes, e o método t-Student.\n", + "\n", + "Por meio da teoria da probabilidade, é possível inferir sobre quantidades de interesse de uma população a partir de uma amostra observada de um experimento científico. Por exemplo, estimar pontualmente e de forma intervalar um parâmetro de interesse, testar se uma determinada teoria científica deve ser descartada, verificar se um lote de remédios deve ser devolvido por falta de qualidade, entre outros. Por meio do rigor matemático, a inferência estatística pode ser utilizada para auxiliar a tomada de decisões nas mais variadas áreas.\n", "\n", + "
\n", + "\n", + "
\n", "\n", - "Exemplo (2) Viés de Seleção. Projeto para formação de desempregados. Quando compara-se a média com as pessoas que não participaram do projeto, não se remove todos os efeitos, como a motivação, e o efeito do programa parece muito maior que a realidade. Forma correta: Teste A/B\n", + "Portanto, para um teste de hipóteses teremos geralmente:\n", "\n", + "- Hipótese nula ${H_0}$: é a hipótese assumida como verdadeira para a construção do teste. É a teoria, o efeito ou a alternativa que se está interessado em testar e **não rejeitar**.\n", "\n", - "### Teste de Hipóteses\n", + "- Hipótese alternativa ${H_1}$: é considerada quando a hipótese nula não tem evidência estatística.\n", "\n", - "Queremos testar sempre uma hipótese nula $H_0$ contra uma hipótese alternativa\n", - "$H_1$\n", + "Os testes de hipóteses são utilizados para determinar quais resultados de um estudo científico podem levar à rejeição da hipótese nula ${H_0}$ a um nível de significância pré–estabelecido. O estudo da teoria das probabilidades e a determinação da estatística de teste correta são fundamentais para a coerência de um teste de hipótese. Se as hipóteses do teste de hipóteses não forem assumidas de maneira correta, o resultado será incorreto e a informação será incoerente com a questão do estudo científico. Os tipos conceituais de erro (erro do tipo I e erro do tipo II) e os limites paramétricos ajudam a distinguir entre a hipótese nula ${H_0}$ e a hipótese alternativa ${H_1}$.\n", "\n", - "Os possíveis teste são:\n", + "
\n", + "\n", + "
\n", "\n", - "$$ H_0 : \\theta = \\theta_0$$ $$H_1 : \\theta < \\theta_0 $$ \n", + "Graficamente temos:\n", "\n", + "
\n", + "
\n", + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Procedimentos para fazer um Teste de Hipótese com uma amostra\n", "\n", - "Na hipótese alternativa, poderiam ser também relações de diferença, menor ou \n", - "igual, maior e por último a relação de maior ou igual. \n", + "É apropriado para comparar a amostra com a população a partir da hipótese. As características da população são conhecidas a partir da teoria ou são calculadas a partir da população.\n", "\n", - "Procedimentos para fazer um Teste de Hipótese\n", + "- (1) Escolher a hipótese a ser testada\n", + "- (2) Dependendo do que se quer testar, escolher a estatística a ser usada na comparação dos valores na realização do teste de hipóteses\n", "\n", - "1-Escolher a hipótese a ser testada\n", - "2-Dependendo do que se quer testar, escolher a estatística a ser usada:\n", + "Vamos ver agora os tipos de teste mais comuns para **mostragem alearórias simples - uma variável**.\n", "\n", - "Por exemplo se quisermos testar a Média de uma população com média $\\mu$ e variância $\\sigma^2$ conheciada, devemos utilizar a média amostral $\\overline x$ e a transformação $z=\\frac{\\overline x-\\mu_0}{\\sigma / \\sqrt{n}}$ tem distribuição $N(0;1)$\n", + "### Teste da média ou t-Student\n", "\n", - "Testar a variância, deveremos utilizar a estatística $\\chi^2 = \\frac{(n-1)s^2}{\\sigma_0}$ (lê-se ki-quadrado) que tem distribuição qui-quadrado com (n-1) graus de liberdade.\n", + "Por exemplo, para se testar um certo valor $\\overline x$ como média da hipótese de uma população com média $\\mu_0$ e variância $\\sigma^2$ conhecida, devemos utilizar a transformação seguinte, com $n$ observações:\n", "\n", - "Com a estatística escolhida e com o nível de significância $\\alpha$ escolhido, encontraremos o **valor crítico** e também a **Região Crítica**. \n", + "
\n", + "$$z=\\frac{\\overline x-\\mu_0}{\\sigma / \\sqrt{n}}$$\n", + "
\n", "\n", - "Calcular o valor observado da estatística na amostra.\n", + "onde:\n", "\n", - "valor observado} esta dentro da Região Crítica. Se estiver, rejeitamos a hipótese nula $H_0$, caso contrário, não rejeitamos $H_0$.\n", + "- ${\\bar x}$ - valor médio da hipótese\n", + "- ${\\mu_0}$ - valor medio da amostra\n", + "- ${\\sigma}$ - desvio padrão amostral\n", + "- ${n}$ - tamanho da amostra\n", "\n", - "\n", + "Caso o desvio padrão da população seja desconhecido, utilizamos o desvio padrão da amostra ${s}$:\n", "\n", - "**Testes mais comuns**\n", + "
\n", + "$$z=\\frac{\\overline x-\\mu_0}{s / \\sqrt{n}}$$\n", + "
\n", "\n", - "- Média com variância conhecida: \n", - "$$z=\\frac{\\overline x-\\mu_0}{\\sigma / \\sqrt{n}} \\sim N(0;1)$$\n", + "Para este caso, o desvio padrão amostral ${s}$ será:\n", "\n", - "- Média com variância desconhecida: \n", - "$$t=\\frac{\\overline x-\\mu_0}{s / \\sqrt{n}} \\sim t(n-1)$$\n", + "
\n", "$$s=\\sqrt{\\frac{\\sum(x_i-\\overline x)²}{n-1}}$$\n", + "
\n", + "\n", + "Para melhor visualização do teste de hipóteses da média, a figura abaixo ilustra a média $\\mu_0$ da amostra com a grande região de não rejeição, e a média da hipótese à esquerda gerando uma segunda curva normal e as regiões de rejeição para o **erro tipo I** e o **erro tipo II** em destaque.\n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "\n", + "### Teste da variância\n", + "\n", + "Para se testar a variância, deveremos utilizar a estatística *Ki-Quadrado*, com $(n-1)$ graus de liberdade\n", + "\n", + "
\n", + "$$\\chi^2 = \\frac{(n-1)s^2}{\\sigma_0}$$\n", + "
\n", + "\n", + "### Teste da proporção\n", + "\n", + "O teste a proporção é análogi ao teste das médias, só que para valores de proporção: \n", + "\n", + "
\n", + "$$z=\\frac{p\\prime-p_0}{\\sqrt{\\frac{p_0-(1-p_0)}{n}}}$$\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Valor crítico e região crítica\n", + "\n", + "Com a estatística escolhida e com o nível de significância $\\alpha$ escolhido, é possível encontrar o **valor crítico** e também a **região crítica**. \n", + "\n", + "#### Nível de significância e p-value\n", + "\n", + "Para ciência, o nível de significância adotado em geral é 0.95, o que torna o valor critico para *p-value* = 0.05 (1-p).\n", "\n", - "- Proporção:\n", - "$$z=\\frac{p\\prime-p_0}{\\sqrt{\\frac{p_0-(1-p_0)}{n}}} \\sim N(0;1)$$\n", + "Como veremos nos exemplos mais adiante, para se testar um certo valor de média da hipótese nula ${\\bar x}$, com a média nominal ${\\mu_0}$, o desvio padrão ${\\sigma}$ e o tamanho da amostra ${n}$, deve-se calcular o intervalo de confiança e, caso a média da hipótese esteja dentro do intervalo de confiança, então **não rejeitamos** a hipótese nula, caso contrário, a hipótese nula deve ser **rejeitada**.\n", "\n", - "- Variância: \n", - "$$\\chi^2 =\\frac{(n-1)s^2}{\\sigma_0} \\sim \\chi^2 (n-1)$$\n", + "Segundo a figura abaixo, conseguimos visualizar a região central chamada de região de aceitação ou não rejeição, contendo 95% da área sob a curva de densidade de distribuição da variável em estudo, e a região crítica representada pelas duas bordas nas extremidades direita e esquerda, cada uma somando 2.5% da área sob a curva, totalizando os 5% remanescentes que justificam o valor crítico de *p-value* = 0.05. É interessante observar os valores críticos de **z-score** (como veremos adiante) em -1.96 (à esquerda) e 1.96 (à direita).\n", "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Teste de Hipóteses com duas amostras\n", + "\n", + "É apropriado para comparar duas amostras, tipicamente amostra experimental e amostra de controle a partir de um experimento cientificamente controlado. Também pode ser chamado de **teste para comparação de 2 médias**.\n", + "\n", + "### Teste pareado\n", "\n", - "**Teste para comparação de 2 Médias**\n", + "É apropriado para comparar duas amostras quando é impossível controlar variáveis importantes. Em vez de comparar dois conjuntos, os componentes são pareados entre amostras. Então, a diferença entre os componentes se torna a amostra. Tipicamente a média das diferenças é comparada a 0. O cenário comum de exemplo para quando o teste pareado é apropriado é quando um único conjunto de sujeitos de teste tem algo aplicado a eles e o teste destina-se a verificar um efeito.\n", "\n", - "- Dados Emparelhados\n", + "Calculamos as diferenças dos valores das amostras e calculamos $\\overline x$ e $s$ das diferenças e usamos a estatística:\n", + "

\n", + "$$t=\\frac{\\overline x- \\mu_0}{s / \\sqrt{n}} \\sim t(n-1)$$\n", + "
\n", "\n", - " Calculamos as diferenças dos valores das amostras e calculamos \n", - "$\\overline x$ e $s$ das diferenças e usamos a estatística\n", - " \n", - "$$t=\\frac{\\overline x-\\mu_0}{s / \\sqrt{n}} \\sim t(n-1)$$\n", + "Onde $s$ é o desvio padrão amostral:\n", + "\n", + "
\n", "$$s=\\sqrt{\\frac{\\sum(x_i-\\overline x)²}{n-1}}$$\n", + "
\n", + "\n", + "### Duas amostras independentes\n", "\n", - " \\item \\textbf{Duas Amostras Independentes}: \\ \\ \n", - " \\item As variâncias são conheciadas e $\\mu_1-\\mu_2=\\triangle$:\n", + "#### Médias e variâncias conhecidas:\n", "\n", + "Teste de hipóteses para duas amostras independentes, com médias conhecidas $\\overline x_1$ e $\\overline x_2$, e variâncias conhecidas $\\sigma_1²$ e $\\sigma_2²$, sendo a diferença entra suas médias dada por $\\mu_1-\\mu_2=\\triangle$:\n", + "\n", + "
\n", "$$z=\\frac{(\\overline x_1-\\overline x_2)- \\triangle} {\\sqrt{\\frac{\\sigma_1²}{n_1}+\\frac{\\sigma_2²}{n_2}}} \\sim N(0;1)$$\n", + "
\n", + "\n", + "#### Médias conhecidas e variâncias desconhecidas porém iguais:\n", "\n", - "- As variâncias são desconheciadas e $\\mu_1-\\mu_2=\\triangle$:\n", + "Caso as variâncias sejam desconhecidas porém iguais, utilizamos o desvio padrão amostral $s$, com $\\mu_1-\\mu_2=\\triangle$:\n", "\n", + "
\n", "$$t=\\frac{(\\overline x_1-\\overline x_2)-\n", " \\triangle}\n", " {s_p\\sqrt{\\frac{1}{n_1}+\\frac{1}{n_2}}} \\sim t(n_1+n_2-2)$$\n", + "
\n", "\n", - "- Variâncias desconhecidas e diferentes:\n", + "#### Médias conhecidas, variâncias desconhecidas e diferentes:\n", + "\n", + "Caso as variâncias sejam desconhecidas porém iguais, utilizamos os desvios padrão amostrais $s_1$ e $s_2$, com $\\mu_1-\\mu_2=\\triangle$:\n", + "\n", + "
\n", "$$t=\\frac{(\\overline x_1-\\overline x_2)- \\triangle} {\\sqrt{\\frac{s_1²}{n_1}+\\frac{s_2²}{n_2}}} \\sim t(\\phi)$$\n", + "
\n", "\n", - "Teste para a comparação de duas Variâncias}\n", + "#### Teste para a comparação de duas Variâncias (Teste F):\n", "\n", - "A estatística a ser usada será:\n", + "É comumente usado para decidir se agrupamentos de dados por categorias são significativos. A hipótese nula é que duas variâncias são as mesmas, então o agrupamento proposto não é significativo. A estatística a ser usada será:\n", + "\n", + "
\n", "$$F=\\frac{s_1²}{s_2²}$$\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Teste para Várias Médias - ANOVA (Analysis of Variance)\n", "\n", - "Teste para Várias Médias - ANOVA\n", - "$k$ populaçãoes com médias $\\mu_i$ desconhecidas.\n", + "Análise de variância é a técnica estatística que permite avaliar afirmações sobre as médias de populações. A análise visa, fundamentalmente, verificar se existe uma diferença significativa entre as médias e se os fatores exercem influência em alguma variável dependente, com $k$ populaçõess com médias $\\mu_i$ desconhecidas.\n", "\n", - "Queremos testar se as $k$ médias são iguais, para isto vamos utilizara tabela\n", - "ANOVA - Analysis of Variance. \n", + "Os pressupostos básicos da análise de variância são:\n", "\n", - "Variação dos dados:\n", + "- As amostras são aleatórias e independentes\n", + "- As populações têm distribuição normal (o teste é paramétrico)\n", + "- As variâncias populacionais são iguais\n", + "\n", + "Na prática, esses pressupostos não precisam ser todos rigorosamente satisfeitos. Os resultados são empiricamente verdadeiros sempre que as populações são aproximadamente normais (isso é, não muito assimétricas) e têm variâncias próximas. \n", + "\n", + "Queremos testar se as $k$ médias são iguais, para isto vamos utilizara tabela **ANOVA - Analysis of Variance**\n", "\n", + "Variação dos dados:\n", "\n", + "
\n", "$$SQT = \\sum_{i=1}^{k}\\sum_{j=1}^{n_i} (x_{ij}- \\overline x)^2 = \n", " \\sum_{i=1}^{k}\\sum_{j=1}^{n_i} x_{ij}^2 - \n", " \\frac{1}{n}\\Big(\\sum_{i=1}^{k}\\sum_{j=1}^{n_i} x_{ij}\\Big)^2 $$\n", - "\n", + "

\n", "$$SQE = \\sum_{i=1}^{k} n_i(\\overline x_{i}- \\overline x)^2 =\n", " \\sum_{i=1}^{k} \\frac{1}{n_i}\\Big (\\sum_{j=1}^{n_i} x_{ij}\\Big)^2 -\n", " \\frac{1}{n}\\Big(\\sum_{i=1}^{k}\\sum_{j=1}^{n_i} x_{ij}\\Big)^2 $$\n", - "\n", + "

\n", "$$SQR = \\sum_{i=1}^{k}\\sum_{j=1}^{n_i} x_{ij}^2 -\n", " \\sum_{i=1}^{k} \\frac{1}{n_i}\\Big (\\sum_{j=1}^{n_i} x_{ij}\\Big)^2$$\n", - "\n", + "

\n", "Verifica-se que:\n", "\n", "$$SQT=SQE+SQR$$\n", "\n", - "- Teste de Aderência\n", - "\n", - "Quando não sabemos a distribuição de uma v.a. X, podemos utilizar o\n", - "\\textit{Teste de Aderência} para sabermos se a v.a. X segue uma determinada\n", - "distribuição.\n", - "\n", - "Usaremos a estatística:\n", - "\n", - "$$\\chi^2 = \\sum_{i=1}^{k}\\frac{(O_i-E_i)^2}{E_i}$$\n", - "\n", - "Se todos os valores $E_i$ forem maiores ou iguais a 5, a estatística acima segue distribuição\n", - "$\\chi^2$ com $(k-1-m)$ graus de liberdade, onde:\n", + "onde:\n", "\n", - "$k$ = número de valores considerados;\n", + "- SQT: Soma dos Quadrados Total\n", + "- SQE: Soma dos Quadrados Explicada\n", + "- SQR: Soma dos Quadrados dos Resíduos\n", "\n", - "$m$ = número de parâmentros estimados a partir da amostra.\n", + "

\n", + "\n", + "

\n", "\n", - "- Teste de Independência\n", + "Dentro das premissas de variáveis aleatórias e independentes, o ideal é que cada uma das variáveis de um modelo explique uma determinadda parte da variável dependente. Com isso, podemos imaginar como o *fit* desejado, veriáveis independentes entre si conforme ilustrado na figura abaixo.\n", "\n", - "Usaremos a estatística:\n", - "\n", - "$$\\chi^2 = \\sum_{i=1}^{r}\\sum_{j=1}^{s}\\frac{(O_{ij}-E_{ij})^2}{E_{ij}}$$\n", - "\n", - "A estatística acima segue distribuição $\\chi^2$ com \n", - "$\\phi = (r-1)(s-1)$ graus de liberdade, onde:\n", - "\n", - "$r$ = número de linhas na tabela;\n", - "\n", - "$s$ = número de colunas na tabela.\n", + "

\n", + "\n", + "

" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exemplos práticos" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exemplo (1): Fomos contratados por uma empresa de loteria para pesquisar a proporção de clientes que compra determinado produto. A empresa manterá seu atual planejamento de marketing se a sua participação de mercado for de 50% ou mais, caso contrário, ela triplicará seus gastos em publicidade. \n", "\n", - "\n", - "\n" + "- Hipótese Nula ($H_0$): 50% ou mais do mercado compra na lotérica (sem investimento adicional em MKT)\n", + "- Hipeotese Alternativa ($H_1$): menos de 50% do mercado compra na lotérica (trplicar o investimento em MKT)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Importando as bilbiotecas necessárias" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import scipy.stats as st\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Exemplo (1) Fomos contratados por uma empresa de loteria para pesquisar a proporção de clientes que compra determinado produto. A empresa manterá seu atual planejamento de marketing se a sua participação de mercado for de 50% ou mais, caso contrário, ela triplicará seus gastos em publicidade. " + "### Base de dados\n", + "\n", + "A base de dados será criada com o numpy.binomial como um teste de 100 observações aleatórias com valores 0 e 1 (que define se o cliente compra ou não na casa lotérica), com parâmetro de distribuição p=0.4 (que define o target da média).\n", + "\n", + "### Criando um DataFrame com os dados" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -227,7 +387,7 @@ " \n", " \n", " 6\n", - " 0\n", + " 1\n", " \n", " \n", " 7\n", @@ -239,7 +399,7 @@ " \n", " \n", " 9\n", - " 0\n", + " 1\n", " \n", " \n", "\n", @@ -253,24 +413,23 @@ "3 0\n", "4 0\n", "5 1\n", - "6 0\n", + "6 1\n", "7 1\n", "8 0\n", - "9 0" + "9 1" ] }, - "execution_count": 1, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "import numpy as np\n", - "import pandas as pd\n", "p=0.4\n", "testes=1\n", "obs=100\n", - "df = pd.DataFrame([int(n) for n in np.random.binomial(testes, p, obs)], columns= ['compra_ou_não'])\n", + "df = pd.DataFrame([int(n) for n in np.random.binomial(testes, p, obs)], \n", + " columns= ['compra_ou_não'])\n", "df.head(10)\n", "\n", "# soma de 1's / total de linhas = obs" @@ -278,29 +437,1533 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.plot.hist()" + ] }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.4" + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 100 entries, 0 to 99\n", + "Data columns (total 1 columns):\n", + "compra_ou_não 100 non-null int64\n", + "dtypes: int64(1)\n", + "memory usage: 880.0 bytes\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
compra_ou_não
count100.000000
mean0.460000
std0.500908
min0.000000
25%0.000000
50%0.000000
75%1.000000
max1.000000
\n", + "
" + ], + "text/plain": [ + " compra_ou_não\n", + "count 100.000000\n", + "mean 0.460000\n", + "std 0.500908\n", + "min 0.000000\n", + "25% 0.000000\n", + "50% 0.000000\n", + "75% 1.000000\n", + "max 1.000000" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Calculando a média " + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.46" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "market_share_amostral=df.compra_ou_não.sum()/len(df.compra_ou_não)\n", + "market_share_amostral" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(compra_ou_não 0.500908\n", + " dtype: float64, compra_ou_não 0.250909\n", + " dtype: float64)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "std,var=df.std(),df.std()**2\n", + "std,var" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Formulando a hipótese a ser testada\n", + "\n", + "Segundo o teste de hipóteses, caso o market share da lotérica seja maior que 50% o investimento deve se manter o mesmo (não triplicar), ou seja, se $p(H_0) > 0.5$ não rejeitamos a hipótese. Neste caso conhecemos a média e a variância amostral.\n", + "\n", + "Será utilizada a média amostral padronizada do ponto anterior como estatístico de teste. Adotando o nível de significância de 0.95, está sendo buscada uma regra que deixe um valor de $p > 0.05$ de rejeição quando H0 for verdadeira." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### teste" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "compra_ou_não -0.798549\n", + "dtype: float64" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# O teste é \n", + "p_H0=0.5\n", + "teste = (market_share_amostral-p_H0) / (std/(obs**(0.5)))\n", + "teste" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#A decisão é...\n", + "from math import *\n", + "rejeição=(fabs(teste) < fabs(z))\n", + "rejeição" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Calculando e comparando os valores críticos" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Média" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.36182378391560044, 0.5581762160843996)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculando o intervalo de confiança pel0 Scipy.Stats\n", + "\n", + "mean = df.compra_ou_não.mean()\n", + "sigma = df.compra_ou_não.std()\n", + "n = len(df.compra_ou_não)\n", + "\n", + "st.norm.interval(0.95, loc=mean, scale=sigma/np.sqrt(n))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.36 <---> 0.56\n" + ] + } + ], + "source": [ + "# Calculando o intervalo de confiança pela fórmula\n", + "\n", + "limite_inferior = st.norm.interval(0.95, loc=mean, scale=sigma/np.sqrt(n))[0]\n", + "limite_superior = st.norm.interval(0.95, loc=mean, scale=sigma/np.sqrt(n))[1]\n", + "print(\"%.2f\" % limite_inferior,'<--->', \"%.2f\" % limite_superior) " + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Comparando com a hopótese\n", + "\n", + "limite_inferior < market_share_amostral < limite_superior" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### p-value" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ttest_1sampResult(statistic=-0.7985494095046901, pvalue=0.4264632540527489)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculando as estatísticas por Scipy.Stats\n", + "\n", + "st.ttest_1samp(df.compra_ou_não,0.5) " + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.4264632540527489" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Isolando o p-value calculado\n", + "\n", + "p_value = st.ttest_1samp(df.compra_ou_não,0.5)[1]\n", + "p_value" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Comparando\n", + "\n", + "p_value > 0.05" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### t-Student" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.7985494095046901" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Isolando o t-Student calculado\n", + "\n", + "t_student = st.ttest_1samp(df.compra_ou_não,0.5)[0]\n", + "t_student" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1.96 <---> 1.96\n" + ] + } + ], + "source": [ + "# Calculando o t-Student crítico\n", + "\n", + "t_student_critico_superior = st.ttest_1samp(df.compra_ou_não,limite_inferior)[0]\n", + "t_student_critico_inferior = st.ttest_1samp(df.compra_ou_não,limite_superior)[0]\n", + "print(\"%.2f\" % t_student_critico_inferior,'<--->',\"%.2f\" % t_student_critico_superior)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Comparando\n", + "\n", + "t_student_critico_inferior < t_student < t_student_critico_superior" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exemplo (2): Klout Score\n", + "\n", + "## Introdução\n", + "\n", + "Klout costumava ser um site e aplicativo móvel que usava análise de mídia social para classificar seus usuários de acordo com a influência social online através do \"Klout Score\", que era um valor numérico entre 1 e 100. Ao determinar a pontuação do usuário, o Klout media o tamanho de uma rede de mídia social do usuário e correlacionava o conteúdo criado para medir como outros usuários interagem com esse conteúdo. Klout lançado em 2008.\n", + "\n", + "A Lithium Technologies, que adquiriu o site em março de 2014, fechou o serviço em 25 de maio de 2018.\n", + "\n", + "Klout utilizava os dados do Bing, Facebook, Quadrangular, Google+, Instagram, LinkedIn, Twitter, YouTube e Wikipedia para criar perfis de usuários do Klout que recebia uma \"pontuação do Klout\" exclusiva. As pontuações de Klout variam de 1 a 100, com pontuações mais altas correspondendo a uma classificação mais alta da amplitude e da força da influência social on-line de cada um. Enquanto todos os usuários do Twitter recebiam uma pontuação, os usuários que se registraram no Klout podiam vincular várias redes sociais, das quais os dados da rede foram agregados para influenciar a pontuação do Klout do usuário.\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "## Aplicação do Klout-Score na prática\n", + "\n", + "Agora vamos observar a distribuição dos [Klout Scores](https://klout.com/corp/score) que está anexada ao arquivo `klouts_scores.csv`. com isso, vamos imaginar que 1048 observações de Klout scores seja a nossa população com as quais contamos." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Aproximando uma distribuição amostral das médias\n", + "\n", + "### Orientações\n", + "\n", + "1. Obtemos uma amostra de tamanho 5 e calculamos a média. Repetimos este passo 1000 vezes para fazer um histograma das médias. \n", + "2. Obtemos uma amostra de tamanho 10 e calculamos a média. Repetimos este passo 1000 vezes.\n", + "3. Obtemos uma amostra de tamanho 100 e calculamos a média. Repetimos este passo 1000 vezes.\n", + "4. O que é observado sobre o histograma da média à medida que aumentamos o tamanho amostral?\n", + "5. O que é observado sobre o valor das médias das diferentes distribuições amostrais em relação à média populacional?" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import scipy.stats as st\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('data/klout_scores.csv', header=None, decimal=\",\")\n", + "df.columns = ['k_score']" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 1048 entries, 0 to 1047\n", + "Data columns (total 1 columns):\n", + "k_score 1048 non-null float64\n", + "dtypes: float64(1)\n", + "memory usage: 8.3 KB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
k_score
025.104179
160.908747
223.222238
351.553491
422.629690
\n", + "
" + ], + "text/plain": [ + " k_score\n", + "0 25.104179\n", + "1 60.908747\n", + "2 23.222238\n", + "3 51.553491\n", + "4 22.629690" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.plot.hist(bins=50)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Definimos uma função para realizar a amostragem e calcular a média para uma amostra de tamanho n." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "def sampling(df, n):\n", + " \"\"\"\n", + " df = dataframe\n", + " n = tamanho da amostra\n", + " \"\"\"\n", + " index = np.random.choice(range(0,len(df)), size = n)\n", + " df_s = np.array(df.iloc[index,])\n", + " return(df_s)\n", + "\n", + "\n", + "def samp_mean(df, n_i):\n", + " means = [] # means = list()\n", + " for reps in range(0,1000):\n", + " s_ = sampling(df, n_i)\n", + " m_ = s_.mean()\n", + " means.append(m_)\n", + " return(means)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 [25.10417915]\n", + "1 [60.9087471]\n", + "2 [23.22223768]\n", + "3 [51.55349118]\n", + "4 [22.62969025]\n", + "5 [53.33809913]\n" + ] + } + ], + "source": [ + "for i, n in enumerate(df.values):\n", + " print(i, n)\n", + " if i == 5:\n", + " break " + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n df = dataframe\\n n = tamanho da amostra\\n '" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sampling.__doc__" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Verificação da redução de variância com o aumento da amostra" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "m = []\n", + "n_s = [2,10,50,300]\n", + "plt.figure(figsize=(10,10))\n", + "\n", + "for i in range(len(n_s)):\n", + " \n", + " mm = samp_mean(df, n_s[i])\n", + " plt.subplot(('22' + str(i+1)))\n", + " plt.hist(mm)\n", + " plt.xlim((0,75))\n", + " e = np.mean(mm) - 37.71905483252884\n", + " plt.title('n=' + str(n_s[i]) + ' - ' + 'Media=' + str(round(np.mean(mm),4)) + ' - Erro:' + str(round(e,4)) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Calculando um intervalo de confiança com `scipy`\n", + "\n", + "### Orientações\n", + "\n", + "2.1. Agora, extrair uma amostra da população de tamanho n=200. \n", + "\n", + "2.2. Em seguida, calcular um intervalo de confiança de 95% para a média populacional" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "#Extrair a amostra \n", + "sample = sampling(df,200)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(34.061509633257444, 38.52549836814855)" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Calcular o estatístico a ser utilizado\n", + "mean, sigma, n = np.mean(sample), np.std(sample), len(sample)\n", + "\n", + "# Calculamos o intervalo de confiança de uma aproximação normal com o método de scipy\n", + "st.norm.interval(0.95, loc=mean, scale=sigma/np.sqrt(n))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(34.06146861908352, 38.52553938232247)" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ele pode ser calculado manualmente, com base na fórmula \n", + "mean - 1.96*sigma/np.sqrt(n), mean + 1.96*sigma/np.sqrt(n)\n", + "# da tabela Z-Score: 0.95 / 2 = 0.4750 --> 1.96" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(33.8770523406778, 38.70995566072819)" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Podemos calcular uma aproximação normal\n", + "st.t.interval(0.95, n, loc=mean, scale=sigma/(np.sqrt(n)-1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Fazendo um teste de hipótese em `scipy`\n", + "\n", + "### Orientações\n", + "\n", + "3.1. Agora, suponha que em uma consultoria é apresentada a média do Klout Score populacional de 38. Realizar um teste de hipótese sobre isso, com um nível de significância de 0.05. Apresentar as hipóteses nulas e alternativas. Qual foi a conclusão?\n", + "\n", + "3.2. Suponha que, em vez de definir um nível de significância de 0.05, é definido um nível de 0.1. O resultado poderia ter sido alterado?\n", + "\n", + "3.3. E se a hipótese nula indicasse que a média é 42?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1. Agora, suponha que em uma consultoria é apresentada a média do Klout Score populacional de 38. Realizar um teste de hipótese sobre isso, com um nível de significância de 0.05. Apresentar as hipóteses nulas e alternativas. Qual foi a conclusão?\n", + "\n", + "Para o nosso exemplo:\n", + "\n", + "- Hipotese nula (algo que se quer **não rejeitar**): a média de Klout Score de 38 é estatísticamente válida.\n", + "- Hipotese alternativa: a média de Klout Score de 38 não é estatísticamente válida.\n", + "\n", + "Para este trabalho, vamos utilizar os valores do nosso **Sample** com tamanho de 200 observações." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(34.061509633257444, 38.52549836814855)" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Colculando o intervalo de confiança:\n", + "\n", + "mean, sigma, n = np.mean(sample), np.std(sample), len(sample)\n", + "st.norm.interval(0.95, loc=mean, scale=sigma/np.sqrt(n))" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ttest_1sampResult(statistic=array([-1.49476118]), pvalue=array([0.13656081]))" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculando os valores de t-Student e p-Value para a média = 38:\n", + "\n", + "x_barra = 38.0\n", + "st.ttest_1samp(sample,x_barra) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Isolando os resultados para comparação" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-1.49476118])" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t_student = st.ttest_1samp(sample,x_barra)[0]\n", + "t_student" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.06828041])" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p_value = st.ttest_1samp(sample,x_barra)[1]/2\n", + "p_value" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Valores críticos" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### t_student" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "34.06 <---> 38.53\n" + ] + } + ], + "source": [ + "# Abribuindo o intervalo de confiança às variáveis para os limites superior e inferior\n", + "\n", + "limite_inferior = st.norm.interval(0.95, loc=mean, scale=sigma/np.sqrt(n))[0]\n", + "limite_superior = st.norm.interval(0.95, loc=mean, scale=sigma/np.sqrt(n))[1]\n", + "print(\"%.2f\" % limite_inferior,'<--->', \"%.2f\" % limite_superior) " + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1.96 <---> 1.96\n" + ] + } + ], + "source": [ + "# Calculando t-Student crítico para os limites superior e inferior (com inversão pois t-student < 0)\n", + "\n", + "t_student_critico_superior = st.ttest_1samp(sample,limite_inferior)[0]\n", + "t_student_critico_inferior = st.ttest_1samp(sample,limite_superior)[0]\n", + "print(\"%.2f\" % t_student_critico_inferior,'<--->',\"%.2f\" % t_student_critico_superior)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ True])" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t_student_critico_inferior < t_student < t_student_critico_superior" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### p-value\n", + "\n", + "O valor de p-value tem que estaar entre o limite inferior de -0.025 e o limite superior de 0.05. Somando-se as duas extremidades (superior e interior, obtemos um limite de 0.05 para o p-value, ou seja, para valores maiores que 0.05 não rejeitamos a hipótese nula, e para valores menores que 0.05 rejeitamos a hipótese nula." + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ True])" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# O p-value tem que estar dentro da área normal que comporta a região central de 95% da área da distribuição\n", + "\n", + "p_value > 0.05" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2. Suponha que, em vez de definir um nível de significância de 0.05, é definido um nível de 0.1. O resultado poderia ter sido alterado?" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(34.42035527981483, 38.16665272159116)" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2. Significância 0.1:\n", + "\n", + "# Calculamos o intervalo de confiança de uma aproximação normal com o método de scipy\n", + "st.norm.interval(0.9, loc=mean, scale=sigma/np.sqrt(n))" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ttest_1sampResult(statistic=array([-1.49476118]), pvalue=array([0.13656081]))" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculando os valores de t-Student e p-Value para a média = 38:\n", + "\n", + "x_barra = 38.0\n", + "st.ttest_1samp(sample,x_barra) " + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-1.49476118])" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t_student = st.ttest_1samp(sample,x_barra)[0]\n", + "t_student" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "34.42 <---> 38.17\n" + ] + } + ], + "source": [ + "# Abribuindo o intervalo de confiança às variáveis para os limites superior e inferior\n", + "\n", + "limite_inferior = st.norm.interval(0.90, loc=mean, scale=sigma/np.sqrt(n))[0]\n", + "limite_superior = st.norm.interval(0.90, loc=mean, scale=sigma/np.sqrt(n))[1]\n", + "print(\"%.2f\" % limite_inferior,'<--->', \"%.2f\" % limite_superior) " + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1.64 <---> 1.64\n" + ] + } + ], + "source": [ + "# Calculando t-Student crítico para os limites superior e inferior (com inversão pois t-student < 0)\n", + "\n", + "t_student_critico_superior = st.ttest_1samp(sample,limite_inferior)[0]\n", + "t_student_critico_inferior = st.ttest_1samp(sample,limite_superior)[0]\n", + "print(\"%.2f\" % t_student_critico_inferior,'<--->',\"%.2f\" % t_student_critico_superior)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ True])" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Verificação t-Student\n", + "t_student_critico_inferior < t_student < t_student_critico_superior" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([6.31840899e-07])" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Verificação p-value\n", + "p_value = st.ttest_1samp(sample,x_barra)[1]/2\n", + "p_value" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False])" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# O p-value tem que estar dentro da área normal que comporta a região central de 95% da área da distribuição\n", + "\n", + "p_value > 0.05" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.3. E se a hipótese nula indicasse que a média é 42?" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ttest_1sampResult(statistic=array([-4.99845808]), pvalue=array([1.2636818e-06]))" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3. Hipótese nula indicando média 42:\n", + "\n", + "st.ttest_1samp(sample,42)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ttest_1sampResult(statistic=array([-4.99845808]), pvalue=array([1.2636818e-06]))" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculando os valores de t-Student e p-Value para a média = 42:\n", + "\n", + "x_barra = 42.0\n", + "st.ttest_1samp(sample,x_barra) " + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-4.99845808])" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t_student = st.ttest_1samp(sample,x_barra)[0]\n", + "t_student" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "34.06 <---> 38.53\n" + ] + } + ], + "source": [ + "# Abribuindo o intervalo de confiança às variáveis para os limites superior e inferior\n", + "\n", + "limite_inferior = st.norm.interval(0.95, loc=mean, scale=sigma/np.sqrt(n))[0]\n", + "limite_superior = st.norm.interval(0.95, loc=mean, scale=sigma/np.sqrt(n))[1]\n", + "print(\"%.2f\" % limite_inferior,'<--->', \"%.2f\" % limite_superior) " + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1.96 <---> 1.96\n" + ] + } + ], + "source": [ + "# Calculando t-Student crítico para os limites superior e inferior (com inversão pois t-student < 0)\n", + "\n", + "t_student_critico_superior = st.ttest_1samp(sample,limite_inferior)[0]\n", + "t_student_critico_inferior = st.ttest_1samp(sample,limite_superior)[0]\n", + "print(\"%.2f\" % t_student_critico_inferior,'<--->',\"%.2f\" % t_student_critico_superior)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False])" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Verificação t-Student\n", + "t_student_critico_inferior < t_student < t_student_critico_superior" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([6.31840899e-07])" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Verificação p-value\n", + "p_value = st.ttest_1samp(sample,x_barra)[1]/2\n", + "p_value" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([False])" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# O p-value tem que estar dentro da área normal que comporta a região central de 95% da área da distribuição\n", + "\n", + "p_value > 0.05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Viés !!\n", + "\n", + "Exemplo (1) Erros aleatórios e Sistematicos.\n", + "\n", + " Aleatórios: Eventos estocasticos.\n", + " Sistematicos: Viés!\n", + " \n", + "\n", + "\n", + "Exemplo (2) Viés de Seleção. Projeto para formação de desempregados. Quando compara-se a média com as pessoas que não participaram do projeto, não se remove todos os efeitos, como a motivação, e o efeito do programa parece muito maior que a realidade. Forma correta: Teste A/B" + ] + } + ], + "metadata": { + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, diff --git "a/1-analise-explorat\303\263ria-basica/07-inferencia2/Inferencia_2_AB_example.ipynb" "b/1-analise-explorat\303\263ria-basica/07-inferencia2/Inferencia_2_AB_example.ipynb" new file mode 100755 index 0000000..f44b4f9 --- /dev/null +++ "b/1-analise-explorat\303\263ria-basica/07-inferencia2/Inferencia_2_AB_example.ipynb" @@ -0,0 +1,341 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Teste A/B Bayesiano\n", + "\n", + "Para artigo original [clique aqui](http://www.marcosantoni.com/2016/05/15/bayesian-ab-testing-in-python.html)\n", + "\n", + "Imagine você reprojetando seu site de comércio eletrônico. Você tem que decidir se o botão \"Comprar Item\" deve ser azul ou verde. Você decide configurar um teste A / B para criar duas versões da página do item:\n", + "\n", + "- Página A que tem um botão azul;\n", + "- Página B que tem um botão verde.\n", + "\n", + "As páginas A e B são idênticas, exceto pela cor do botão. Você deseja quantificar a probabilidade de um usuário clicar no botão \"Comprar Item\" quando ela estiver na página A ou na página B. Assim, a experiência iniciará enviando cada usuário para a página A ou para a página B. Cada vez, você irá monitorar se ela clicou em \"Comprar Item\" ou não.\n", + "\n", + "### Frequentista vs Bayesiano\n", + "\n", + "Pode-se simplesmente aproximar a eficácia de cada página, calculando a taxa de sucesso nas duas páginas. Por exemplo. se N = 1000 usuários visitaram a página A e 50 deles clicaram no botão, pode-se dizer que a probabilidade de clicar no botão na página A é 50/1000 = 5%. Esta é a chamada abordagem freqüentista, que prevê a probabilidade em termos de freqüência de eventos. No entanto, os seguintes problemas podem surgir diariamente:\n", + "\n", + "- E se N for pequeno (por exemplo, N = 50)? Podemos ainda estar confiantes apenas calculando a taxa de sucesso?\n", + "- E se N for diferente entre a página A e a página B? Digamos que 500 usuários visitaram a página A e 2000 usuários visitaram a página B. Como podemos combinar esses experimentos desequilibrados?\n", + "- Quão grande deve ser para atingir 90% de confiança em minhas estimativas?\n", + "\n", + "Vamos agora introduzir uma solução Bayesiana simples que permite executar o teste A / B e lidar com os problemas listados acima. O código faz uso do pacote PyMC e foi inspirado pela leitura de \"Métodos bayesianos para hackers\", de Cameron Davidson-Pilon.\n", + "\n", + "### Avaliar a página A\n", + "\n", + "Primeiramente mostraremos como avaliar a taxa de sucesso na página A com uma abordagem bayesiana. O objetivo é inferir a probabilidade de clicar no botão \"Comprar Item\" na página A. Modelamos essa probabilidade como uma distribuição de Bernoulli com o parâmetro pA:\n", + "\n", + "$$ P (clique em | página = A) = p_A (click = 1) $$\n", + "$$ P (clique em | página = A) = 1-p_A (clique = 0) $$\n", + "\n", + "Então, pA\n", + "é o parâmetro que indica a probabilidade de clicar no botão na página A. Esse parâmetro é desconhecido e o objetivo do experimento é inferi-lo." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Click-BUY:\n", + "65\n", + "Observed frequency:\n", + "0.0433333333333\n" + ] + } + ], + "source": [ + "from pymc import Uniform, rbernoulli, Bernoulli, MCMC\n", + "from matplotlib import pyplot as plt\n", + "import numpy as np\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "# true value of p_A (unknown)\n", + "p_A_true = 0.05\n", + "# number of users visiting page A\n", + "N = 1500\n", + "occurrences = rbernoulli(p_A_true, N)\n", + "\n", + "print ('Click-BUY:')\n", + "print (occurrences.sum())\n", + "print ('Observed frequency:')\n", + "print (occurrences.sum() / float(N))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Neste código, estamos simulando uma realização do experimento em que 1.000 usuários visitaram a página A. Aqui, as ocorrências indicam quantos visitantes realmente clicaram no botão nessa realização.\n", + "\n", + "O próximo passo consiste em definir o nosso *prior* no parâmetro $p_A$. A definição prévia é o primeiro passo da inferência bayesiana e é uma maneira de indicar nossa crença anterior na variável." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "p_A = Uniform('p_A', lower=0, upper=1)\n", + "obs = Bernoulli('obs', p_A, value=occurrences, observed=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nesta seção, definimos o prior de $p_A$ como uma distribuição uniforme. A variável obs indica a distribuição de Bernoulli representando as observações dos eventos de clique (na verdade, regidos pelo parâmetro $p_A$). As duas variáveis são atribuídas a *Uniform* e *Bernoulli*, que são objetos de variáveis estocásticas, parte do PyMC. Cada variável é associada a um nome de string ($p_A$ e *obs* neste caso). A variável *obs* tem o valor e o conjunto de parâmetros observados porque observamos as realizações dos experimentos." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " [-----------------100%-----------------] 20000 of 20000 complete in 1.4 sec[ 0.04587361 0.04587361 0.03712558 ..., 0.05050032 0.05050032\n", + " 0.05050032]\n" + ] + } + ], + "source": [ + "# defining a Monte Carlo Markov Chain model\n", + "mcmc = MCMC([p_A, obs])\n", + "# setting the size of the simulations to 20k particles\n", + "mcmc.sample(20000, 1000)\n", + "# the resulting posterior distribution is stored in the trace variable\n", + "print (mcmc.trace('p_A')[:])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nesta seção, o modelo **MCMC** é inicializado e as variáveis $p_A$ e obs são dadas a ele como entrada. O modelo de amostra executará as simulações de Monte Carlo e ajustará os dados observados à crença anterior. A distribuição posterior é acessível através do atributo .trace como uma matriz de realizações. Podemos agora visualizar o resultado da inferência." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8, 7))\n", + "plt.hist(mcmc.trace('p_A')[:], bins=35, histtype='stepfilled',\n", + "normed=True)\n", + "plt.xlabel('Probability of clicking BUY')\n", + "plt.ylabel('Density')\n", + "plt.vlines(p_A_true, 0, 90, linestyle='--', label='True p_A')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Então, poderíamos querer responder à pergunta: onde tenho 90% de certeza de que o verdadeiro $p_A$ está? Isso é fácil de responder." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "There is 90% probability that p_A is between 0.0338879022919 and 0.0351232008052\n" + ] + } + ], + "source": [ + "p_A_samples = mcmc.trace('p_A')[:]\n", + "lower_bound = np.percentile(p_A_samples, 0.5)\n", + "upper_bound = np.percentile(p_A_samples, 0.95)\n", + "print ('There is 90%% probability that p_A is between %s and %s' % (lower_bound, upper_bound))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Comparando a página A e a página B\n", + "\n", + "Vamos agora repetir o que fizemos para a página A, e adicionamos uma nova variável delta indicando a diferença entre $p_A$ e $p_B$." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Observed frequency:\n", + "A\n", + "0.0553333333333\n", + "B\n", + "0.044\n", + " [-----------------100%-----------------] 25000 of 25000 complete in 3.1 sec" + ] + }, + { + "data": { + "image/png": "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duHCBebNm8fOnTs5fPgw4eHh/M///E+hdefNm0eDBg1ITU3lrbfeAqxFx5KTkzl48CALFizgypUrRdrcu3cvHTt2dOi1Xrhwgb1797J582ZmzpxZ6LnExESeeuoptm7dSnBwMABffvklH3/8Mfv372fWrFncunWLAwcOsGbNGg4cOMC+fft49dVXOXr0KLGxsfZTIx4+fJgffviB3NxckpKS7GfR+vHHH+nRowdHjhyha9euvPnmm/b2IyMjSz21ojs4uoPWADtExACvG2OWAc2MMecBjDHnRaSpu4JUqior7Rfb9erVK/X5xo0bu/QX3w888ACdOnUqc7mEhAROnTplv3/lyhWuX7+Ov7+//bE9e/Ywbdo0ACIiInj44YcBa1mSEydO0K1bNwBu3rxZZuVKgIULF7J161bAWlP+q6++IjKycDmY8+fP06RJkzK3BTBo0CBEhPDwcL777jv748eOHePJJ5/k448/5p577rE/PmDAAOrUqUPTpk1p1KgRFy9eJDExkV//+tfUq1fPvs2kpCTGjx/PwYMH+eGHH6hfvz6//OUvSUlJITExkVGjRgHWMtOPPvooAB07diyU3Js2bUpaWppDr8NVHE323Y0xGbaE/rGIfOFoAyIyEZgI0KpVqwqEqJRylYI15GvUqFGo5nzBaRhjDAcOHLDP8ZekuDryxhj69etXrp2QCQkJ7Nmzh/379+Pv7090dHShePL5+/vbHy8tfoC6desWiilfixYtyMrKIjU1lX79+hW7fM2aNcnNzS2xJn/dunVp0aIFb731Ft27d6d169bs3LmTc+fO0bp1a3Jzcwv1Xf72CsZa8IPTExyaxjHGZNiuLwCbgCjgexFpDmC7vlDCusuMMZHGmEhHP5GVUu5Xo0YNGjZsyOnTp8nLyys0r927d+9C89bFHWUTGxvLmjVrAOuO0/wzOnXr1o1PPvmEr7/+GrCeB/b06dOF1q1VyzrOzE+AP/74I40aNcLf35/jx49z8ODBYmN+6KGH7PXxS4u/NI0aNeL9999n2rRpZU6lxMbGsmnTJq5fv861a9fYsmWLfZomNjaWv/71r8TGxhITE8OSJUscnmL68ssvCQ0NdWhZVykz2YtIgIg0yL8N9AGOAVuBMbbFxgBbit9C5fH666/z+uuvezsMpSqNl19+mX79+hEXF0dQUJD98SVLlrB3717C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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pymc import Uniform, rbernoulli, Bernoulli, MCMC, deterministic\n", + "from matplotlib import pyplot as plt\n", + "\n", + "p_A_true = 0.05\n", + "p_B_true = 0.04\n", + "N_A = 1500\n", + "N_B = 750\n", + "\n", + "occurrences_A = rbernoulli(p_A_true, N_A)\n", + "occurrences_B = rbernoulli(p_B_true, N_B)\n", + "\n", + "print ('Observed frequency:')\n", + "print ('A')\n", + "print (occurrences_A.sum() / float(N_A))\n", + "print ('B')\n", + "print (occurrences_B.sum() / float(N_B))\n", + "\n", + "p_A = Uniform('p_A', lower=0, upper=1)\n", + "p_B = Uniform('p_B', lower=0, upper=1)\n", + "\n", + "@deterministic\n", + "def delta(p_A=p_A, p_B=p_B):\n", + " return p_A - p_B\n", + "\n", + "obs_A = Bernoulli('obs_A', p_A, value=occurrences_A, observed=True)\n", + "obs_B = Bernoulli('obs_B', p_B, value=occurrences_B, observed=True)\n", + "\n", + "mcmc = MCMC([p_A, p_B, obs_A, obs_B, delta])\n", + "mcmc.sample(25000, 5000)\n", + "\n", + "p_A_samples = mcmc.trace('p_A')[:]\n", + "p_B_samples = mcmc.trace('p_B')[:]\n", + "delta_samples = mcmc.trace('delta')[:]\n", + "\n", + "plt.subplot(3,1,1)\n", + "plt.xlim(0, 0.1)\n", + "plt.hist(p_A_samples, bins=35, histtype='stepfilled', normed=True,\n", + "color='blue', label='Posterior of p_A')\n", + "plt.vlines(p_A_true, 0, 90, linestyle='--', label='True p_A (unknown)')\n", + "plt.xlabel('Probability of clicking BUY via A')\n", + "plt.legend()\n", + "plt.subplot(3,1,2)\n", + "plt.xlim(0, 0.1)\n", + "plt.hist(p_B_samples, bins=35, histtype='stepfilled', normed=True,color='green', label='Posterior of p_B')\n", + "plt.vlines(p_B_true, 0, 90, linestyle='--', label='True p_B(unknown)')\n", + "plt.xlabel('Probability of clicking BUY via B')\n", + "plt.legend()\n", + "plt.subplot(3,1,3)\n", + "plt.xlim(0, 0.1)\n", + "plt.hist(delta_samples, bins=35, histtype='stepfilled', normed=True,color='red', label='Posterior of delta')\n", + "plt.vlines(p_A_true - p_B_true, 0, 90, linestyle='--', label='True delta (unknown)')\n", + "plt.xlabel('p_A - p_B')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Então, podemos responder a uma pergunta como: qual é a probabilidade de que $p_A$ > $p_B$?" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probability that p_A > p_B:\n", + "0.8746\n" + ] + } + ], + "source": [ + "print ('Probability that p_A > p_B:')\n", + "print ((delta_samples > 0).mean())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/1-analise-explorat\303\263ria-basica/07-inferencia2/aula.ipynb" "b/1-analise-explorat\303\263ria-basica/07-inferencia2/aula.ipynb" deleted file mode 100644 index 1679cc7..0000000 --- "a/1-analise-explorat\303\263ria-basica/07-inferencia2/aula.ipynb" +++ /dev/null @@ -1,107 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Inferência II" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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\n", - "text/html": [ - "\n", - " \n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# ** Paradoxo de Simpson e regressão linear multipla **\n", - "from IPython.lib.display import YouTubeVideo\n", - "YouTubeVideo('hO8NMIU20Ck')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Teste A/B\n", - "\n", - "Uma Regra: O B tem que ser o **contrafactual** do A. E o que é um contrafactual?\n", - "\n", - "Wikipedia: Em metafísica e em lógica modal contrafatual é a situação ou evento que não aconteceu, mas poderia ter acontecido. (A situação ou evento que aconteceu é chamada de atual.) Se diz que o evento contrafatual faz parte de um mundo possível, enquanto o evento atual faz parte do mundo real.\n", - "\n", - "Se vamos testar uma nova metodologia no juridico, no RH ou na Logistica, precisamos pensar em como controlar o experimento para que ele se torne aleatório (que resolve os problemas de viés)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git "a/1-analise-explorat\303\263ria-basica/07-inferencia2/bear.png" "b/1-analise-explorat\303\263ria-basica/07-inferencia2/bear.png" new file mode 100755 index 0000000..3207973 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/07-inferencia2/bear.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/07-inferencia2/inferencia_2.ipynb" "b/1-analise-explorat\303\263ria-basica/07-inferencia2/inferencia_2.ipynb" new file mode 100755 index 0000000..16ff37f --- /dev/null +++ "b/1-analise-explorat\303\263ria-basica/07-inferencia2/inferencia_2.ipynb" @@ -0,0 +1,912 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Inferência 2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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\n", + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ** Paradoxo de Simpson e regressão linear multipla **\n", + "from IPython.lib.display import YouTubeVideo\n", + "YouTubeVideo('hO8NMIU20Ck')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Paradoxo de Simpson\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "O paradoxo de Simpson (ou reversão de Simpson, efeito Yule-Simpson, paradoxo de amalgamação ou paradoxo de reversão) é um fenômeno em probabilidade e estatística, no qual uma tendência aparece em vários grupos diferentes de dados, mas desaparece ou reverte quando esses grupos são combinado.\n", + "\n", + "Este resultado é freqüentemente encontrado em estatísticas de ciências sociais e ciências médicas e é particularmente problemático quando dados de frequência são indevidamente dadas interpretações causais. Os elementos paradoxais desaparecem quando as relações causais são levadas em consideração. Ele tem sido usado para tentar informar o público não especialista ou público sobre o tipo de resultados enganosos que estatísticas erradas podem gerar. Martin Gardner escreveu um relato popular do paradoxo de Simpson em sua coluna de Jogos Matemáticos de março de 1976 na Scientific American.\n", + "\n", + "Edward H. Simpson descreveu esse fenômeno pela primeira vez em um artigo técnico em 1951, mas os estatísticos Karl Pearson et al., Em 1899, e Udny Yule, em 1903, mencionaram efeitos semelhantes anteriormente. O nome paradoxo de Simpson foi introduzido por Colin R. Blyth em 1972.\n", + "\n", + "## Exemplo: Tratamento de pedra nos rins\n", + "\n", + "Este é um exemplo da vida real de um estudo médico comparando as taxas de sucesso de dois tratamentos para cálculos renais.\n", + "\n", + "A tabela abaixo mostra as taxas de sucesso e o número de tratamentos para tratamentos envolvendo cálculos renais pequenos e grandes, onde o Tratamento A inclui todos os procedimentos cirúrgicos abertos e o Tratamento B é a nefrolitotomia percutânea (que envolve apenas uma pequena punção). Os números entre parênteses indicam o número de casos de sucesso sobre o tamanho total do grupo.\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "A conclusão paradoxal é que o tratamento A é mais eficaz quando usado em pedras pequenas, e também quando usado em pedras grandes, mas o tratamento B é mais eficaz quando se considera os dois tamanhos ao mesmo tempo. Neste exemplo, a variável \"à espreita\" (ou variável de confusão) é a gravidade do caso (representada pela tendência da decisão de tratamento dos médicos de favorecer B para casos menos graves), que não era previamente conhecida como importante até que seus efeitos fossem incluído.\n", + "\n", + "Qual tratamento é considerado melhor é determinado por uma desigualdade entre duas razões (sucessos / total). A inversão da desigualdade entre as razões, que cria o paradoxo de Simpson, acontece porque dois efeitos ocorrem juntos:\n", + "\n", + "Os tamanhos dos grupos, que são combinados quando a variável oculta é ignorada, são muito diferentes. Os médicos tendem a dar aos casos graves (pedras grandes) o melhor tratamento (A), e os casos mais leves (pedras pequenas) ao tratamento inferior (B). Portanto, os totais são dominados pelos grupos 3 e 2, e não pelos dois grupos muito menores 1 e 4.\n", + "\n", + "A variável oculta tem um grande efeito nas proporções; i.e., a taxa de sucesso é mais fortemente influenciada pela gravidade do caso do que pela escolha do tratamento. Portanto, o grupo de pacientes com cálculos grandes utilizando o tratamento A (grupo 3) piorou que o grupo com cálculos pequenos (grupos 1 e 2), mesmo se este último utilizou o tratamento inferior B (grupo 2).\n", + "\n", + "Com base nesses efeitos, o resultado paradoxal é visto pela supressão do efeito causal da gravidade do caso no tratamento bem-sucedido. O resultado paradoxal pode ser reformulado mais precisamente da seguinte forma: quando o tratamento menos eficaz (B) é aplicado com maior frequência a casos menos graves, pode parecer um tratamento mais eficaz.\n", + "\n", + "Vamos trabalhar com os dados para verificar a ocorrência do Paradoxo da Simpson" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
kidney_stone_sizetreatmentrecoverytotal
0Asmall8187
1Alarge192263
2Bsmall234270
3Blarge5580
\n", + "
" + ], + "text/plain": [ + " kidney_stone_size treatment recovery total\n", + "0 A small 81 87\n", + "1 A large 192 263\n", + "2 B small 234 270\n", + "3 B large 55 80" + ] + }, + "execution_count": 162, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame([['A','small', 81, 87],\n", + " ['A','large', 192, 263],\n", + " ['B','small', 234, 270],\n", + " ['B','large', 55, 80],], columns=['kidney_stone_size', 'treatment', 'recovery', 'total']) \n", + "df\n", + "#simpsons_paradox( df, 'recovery', 'total', 'treatment', 'kidney_stone_size' )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Total por tipo de tratamento\n", + "\n", + "Analisando os valores totais, podemos concluir que o tratamento B é mais bem sucedido que o tratamento A." + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAARUAAAETCAYAAAAYt5L/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAFsxJREFUeJzt3Xu4VXWdx/H3R9BQ8ZKChiEioAYkyAipYzOJYV5KqpEIKiefFGeevD025djlUWpqZCxlCjXvWpngpUyayDJUSg0BlVQgEkXsYJoYYl4OcOA7f6x1jtvD5uwFrrXX2YfP63nOw16Xvfb3cPmw1jq/9fsqIjAzy8t2ZRdgZl2LQ8XMcuVQMbNcOVTMLFcOFTPLlUPFzHLlULFOTVIPSSGpb9m1WDYOFdtikl6t+Noo6Y2K5U/XeO9xkpbVq1arv+5lF2CNJyJ6tr6W9AxwWkT8pryKrDPxmYrlTtKOki6X9BdJTZK+LWl7SXsCdwADKs5s9pR0pKSHJK2R9JykqZL8H16DcqhYEb4ODAMOBg4FjgLOi4iXgI8DT0dEz/TrJWA9cCawB/BPwInAaWUUbm+fQ8WK8GngwohYFREvAN8ETt7czhExLyLmR8SGiHgKuBb4QJ1qtZz5FNNyJUnAu4AVFatXAO/u4D1DgEuAfwB2JPl7+UCBZVqBfKZiuYrksffngf0qVvcDVrbuUuVt1wCPAAMjYlfgG4CKrNOK41CxIkwHLkxvwu4FfBW4Kd32ArCXpJ4V++8CrImIVyUNBSbVt1zLk0PFinABsBhYBCwkuZS5ON32B2AmsELSy5L2AM4FTpP0KnA5cEv9S7a8yJM0mVmefKZiZrlyqJhZrhwqZpYrh4qZ5arhBr/16tUr+vfvX3YZZtuchx9+eFVE9K61X8OFSv/+/VmwYEHZZZhtcyStqL2XL3/MMrnrrrs46KCDGDRoEFOmTNlk+7PPPsvo0aMZMWIEw4YNY9asWQDMmzePQw45hEMOOYThw4dzxx131Lv0+ouIhvo69NBDw6yeWlpaYsCAAfHUU0/F2rVrY9iwYbFo0aK37DNp0qS44oorIiJi0aJFsd9++0VExGuvvRbr16+PiIjnnnsuevfu3bbcaIAFkeHfqM9UzGqYN28egwYNYsCAAeywww5MmDCBO++88y37SOKVV14BYM2aNeyzzz4A7LTTTnTvntxlaG5uJnnesmtzqJjVsHLlSvbdd9+25b59+7Jy5cq37DN58mRuuukm+vbtywknnMC0adPatj300EMMHTqUgw8+mCuvvLItZLoqh4pZDVHlUZb2ZxzTp0/nlFNOoampiVmzZnHyySezceNGAA477DAWLVrE/Pnzueiii2hubq5L3WVxqJjV0LdvX/785z+3LTc1NbVd3rS67rrrGD9+PABHHHEEzc3NrFq16i37DB48mJ133pknnnii+KJL5FAxq2HUqFE8+eSTLF++nHXr1jFjxgzGjh37ln369evH7NmzAViyZAnNzc307t2b5cuX09LSAsCKFStYunQpXX2cVde+uDPLQffu3bnssss49thj2bBhA5/73OcYOnQoF1xwASNHjmTs2LFccsklTJo0ialTpyKJG2+8EUncf//9TJkyhe23357tttuOK664gl69epX9LRWq4aY+GDlyZHjwm1n9SXo4IkbW2s9nKta1Td6t7AqKM3lN2RVU5XsqZpYrh0qd1Brmfe6557YN5z7wwAPZfffd27add955DB06lMGDB3P22WdX/RGnWWdR6OWPpOOA7wLdgGsjYkq77f2AHwC7p/ucHxGziqypDBs2bOCMM87g7rvvpm/fvowaNYqxY8cyZMiQtn2mTp3a9nratGk8+uijADz44IM88MADPPbYYwC8//3vZ86cORx11FF1/R7MsirsTEVSN5JJjI8HhgAT0/4ulb4G3BoRI4AJwBVF1VOmLMO8K02fPp2JEycCySCr5uZm1q1bx9q1a1m/fj177713vUo322JFXv68D1gWEU9HxDpgBvDRdvsEsGv6ejfguQLrKU2WYd6tVqxYwfLlyzn66KOBZCDV6NGj6dOnD3369OHYY49l8ODBdanbbGsUGSrvBv5csdzEpl3qJgOfkdQEzALOqnYgSadLWiBpwYsvvlhErYXKMsy71YwZMxg3bhzdunUDYNmyZSxZsoSmpiZWrlzJPffcw29/+9tC6zV7O4oMlWr/atr/65oI3BgRfYETgB9J2qSmiLg6IkZGxMjevWtOPNXpZBnm3WrGjBltlz4Ad9xxB4cffjg9e/akZ8+eHH/88cydO7fwms22VpGh0gTsW7Hcl00vb04FbgWIiN8DPYAuN9wwyzBvgKVLl7J69WqOOOKItnX9+vVjzpw5tLS0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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_stone_size = df.groupby('kidney_stone_size').sum()\n", + "df_stone_size['rate'] = df_stone_size.recovery/df_stone_size.total\n", + "\n", + "list = df_stone_size['rate'].tolist()\n", + "rounded_list = [round(elem, 2) for elem in list]\n", + "\n", + "plt.figure(figsize=(4,4))\n", + "ax = df_stone_size['rate'].plot(kind='bar')\n", + "ax.set_title('Total')\n", + "ax.set_xlabel('Tratment Type')\n", + "ax.set_ylabel('Sucess Rate')\n", + "\n", + "rects = ax.patches\n", + "\n", + "# Make some labels.\n", + "labels = [rounded_list[i] for i in range(len(rounded_list))]\n", + "for rect, label in zip(rects, labels):\n", + " height = rect.get_height()\n", + " ax.text(rect.get_x() + rect.get_width()/2, height, label,\n", + " ha='center', va='bottom')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parciais por tipo de tamanho da pedra (Large & Small)\n", + "\n", + "Por outro lado, analisando as parciais para os tipos de tamanho de pedra, constatamos que o tratamento A é mais bem sucedido que o tratamento B." + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_large = df[df.treatment == 'large']\n", + "df_large = df_large.set_index('kidney_stone_size')\n", + "df_large['rate'] = df_large.recovery/df_large.total\n", + "\n", + "list = df_large['rate'].tolist()\n", + "rounded_list = [round(elem, 2) for elem in list]\n", + "\n", + "plt.figure(figsize=(4,4))\n", + "ax = df_large['rate'].plot(kind='bar')\n", + "ax.set_title('Large')\n", + "ax.set_xlabel('Large')\n", + "ax.set_ylabel('Sucess Rate')\n", + "\n", + "rects = ax.patches\n", + "\n", + "# Make some labels.\n", + "labels = [rounded_list[i] for i in range(len(rounded_list))]\n", + "for rect, label in zip(rects, labels):\n", + " height = rect.get_height()\n", + " ax.text(rect.get_x() + rect.get_width()/2, height, label,\n", + " ha='center', va='bottom')\n", + " \n", + "df_small = df[df.treatment == 'small']\n", + "df_small = df_small.set_index('kidney_stone_size')\n", + "df_small['rate'] = df_small.recovery/df_small.total\n", + "\n", + "list = df_small['rate'].tolist()\n", + "rounded_list = [round(elem, 2) for elem in list]\n", + "\n", + "plt.figure(figsize=(4,4))\n", + "ax = df_small['rate'].plot(kind='bar')\n", + "ax.set_title('Small')\n", + "ax.set_xlabel('Small')\n", + "ax.set_ylabel('Sucess Rate')\n", + "\n", + "rects = ax.patches\n", + "\n", + "# Make some labels.\n", + "labels = [rounded_list[i] for i in range(len(rounded_list))]\n", + "for rect, label in zip(rects, labels):\n", + " height = rect.get_height()\n", + " ax.text(rect.get_x() + rect.get_width()/2, height, label,\n", + " ha='center', va='bottom')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Modelo para detecção do Paradoxo de Simpson, para o tratamento de pedras nos rins" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "## Global rates: \n", + "treatment\n", + "A 0.780000\n", + "B 0.825714\n", + "dtype: float64\n", + "## Local rates:\n", + "treatment A B\n", + "kidney_stone_size \n", + "large 0.730038 0.687500\n", + "small 0.931034 0.866667\n", + "## Global optimal: B\n", + "## Local optimal: A\n", + "## Simpsons Paradox detected.\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 205, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# detect simpson's paradox\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "\n", + "def aggregate_data(df, conversion_col, treatment_col, segment_col):\n", + " \"\"\"\n", + " takes table of individual level data and aggregates it for simpsons paradox detection.\n", + " conversion_col is 1 if success, 0 else. \n", + " ex:\n", + " pd.DataFrame([\n", + " ['small', 'A', 1],\n", + " ['small', 'B', 0],\n", + " ['large', 'A', 1],\n", + " ['small', 'A', 1],\n", + " ['large', 'B', 0],\n", + " ['large', 'B', 0],\n", + " ], columns=['kidney_stone_size', 'treatment', 'recovery']) \n", + " \"\"\"\n", + " df_ = df[[conversion_col, treatment_col, segment_col]]\n", + " gb = df_.groupby([segment_col, treatment_col]).agg(\n", + " [np.sum, lambda x: len(x)])\n", + " gb.columns = [conversion_col, \"total\"]\n", + "\n", + " return gb.reset_index()\n", + "\n", + "\n", + "def simpsons_paradox(df, conversion_col, total_col, treatment_col, segment_col):\n", + " \"\"\"\n", + " given a dataframe like:\n", + " pd.DataFrame([\n", + " ['small', 'A', 81, 87],\n", + " ['small', 'B', 234, 270],\n", + " ['large', 'A', 192, 263],\n", + " ['large', 'B', 55, 80],\n", + " ], columns=['kidney_stone_size', 'treatment', 'recovery', 'total']) \n", + " will determine if simpsons paradox exists. Non Bayesian!\n", + " > simpsons_paradox( df, 'recovery', 'total', 'treatment', 'kidney_stone_size' ) \n", + " \"\"\"\n", + "\n", + " # find global optimal:\n", + " gbs = df.groupby(treatment_col).sum()\n", + " print (\"## Global rates: \")\n", + " print (gbs[conversion_col] / gbs[total_col])\n", + " print\n", + " global_optimal = (gbs[conversion_col] / gbs[total_col]).argmax()\n", + "\n", + " # check optimal via segments\n", + " df_ = df.set_index([segment_col, treatment_col])\n", + " rates = (df_[conversion_col] / df_[total_col]).unstack(-1)\n", + " print (\"## Local rates:\")\n", + " print (rates)\n", + " print\n", + " # find the local optimals\n", + " local_optimals = rates.apply(lambda x: x.argmax(), 1)\n", + "\n", + " if local_optimals.unique().shape[0] > 1:\n", + " print (\"## Simpsons paradox not detected.\")\n", + " print (\"## Segmented rates do not have a consistent optimal choice\")\n", + " print (\"## Local optimals:\")\n", + " print (local_optimals)\n", + " print (\"## Global optimal: \", global_optimal)\n", + " return False\n", + "\n", + " local_optimal = local_optimals.unique()[0]\n", + "\n", + " print (\"## Global optimal: \", global_optimal)\n", + " print (\"## Local optimal: \", local_optimal)\n", + " if local_optimal != global_optimal:\n", + " print (\"## Simpsons Paradox detected.\")\n", + " return True\n", + "\n", + " else:\n", + " print (\"## Simpsons paradox not detected.\")\n", + " return False\n", + "\n", + "\n", + "if __name__ == \"__main__\":\n", + " # create some data, indentical to the data at\n", + " # http://en.wikipedia.org/wiki/Simpsons_paradox\n", + " d = []\n", + " d += ([('A', 'small', 1)] * 81)\n", + " d += ([('A', 'small', 0)] * (87 - 81))\n", + " d += ([('B', 'small', 0)] * (270 - 234))\n", + " d += ([('B', 'small', 1)] * (234))\n", + " d += ([('B', 'large', 1)] * (55))\n", + " d += ([('B', 'large', 0)] * (80 - 55))\n", + " d += ([('A', 'large', 0)] * (263 - 192))\n", + " d += ([('A', 'large', 1)] * (192))\n", + "\n", + " df = pd.DataFrame(\n", + " d, columns=['treatment', 'kidney_stone_size', 'recovery'])\n", + " gb = aggregate_data(df, 'recovery', 'treatment', 'kidney_stone_size')\n", + "simpsons_paradox(gb, 'recovery', 'total', 'treatment', 'kidney_stone_size')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Teste Bayesiano A / B com Python\n", + "\n", + "O teste A/B já é muito conhecido entre as pessoas que trabalham com dados e utilizam ferramentas no processo de tomada de decisão. \n", + "\n", + "Vamos realizar um experimento aleatório para conversão de usuários de uma *landing page*, onde temos que decidir entre uma llama (**alpaca**) ou um urso (**bear**) para obter o melhor resultado na conversão de usuários.\n", + "\n", + "Para o artigo original [clique aqui](https://medium.com/hockey-stick/tl-dr-bayesian-a-b-testing-with-python-c495d375db4d).\n", + "\n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A distribuição BETA\n", + "\n", + "A idéia geral por trás do teste de taxa de conversão bayesiana é gerar duas distribuições que cobrem todas as taxas possíveis e atualizá-las com informações sobre o desempenho do teste e ajustar nossa expectativa da taxa mais representativa de acordo.\n", + "\n", + "Podemos representar isso aqui com uma distribuição Beta que possui dois parâmetros: α, que representa as conversões bem-sucedidas e β, que representa as pessoas que saíram sem converter.\n", + "\n", + "Os gráficos a seguir representam duas distribuições sendo a primeira com 16 conversões de um total de 100 cliques, e a segunda com 8 conversões de um total de 50 cliques, sendo que esta última será adotada como dados verdadeiros para o problema, além da simulação." + ] + }, + { + "cell_type": "code", + "execution_count": 486, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# For our graph\n", + "fig, ax = plt.subplots(1, 1)\n", + "\n", + "# Generate and plot the distributions!\n", + "c_distribution = beta(16, 100-16)\n", + "e_distribution = beta(8, 50-8)\n", + "\n", + "ax.plot(x, c_distribution.pdf(x),label='distribuição Beta 16/100')\n", + "ax.plot(x, e_distribution.pdf(x),label='distribuição Beta 8/50')\n", + "\n", + "ax.set(xlabel='conversion rate', ylabel='density')\n", + "\n", + "ax.legend(loc='best', frameon=False)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Início do experimento A / B\n", + "\n", + "A hipótese nula portanto será de que os ursos performam melhor que as alpacas, e com isso precisamos verificar se esta melhora é estatísticamente relevante para um grau de significância de 95% (p-value <0.5).\n", + "\n", + "Vamos assumir para a nossa simulação que a taxa de conversão do grupo de controle (alpacas) é de 16%, e que o grupo do experimento (ursos) performam 10% melhor.\n", + "\n", + "Esta modelagem será feita inicialmente gerando um pequeno número de resultados aleatórios entre 0 e 1 (tamanho da amostra de 50), depois depois .\n", + "\n", + "O corte representa nossa taxa de conversão real e os *outputs* são os resultados das taxas de sucesso de controle (alpacas) e experimento (urso). Além disso, vamos adicionar dados reais de que anteriormente foram obtidos 8 sucessos em conversão e 42 fracassos, de um total de 50 cliques." + ] + }, + { + "cell_type": "code", + "execution_count": 487, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "taxa de sucesso do controle = 0.2 taxa de sucesso do experimento = 0.16\n" + ] + } + ], + "source": [ + "from scipy.stats import beta\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "people_in_branch = 50\n", + "\n", + "# Control is Alpaca, Experiment is Bear\n", + "control, experiment = np.random.rand(2, people_in_branch)\n", + "\n", + "c_rate = 0.16\n", + "g_factor = 1.1\n", + "e_rate = c_rate * g_factor # A TAXA DE CONVERSÃO DO GRUPO EXPERIMENTO É DE 0.176\n", + "\n", + "c_successes = sum(control < c_rate)\n", + "\n", + "# Bears are about 15% better relative to Alpacas\n", + "e_successes = sum(experiment < e_rate)\n", + "\n", + "c_failures = people_in_branch - c_successes\n", + "e_failures = people_in_branch - e_successes\n", + "\n", + "c_true_rate = c_successes/people_in_branch\n", + "e_true_rate = e_successes/people_in_branch\n", + "\n", + "print('taxa de sucesso do controle =',c_true_rate,'taxa de sucesso do experimento =',e_true_rate)\n", + "\n", + "# Our Priors\n", + "prior_successes = 8\n", + "prior_failures = 42" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dados iniciais\n", + "\n", + "Após gerar dados aleatórios sobre a os totais de cliques em cada uma das opções (alpacas ou ursos), podemos concluir que estão seguindo premissas inicias que os ursos performam 10% melhor do que as alpacas.\n", + "\n", + "Vamos dar uma olhada nos resultados da nossa experiência. A primeira coisa que fazemos é pegar nossa pequena quantidade de dados iniciais e adicionar os resultados prévios aos dois ramos (alpacas e ursos). Depois disso, geramos as distribuições posteriores e fazemos alguns gráficos dos resultados." + ] + }, + { + "cell_type": "code", + "execution_count": 488, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# For our graph\n", + "fig, ax = plt.subplots(1, 1,figsize=(12,6)) \n", + "\n", + "# Control\n", + "c_alpha, c_beta = c_successes + prior_successes, c_failures + prior_failures\n", + "# Experiment\n", + "e_alpha, e_beta = e_successes + prior_successes, e_failures + prior_failures\n", + "\n", + "x = np.linspace(0., 0.5, 1000) \n", + "\n", + "# Generate and plot the distributions!\n", + "c_distribution = beta(c_alpha, c_beta)\n", + "e_distribution = beta(e_alpha, e_beta)\n", + "\n", + "ax.plot(x, c_distribution.pdf(x),label='control(Alpacas)')\n", + "ax.plot(x, e_distribution.pdf(x),label='experiment(Bears)')\n", + "\n", + "ax.set(xlabel='conversion rate', ylabel='density')\n", + "ax.legend(loc='best', frameon=False)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Através dos resultados do gráfico acima, podemos ver uma diferença entre os dois ramos, mas eles se sobrepõem tanto que é difícil dizer qual é o verdadeiro vencedor. (Nota: Eles poderiam separar aleatoriamente aqui, mas isso ainda seria um resultado fraco devido ao baixo tamanho da amostra).\n", + "\n", + "Portanto, vamos aumentar o tamanho da amostragem de dados para 4000 e verificar os resultados." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dados com tamanho da amostra de 4000 observações" + ] + }, + { + "cell_type": "code", + "execution_count": 489, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "taxa de sucesso do controle = 0.15975 taxa de sucesso do experimento = 0.18125\n" + ] + } + ], + "source": [ + "more_people_in_branch = 4000\n", + "\n", + "# Control is Alpaca, Experiment is Bear\n", + "control, experiment = np.random.rand(2, more_people_in_branch)\n", + "\n", + "# Add to existing data\n", + "c_successes += sum(control < c_rate)\n", + "e_successes += sum(experiment < e_rate)\n", + "\n", + "c_failures += more_people_in_branch - sum(control < c_rate)\n", + "e_failures += more_people_in_branch - sum(experiment < e_rate)\n", + "\n", + "c_true_rate = c_successes/more_people_in_branch\n", + "e_true_rate = e_successes/more_people_in_branch\n", + "\n", + "print('taxa de sucesso do controle =',c_true_rate,'taxa de sucesso do experimento =',e_true_rate)" + ] + }, + { + "cell_type": "code", + "execution_count": 490, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtEAAAF3CAYAAABjZBdpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XmcnFWd7/Hvr6q6ek86SydEDAaZKGRHmi1gQHNBHNl0goIsYVQYddCRuaOgeJVhdEREHZ07MwyjCCpCFEbl4rgBIgYRCBIx7ARCWELSWXqt6q6lz/3jqaruJL1UddWpru76vF+vvKrrqaeec5oinW9++T3nmHNOAAAAAPIXmugJAAAAAJMNIRoAAAAoECEaAAAAKBAhGgAAACgQIRoAAAAoECEaAAAAKBAhGgAAACgQIRoAAAAoECEaAAAAKBAhGgAAAChQZKInkI/Zs2e7BQsWTPQ0AAAAMIU98sgjO51zrfmcOylC9IIFC7Rhw4aJngYAAACmMDN7Md9zaecAAAAACkSIBgAAAApEiAYAAAAKRIgGAAAACkSIBgAAAApEiAYAAAAKRIgGAAAACkSIBgAAmIS2bNmiH/zgB+N635IlS3LPH330UX3oQx/a65wzzjhDxx577F7HrrzySl177bXjm2wJ3Hnnnfr85z8/YePvixANAAAwCY0WolOpVN7X+ed//md97GMfyz3v6OjQH//4R3V0dOiFF14oep6l8q53vUt33HGHYrHYRE9FkscQbWZvNrONQ351mdknzGymmf3azJ7NPM7wNQcAAIBK9d3vflfLli3T8uXLdf755+vFF1/U6tWrtWzZMq1evVpbt26VJF144YX6+Mc/rpUrV+qNb3yjbrvtNknS5Zdfrt/97ndasWKFvv71r+vGG2/UWWedpdNOO00nn3yynHP65Cc/qSVLlmjp0qVat27dfnPo7u7WY489puXLl+eO3X777TrttNN09tln69Zbbx127ieeeKI+8YlPaOXKlVqyZIkeeughSdJDDz2klStX6vDDD9fKlSv19NNPS5LS6bT+4R/+QUuXLtWyZcv0r//6r5Kkq666SkceeaSWLFmiiy++WM45SdI3v/lNLVq0SMuWLdPZZ58tSTIznXjiibrzzjtL8Z+/aN62/XbOPS1phSSZWVjSK5J+LOlySXc75642s8szzy/zNQ8AAIDR/OP/e1xPvNpV0msuet00ff60xSO+/vjjj+uLX/yi7r//fs2ePVu7d+/W2rVrdcEFF2jt2rW64YYb9PGPf1w/+clPJEnbtm3T+vXr9dRTT+n000/XmjVrdPXVV+vaa6/Nhcobb7xRDzzwgB577DHNnDlTt99+uzZu3Kg//elP2rlzp4488kitWrVqr3ls2LBhr9YOSbrlllv0+c9/XnPnztWaNWv06U9/etjvobe3V7///e9133336QMf+IA2bdqkQw89VPfdd58ikYjuuusufeYzn9Htt9+u66+/Xi+88IIeffRRRSIR7d69W5J0ySWX6HOf+5wk6fzzz9edd96p0047TVdffbVeeOEF1dbWqqOjIzdmW1ubfve73+m9731vgZ9I6ZWrnWO1pM3OuRclnSHppszxmySdWaY5AMhTIjWgVzriEz0NAJiy7rnnHq1Zs0azZ8+WJM2cOVMPPPCA3v/+90sKAuX69etz55955pkKhUJatGiRtm/fPuJ1TzrpJM2cOVOStH79ep1zzjkKh8OaO3euTjjhBD388MN7nb9t2za1trbmnm/fvl3PPfecjj/+eL3pTW9SJBLRpk2bhh3rnHPOkSStWrVKXV1d6ujoUGdnp8466ywtWbJEl156qR5//HFJ0l133aUPf/jDikQiue9Xkn7zm9/o6KOP1tKlS3XPPffkzl+2bJnOPfdcff/738+9R5LmzJmjV199daz/vGXhrRK9j7Ml3ZL5eq5zbpskOee2mdmcMs0BQJ7O/dYf9PCWPXroitWa01w30dMBAK9Gqxj74pyTmY16ztDXa2tr93rvSBobG/M6L6u+vl59fX255+vWrdOePXt08MEHS5K6urp066236gtf+MKo88s+/z//5//obW97m3784x9ry5YtOvHEE3Nz2ff8vr4+ffSjH9WGDRs0f/58XXnllbm5/OxnP9N9992nO+64Q//0T/+kxx9/XJFIRH19faqvrx/z+yoH75VoM4tKOl3Sjwp838VmtsHMNrS3t/uZHID9bG7v0cNb9kiSvv+HrRM8GwCYmlavXq0f/vCH2rVrlyRp9+7dWrlyZa4H+eabb9bxxx8/6jWam5vV3d094uurVq3SunXrlE6n1d7ervvuu09HHXXUXuccdthheu6553LPb7nlFv3iF7/Qli1btGXLFj3yyCMj9kVne6zXr1+v6dOna/r06ers7NSBBx4oKWgvyTr55JN13XXX5W543L17dy4wz549Wz09Pble74GBAb300kt629vepmuuuUYdHR3q6emRJD3zzDP7tZ9MlHJUot8p6Y/Ouey/PWw3s3mZKvQ8STuGe5Nz7npJ10tSW1vb2H+VAlASm17plCSFTPrTSx1jnA0AGI/Fixfriiuu0AknnKBwOKzDDz9c3/zmN/WBD3xAX/nKV9Ta2qrvfOc7o15j2bJlikQiWr58uS688ELNmLH3Wg3vfve79cADD2j58uUyM11zzTU64IADtGXLltw5hx56qDo7O9Xd3a1du3Zp69atOuaYY3KvH3zwwZo2bZoefPDB/cafMWOGVq5cqa6uLt1www2SpE996lNau3atvva1r+ntb3977twPfehDeuaZZ7Rs2TLV1NTooosu0iWXXKKLLrpIS5cu1YIFC3TkkUdKCm5CPO+889TZ2SnnnC699FK1tLRICto/vvSlLxX2H9sTy6fUX9QAZrdK+qVz7juZ51+RtGvIjYUznXOfGu0abW1tbsOGDV7nCSDwpZ8/qRvWv6B3LD5AG7bs0R8+s3qipwQA8OjrX/+6mpub91srejQnnniirr32WrW1tXmc2d62b9+u97///br77ru9jWFmjzjn8vqmvLZzmFmDpJMk/feQw1dLOsnMns28drXPOQAozFPbuvUXc5q15MDpeq2rT52x5ERPCQDg0Uc+8pG9eq4r1datW/XVr351oqeR47WdwzkXkzRrn2O7FKzWAaACvbQnpsMOmKa/aG2SJL2wq1crGlomeFYAAF/q6up0/vnnF/See++9189kRpFt96gU7FgIIMc5p9c6+3TA9DodMD1YleO1zr4x3gUAQPUhRAPI6epLKZZIa970Os3LhWjWiwYAYF+EaAA52arzAdPrNLMxqmg4pG1dVKIBANgXIRpAzrZM1Xne9DqZmeZOr9V22jkAANgPIRpAzvZM1XnutKCVY960em0jRAPApHfdddfpu9/9rtcxfvKTn+iJJ57Y69gnPvEJ3XfffZKCZfHe/OY3a8WKFTrssMN0/fXXe53Pn//8Z1144YXerk+IBpCzqzchSZrVGCx1NLs5mjsGAJicUqmUPvzhD+uCCy7wOs6+IXr37t36wx/+oFWrVuWO3Xzzzdq4caPuv/9+XXbZZUokiv8zJrsL4r6WLl2ql19+WVu3+tl9lxANIGdPb0L1NWHVR8OSpBkNUe0hRAOAF9///vd11FFHacWKFfqbv/kbvfjii1q4cKF27typgYEBvfWtb9WvfvUrbdmyRYceeqjWrl2rZcuWac2aNYrFYpKkRx55RCeccIKOOOIIveMd79C2bdskBVXfz3zmMzrhhBP0jW98Q1deeaWuvfba3GuXXnqpVq1apcMOO0wPP/yw3vOe92jhwoX67Gc/O+L80um0JKmpqUlXXHGFli9frmOOOUbbt2/X73//e91xxx365Cc/qRUrVmjz5s267bbbdMoppwz7vff09KixsVHhcPDnza9+9Ssde+yxestb3qKzzjort833VVddpSOPPFJLlizRxRdfrOwmgft+fz/60Y+0ZMkSLV++fK/Qftppp424bXmxyrHtN4BJYldvQjMbo7nnMxuj2hNLaGDAKRSyCZwZAHj088ul1/5c2msesFR658j7yT355JNat26d7r//ftXU1OijH/2ofvvb3+qyyy7Thz/8YR199NFatGiRTj75ZG3ZskVPP/20vv3tb+u4447TBz7wAf37v/+7/u7v/k4f+9jH9NOf/lStra1at26drrjiitwW3B0dHfrtb38rSbryyiv3Gj8ajeq+++7TN77xDZ1xxhl65JFHNHPmTB1yyCG69NJLtWPHjv3md/PNN+uCCy5Qb2+vjjnmGH3xi1/Upz71Kf3Xf/2XPvvZz+r000/XqaeeqjVr1kgKAnD266xzzz1XtbW1evbZZ/Uv//IvCofD2rlzp77whS/orrvuUmNjo7785S/ra1/7mj73uc/pkksu0ec+9zlJ0vnnn68777xTp5122n7f39KlS/XLX/5SBx54oDo6OnLjtbW16eqrr9anPjXq5tjjQogGkLN7mBA94KTOeFIzhhwviURM+slHpMXvlhafWdprA0CFu/vuu/XII4/kNhCJx+OaM2eOrrzySv3oRz/Sddddp40bN+bOnz9/vo477jhJ0nnnnadvfvObOuWUU7Rp0yaddNJJkqR0Oq158+bl3vO+971vxPFPP/10SUH4XLx4ce59b3zjG/XSSy9p/fr1w85PCgL4qaeeKkk64ogj9Otf/3rYMbZt26bW1ta9jt18881qa2tTe3u7Vq5cqVNOOUV//vOf9cQTT+S+v0QioWOPPVaS9Jvf/EbXXHONYrGYdu/ercWLF+dC9NDv77jjjtOFF16o9773vXrPe96TOz5nzhy9+uqrI/53KAYhGkDOnmFCtCTtjiVKH6LXf1164ifBrze9JtXUl/b6AJCvUSrGvjjntHbtWn3pS1/a63gsFtPLL78sKWh5aG5uliSZ7f2vgWYm55wWL16sBx54YNgxGhsbRxw/u813KBTaa8vvUCikVCo14vwkqaamJjefcDg8Yk9yfX29+vqGvzm9tbVVb3nLW/Tggw+qvr5eJ510km655Za9zunr69NHP/pRbdiwQfPnz9eVV1651/WGfn/XXXedHnzwQf3sZz/TihUrtHHjRs2aNUt9fX2qr/fz5ws90QBy9m3nmNGQCdE++qKfv3fw61ceKf31AaCCrV69Wrfddpt27NghKbgJ78UXX9Rll12mc889V1dddZUuuuii3Plbt27NheVbbrlFxx9/vN785jervb09dzyZTOrxxx/3Or/RNDc3q7u7O/f8sMMO03PPPTfsubFYTI8++qgOOeQQHXPMMbr//vtz58ZiMT3zzDO5wDx79mz19PTotttuG3HszZs36+ijj9ZVV12l2bNn66WXXpIkPfPMM1qyZEn+33gBCNEAcvb0JnLBWRpSiS51iE71S9s2Sssy/xS37U+lvT4AVLhFixbpC1/4gk4++WQtW7ZMJ510krZs2aKHH344F6Sj0ai+853vSAoC6U033aRly5Zp9+7d+shHPqJoNKrbbrtNl112mZYvX64VK1bo97//vbf5ZW9aHMnZZ5+tr3zlKzr88MO1efNmvetd79K999671znnnnuuVqxYoSOOOEIXXnihjjjiCLW2turGG2/UOeeco2XLlumYY47RU089pZaWFl100UVaunSpzjzzzFxryXA++clPaunSpVqyZIlWrVql5cuXSwraQd71rncV/d9jOJa9y7GStbW1uQ0bNkz0NIApLZke0MIrfq6/P+lN+vjqhZKkVzriOu7qe3T1e5bq7KMOKt1gr26Urj9BWvMd6ZefkQ4+QXrPf5bu+gAwhWzZskWnnnqqNm3aNNFTKdjxxx+vO++8Uy0tLWUfu7+/XyeccILWr1+vSCS/DmYze8Q515bPuVSiAUiSuvuCnrbmusEfNNMyX2dfK5k9W4LHWX8hzV0stT9Z2usDACrCV7/6VW/rNI9l69atuvrqq/MO0IXixkIAkqTuvqQkqbmuJnesMRqR2eBrJdOR6aub8Qap5SDplT+W9voAMIUsWLBgUlahJenoo4+esLEXLlyohQsXers+lWgAkoavRIdCpqbaiLp8VKLrZ0h106Xp86X4bqm/p7RjAADgESEagCSpK1eJ3vsfqKbV1eReK5k9L0ozFgRft2R6rTtfKu0YAAB4RIgGIGmwEj1tSDuHFITqkvdEd70iTTsw+Hr6/OCxgxANAJg8CNEAJA3fziEFobrkPdE926XmA4Kvp2fCdNcrpR0DAACPCNEAJA1/Y2HwvMSV6FS/FN8jNc0NnjcG28iqt710YwAA4BkhGoAkqWeESnTJQ3Q2LGdDdCQq1bVIPTtKNwYAAJ4RogFIkrr7U6qrCakmvPePheZSt3P0bA8esyFakprmDB4HAGASIEQDkBS0c+zbyiENVqJLtrtpdzZEzxk81jiHdg4AwKRCiAYgSerqS+3XyiEFlejUgFM8mS7NQL2Zto3G1sFjTa20cwAAJhVCNABJweoczbXDhegSb/0d3xM8NswcPNY0l0o0AGBSIUQDkDRyO8e0+prc6yUR75DCUammYfBYwyypv0tKl3gpPQAAPCFEA5CUqUQP284RHCvZ1t/xPcFqHGaDx+paMq91lGYMAAA8I0QDkJStRO8foqeVup2jr0Oqn7H3sfqWwdcAAJgECNEAJGUr0cOtzlHqdo49g6E5KxuqqUQDACYJQjQApdIDiiXSo7ZzlO7GwmEq0bl2jj2lGQMAAM8I0QDU05/drbAcleiOwdCcRTsHAGCSIUQDyFWZh6tEN0bDCpnUFffYE82NhQCASYYQDUBdmSrztGFCtJmVbuvvdCpYym6/nmgq0QCAycVriDazFjO7zcyeMrMnzexYM5tpZr82s2czjzPGvhIAn2KJYDfCxmE2W5GkptqIuvtLUInu6wwe961Eh2ukaBOVaADApOG7Ev0NSb9wzh0qabmkJyVdLulu59xCSXdnngOYQL2ZgNwQHT5EN9aGFU+UYNvvbKV5357o7DEq0QCAScJbiDazaZJWSfq2JDnnEs65DklnSLopc9pNks70NQcA+clWohui4WFfb4hG1FuKEJ1dfWPfSrQUtHSwOgcAYJLwWYl+o6R2Sd8xs0fN7Ftm1ihprnNumyRlHud4nAOAPOTaOUapRMdK0c6RbdfYtydaCirRtHMAACYJnyE6Iuktkv7DOXe4pF4V0LphZheb2QYz29De3u5rjgAkxRKZdo7aMlWih2vnqKedAwAwefgM0S9Letk592Dm+W0KQvV2M5snSZnHHcO92Tl3vXOuzTnX1tra6nGaAHr7R2/naIyGc0G7KNmQPGI7ByEaADA5eAvRzrnXJL1kZm/OHFot6QlJd0hamzm2VtJPfc0BQH7iiZTMpLrICJXo2kguaBc3ULYnmhsLAQCT2/ANkKXzMUk3m1lU0vOS/lpBcP+hmX1Q0lZJZ3meA4Ax9CbSaqgJKxSyYV8vWSU63hEsZRfef2dE1bdIyZiU6pcitcWPBQCAR15DtHNuo6S2YV5a7XNcAIWJJdKqH+GmQkmqj0YUS6Q1MOBGDNp56euU6qYP/9rQXQub545/DAAAyoAdCwEolkipcYSbCqWgEi1J8WSRLR39XVJt8/CvZfukaekAAEwChGgA6u1Pj7jRihT0REtSb7EtHf3dI4fobCU6u6shAAAVjBANQPFkasSVOaTBSnSs2JsLEz1BT/RwajPH+7uLGwMAgDIgRAPIVKJHDtHZKnXxleiekSvR2eOJnuLGAACgDAjRAIKe6FHaObL90rFiN1wZrZ0jSiUaADB5EKIBKJbIsxJd7Nbfie5R2jky4bqfSjQAoPIRogEEIXq01TlKUYl2bvRKdC5EU4kGAFQ+QjQA9fanRl2dI9vqUVSITsYlNzB4A+G+wjVSpC6oVgMAUOEI0UCVSw849acGxmjnyFaii2jnyN4wOFIlWgpaPahEAwAmAUI0UOWywXj0GwuzPdFFVKKz4Tg6SoiubaYnGgAwKRCigSqXbdGoH6USXRsJKWRFVqKzIXq0SnQtlWgAwORAiAaqXDZEj7btt5mpMRopTSV6pJ5oSaqdxjrRAIBJgRANVLnssnWj3VgoSQ214dL0RI+0xF32tf6u8Y8BAECZEKKBKhdPBtXl0W4slIKe6d5iVufI9jrXThv5nNomeqIBAJMCIRqocgVVoovZbCVbYR61naOZnmgAwKRAiAaqXD490ZLUUBNRbzmWuKMnGgAwCRCigSqXDdENNfn0RBd5Y6GFpJqGkc+pnSYlY1K6yO3FAQDwjBANVLnszYKjLXEnZXqii2rn6AkqzWYjn5Nt9aAaDQCocIRooMrFE/ndWFhXE1ZfcmD8AyW6R2/lkAZfpy8aAFDhCNFAlcuuzlFXM3qIro+GcueOS3/36MvbSYOvU4kGAFQ4QjRQ5eLJtKKRkMKhUdosFKzeUdyOhT15VKIzy99RiQYAVDhCNFDl+hJp1Y9RhZYG2zkGBtz4BurvHn15O2nwdUI0AKDCEaKBKhdP5heis+f0p8bZF53oGbudI1uppp0DAFDhCNFAlYsnB8ZcmUMavPFw3C0d+YToKJVoAMDkQIgGqlxfMj3mTYXSYCV63DcXJmJSdJQ1oqUhq3NQiQYAVDZCNFDl+pJp1deM/aOgLlOJ7htviE7GRt9oRZKijZlze8c3BgAAZUKIBqpcPJHOr52jJtvOMY4QPTAQhOhsSB5JOCqFIlKCEA0AqGyEaKDK5X1jYSZox8cTolPx4HGsSrSZVNNIiAYAVDxCNFDl4sm0avNc4i57fsESseBxrEp09hxCNACgwhGigSqX7zrRDcVUorM9zmNVoiVCNABgUiBEA1Wu0HWii6tE5xOiGwjRAICKR4gGqlw8md+Nhbme6PGE6GQmRNfk087RNHg+AAAVihANVLGBAae+5EB+60QX086RrSznU4muaWDHQgBAxSNEA1Usu4V3Qe0c4+qJzlai8+2JphINAKhsEZ8XN7MtkrolpSWlnHNtZjZT0jpJCyRtkfRe59wen/MAMLxsa0Y+m63UhEOKhGycPdHZSnSe7Rz0RAMAKlw5KtFvc86tcM61ZZ5fLulu59xCSXdnngOYALkQnUdPtBRUo4vric73xkLaOQAAlW0i2jnOkHRT5uubJJ05AXMAoMEtvPPpiZaCsD2+nugC14nmxkIAQIXzHaKdpF+Z2SNmdnHm2Fzn3DZJyjzOGe6NZnaxmW0wsw3t7e2epwlUp2wgzqcnWsqE6HFVogto56hplNIJKZUofBwAAMrEa0+0pOOcc6+a2RxJvzazp/J9o3PueknXS1JbW5vzNUGgmvWNp51jvJVoC0vh6NjnZoN2sleK5HE+AAATwGsl2jn3auZxh6QfSzpK0nYzmydJmccdPucAYGTx8bRzjLcnOtoomY19bjZEs0IHAKCCeQvRZtZoZs3ZryWdLGmTpDskrc2ctlbST33NAcDoCm7nGHcluje/mwqlISGaFToAAJXLZzvHXEk/tqDyFJH0A+fcL8zsYUk/NLMPStoq6SyPcwAwioIr0TVhdcaThQ+UjOW30Yq0dzsHAAAVyluIds49L2n5MMd3SVrta1wA+Su4J3rcq3P05rfltzRYsaYSDQCoYOxYCFSxcbVzjHezlbwr0U2D7wEAoEIRooEqFk/mv+23VOSNhXn3RFOJBgBUPkI0UMWygbg2kt+PgvpoWLHxLnGXzxrREjcWAgAmBUI0UMX6kmnV1YQUCuWx9JyCinUiNaD0QIFLtycLWZ0j087BroUAgApGiAaqWF8ynXcrhzTY9tFXaEtHooDVOXI3FvYUNgYAAGVEiAaqWDxRWIhuyKziUXBfdDKW/+ockdpgd0PaOQAAFYwQDVSxeDKtujyXt5MG15MuaJk75wpbncMs6Itmx0IAQAUjRANVrC+ZVl2kgHaO8VSiU32SXP490VImRNPOAQCoXIRooIrFk+m8N1qRBnuiC6pEZyvK+a7OkT2Xdg4AQAUjRANVrNCe6GzgLmiZu+z23YVUomsaWJ0DAFDRCNFAFYsnB3J9zvkY1+ocuUp0Ie0cTVSiAQAVjRANVLG+Qts5xtMTnatEF9LO0UCIBgBUNEI0UMWCdo78fww01EQkFdjOMa5KND3RAIDKRogGqli8wM1W6qKh3PvylhzPjYW0cwAAKhshGqhiha4TneuJLqgSPY52jpqGwTYQAAAqECEaqFIDA06J1MC4tv0ubHUO2jkAAFMPIRqoUn2pIAgXEqIj4ZCi4VBh7RzZnuiCbixslNIJKZ3M/z0AAJQRIRqoUtkNUwpZnUOS6mpChS1xl23LKLQSLVGNBgBULEI0UKWy1eRC1omWpIZoRLFEKv83JGKSTIrU5f8eQjQAoMIRooEq1TfOEF0fDSueHMj/DYneIBSb5f+ebOsHuxYCACoUIRqoUvFEEIQL6YmWgtAdL3Tb70K2/JaGVKJ7CnsfAABlQogGqlS2naPQEN0QDRe+7Xch/dDS4Pm0cwAAKhQhGqhSuRAdLezHQH1NuLCe6GSssJU5pGCzFWlwZQ8AACoMIRqoUtmWjEJ7outqxtMTXWAlOtv+QTsHAKBCEaKBKtU3znaO+kLbOZKx8fdEc2MhAKBCEaKBKjXYzlFgT3Sh7RyJ2GAozlfuxkJCNACgMhGigSqV22xlPEvc+V6dg3YOAECFI0QDVSq77fd4eqL7CuqJHsfqHDX1kox2DgBAxSJEA1WqL5GWmVQbKezHQEM0rER6QKl0nkF6PKtzmAUtHSxxBwCoUIRooErFk2nV14RlhewkqMH2j3g+Nxc6N77VOSRCNACgohGigSoVT6YLbuWQpLpoASE6nZBcuvCeaCl4D+0cAIAKRYgGqlQ8MVDwTYVSsDpH8P48QnS2klzo6hxSsOEKlWgAQIUiRANVqi+ZVl1N4T8C6gupRGcryeMK0Q2EaABAxfIeos0sbGaPmtmdmecHm9mDZvasma0zs6jvOQDYXzyZLniNaGlIT3RelehMiB5vOwchGgBQocpRif47SU8Oef5lSV93zi2UtEfSB8swBwD7iCfS42rnyFWi8wnRyWLaORrpiQYAVCyvIdrMXi/pXZK+lXlukt4u6bbMKTdJOtN6yt/3AAAgAElEQVTnHAAMb7w3Fha0OkcxlehoI5utAAAqlu9K9L9I+pSk7IKysyR1OOeyewa/LOlAz3MAMIy+5Pgq0Q2ZSnQsr0p0MT3RjWz7DQCoWN5CtJmdKmmHc+6RoYeHOdWN8P6LzWyDmW1ob2/3Mkegmo23J7puPKtzsMQdAGCK8VmJPk7S6Wa2RdKtCto4/kVSi5lFMue8XtKrw73ZOXe9c67NOdfW2trqcZpAdSq2Ep1fO0e2J3o87RxNQYgeKGCLcQAAysRbiHbOfdo593rn3AJJZ0u6xzl3rqTfSFqTOW2tpJ/6mgOAkcUT4+uJbogGfwcuqJ2j0G2/pcHgTTUaAFCBJmKd6Msk/b2ZPaegR/rbEzAHoOr1JQfG1c5RGwl+bHivRGdbQFjmDgBQgSJjn5Lrb/4f59y4/l3VOXevpHszXz8v6ajxXAdAaaTSA0qkB1QXKTxEh0Km+pqw4onU2Cdnq8iR+oLHUbQpcw1CNACg8uRbiT5b0rNmdo2ZHeZzQgD860sFfx+uj47vH6MaouH82jkSvUFFOTSOcaJUogEAlSuvP9mcc+dJOlzSZknfMbMHMqtnNHudHQAvsitrjOfGQilYoSPvbb/HszKHNLgsHsvcAQAqUN7lIedcl6TbFay0MU/SuyX90cw+5mluADzpywTg8dxYKAWV6Ly3/R5PP7Q0eDMi7RwAgAqUV4g2s9PN7MeS7pFUI+ko59w7JS2X9A8e5wfAg2wVeTw3Fmbfl9/qHL3jW5lDop0DAFDR8rqxUMGSdF93zt039KBzLmZmHyj9tAD4VGw7R32+7RzFVKKzNxbSzgEAqED5tnNs2zdAm9mXJck5d3fJZwXAq1wl2nc7RzE90bkl7nrG934AADzKN0SfNMyxd5ZyIgDKJxui64po58h7nejoeNs5sj3RVKIBAJVn1HYOM/uIpI9KOsTMHhvyUrOk+31ODIA//UVWoutrIv4r0bnVOeiJBgBUnrF6on8g6eeSviTp8iHHu51zu73NCoBXpWjniOWz2UoxPdGhsBSpI0QDACrSWCHaOee2mNnf7vuCmc0kSAOTUzyR3WzFcztHsnfwBsHxqGmgnQMAUJHyqUSfKukRSU6SDXnNSXqjp3kB8Che5DrR9TVh9SUHNDDgFArZyCcmimjnkIKWDirRAIAKNGqIds6dmnk8uDzTAVAOg5utjH/bbykI4421I/wYSSelgeT42zkkQjQAoGLlu9nKcWbWmPn6PDP7mpkd5HdqAHyJJVIKh0zR8PhCdP2QED2ibPgd72YrUlDFJkQDACpQvn+C/oekmJktl/QpSS9K+p63WQHwKp4YUH1NWGajtGKMIntD4qgrdGR7mYutRNMTDQCoQPmG6JRzzkk6Q9I3nHPfULDMHYBJKJ5MjfumQklqiEYy1xmtEp0Jv8VUoqONbLYCAKhI+W773W1mn5Z0nqRVZhaWVONvWgB8iifS417eTpLqo8Hfv2OjVaKz4bfonmgq0QCAypNvJfp9kvolfdA595qkAyV9xdusAHgVTxYZomuCv3+PulZ0tg2jmNU5WOIOAFCh8qpEZ4Lz14Y83yrpu74mBcCvWCJdVDtH9r19+bRzjHfb7+x7ubEQAFCB8l2d4z1m9qyZdZpZl5l1m1mX78kB8KOvyEp0dom7Uds5ktnVOUqwxJ1z478GAAAe5NvOcY2k051z051z05xzzc65aT4nBsCfWCKdC8LjkQ3go/dEl2B1jpoGyaWlVP/4rwEAgAf5hujtzrknvc4EQNnEk2nV+W7nSJZgnejsluH0RQMAKky+q3NsMLN1kn6i4AZDSZJz7r+9zAqAV/FEWg2+2zlKUYnOvjfRIzXMHP91AAAosXxD9DRJMUknDznmJBGigUkonizuxsK6SD490SVYnSN7UyLL3AEAKky+q3P8te+JACifYteJDoVMdTWhMVbn6JUi9VJo/OPkWkGSrNABAKgs+a7O8SYzu9vMNmWeLzOzz/qdGgAf0gNO/amBoirRUrBr4ajrRCd6i1veThrSzkGIBgBUlnxvLPwvSZ+WlJQk59xjks72NSkA/mSrx8VUorPvjycGRj4h0VtcP7REOwcAoGLlG6IbnHMP7XNslBIUgEqV7WMuZok7KVihI54cbcfC3sHVNcYr286R3UIcAIAKkW+I3mlmhyi4mVBmtkbSNm+zAuBNthJdV2QluiEaHmN1jlK0c2R7oqlEAwAqS76rc/ytpOslHWpmr0h6QdK53mYFwJts8C22Jzpo5xhjibtiVuaQaOcAAFSsUUO0mf39kKf/I+k3CqrXvZL+StLX/E0NgA/xZOnaOXb3JkY+IdErNcwqaozBEE07BwCgsozVztGc+dUm6SOSZkhqkfRhSYv8Tg2AD9nqsf92jp7i2znCUcnCtHMAACrOqJVo59w/SpKZ/UrSW5xz3ZnnV0r6kffZASi57M2ADdF8u7mGVzdWO0cyVvzqHGZBEGeJOwBAhcn3xsKDJA39d9uEpAUlnw0A77LL0hW7xF1DNJxrDRlWogSrc0iEaABARcq3FPU9SQ+Z2Y8VrNDxbkk3jfYGM6uTdJ+k2sw4tznnPm9mB0u6VdJMSX+UdL5zbpTGSgCllN0gpdie6IZoZORKtHNB8C32xkIpuAYhGgBQYfKqRDvnvijpryXtkdQh6a+dc18a4239kt7unFsuaYWkU8zsGElflvR159zCzPU+ON7JAyhcqZa4q6sJKtEDA27/F5NxSa74nmgpuAY90QCACpN3U6Rz7o8KKsf5nu8kZW+pr8n8cpLeLun9meM3SbpS0n/ke10Axcm2YBS/7Xfw/r5Uev/+6mzluFQhmko0AKDC5NsTPS5mFjazjZJ2SPq1pM2SOpxz2W3OXpZ0oM85ANhbbp3oEvRESxq+pSNZwhBNOwcAoAJ5DdHOubRzboWk10s6StJhw5023HvN7GIz22BmG9rb231OE6gq8WRa0UhI4ZAVdZ1sO8iwy9yVuhJNOwcAoMJ4DdFZzrkOSfdKOkZSi5ll/+339ZJeHeE91zvn2pxzba2treWYJlAV4ol00TcVSkMq0cOt0EE7BwBgivMWos2s1cxaMl/XS/pfkp5UsOvhmsxpayX91NccAOwvnkgX3cohjdHOkQ29NYRoAMDUVNxuC6ObJ+kmMwsrCOs/dM7daWZPSLrVzL4g6VFJ3/Y4BwD7iCVLE6LL1s5BTzQAoAJ5C9HOucckHT7M8ecV9EcDmAB9iXTRK3NIgzse9nlv52iS0v3SQFoKFT9vAABKoSw90QAqR7xElehsO8ewlehSrs6R3TqcajQAoIIQooEqEytRJbo+186R2v/FUrdzDL0mAAAVgBANVJm+ElWis0F8+HaOzJJ0pdj2O9oUPLLMHQCgghCigSoTK/ESd8PfWNgjRepL08Oca+foGf08AADKiBANVJl4sjTtHHWRMVbniJagCi0NtoQkqEQDACoHIRqoMvFEOrc8XTFCIVNdTWj4do5krDT90NLgWtP0RAMAKgghGqgizjnFk6Vp55CCmwtHbOfI9jIXq7Zp8JoAAFQIQjRQRZJpp/SAK8mNhVKwVvSI7RyluKlQGgzj/d2luR4AACVAiAaqSHaL7vpoafZZqo+GR16do1TtHLXNmWtSiQYAVA5CNFBF4pnAW7pKdFi9I60TXbJ2jkyIphINAKgghGigimQ3RilVT3RDdISe6GQJV+cI10iROkI0AKCiEKKBKpKtRJdidQ5JaqqNqLd/pEp0ido5pKCqTYgGAFQQQjRQRbL9y6VYJ1oa68bCEobo2mZ6ogEAFYUQDVSRbOAtVTtHY21YPftWop0rfSW6lko0AKCyEKKBKpIN0aW6sbAxGlFs3xCdjEtyJQ7R06R+KtEAgMpBiAaqSPbGwsba0ixx11AbUSyZ1sCAGzyY3Vmw5D3RXaW7HgAARSJEA1Wktz+oRDeWqJ2jqTYs5wZvWJQUrMwhlbgSTU80AKCyEKKBKpJb4q5UlejMpi17rRXtoxJd20Q7BwCgohCigSqSrUSXrCe6NrzXdSUFuxVKpV+dgxsLAQAVhBANVJFYIqX6mrDCISvJ9RqzleihNxdm2y5K2hPdLKXiUnqYNakBAJgAhGigivQm0rnqcSlkb1DcO0Rn2zlKtGOhNLj1d4JqNACgMhCigSoS60/l+phLIRui99pwJVeJbirZOKrNXIu+aABAhSBEA1WkN5Eu2UYr0uAqH3vdWJjtXa6dVrJxcpVo+qIBABWCEA1UkVgiVbI1oqXBVT72aufIhegSVqKj2XYOKtEAgMpAiAaqSG9/aSvRTbkbC/dp5whFpEhdycYZrESz4QoAoDIQooEqEkukcitqlEJDbom7fSrR0SbJSrMCiCR6ogEAFYcQDVSR3v50Sds5asIhRSMh9Q69sbC/p7T90NLgTYq0cwAAKgQhGqgivYlUSZe4k4KbC/euRHeVth9a4sZCAEDFIUQDVSTWny7pEndSsMzd3tt+95R2eTtpSIimEg0AqAyEaKBKJFIDSqQHcsvSlUpjNKJY/77tHM0lHUPhmuBGRW4sBABUCEI0UCXimb7lhhL2RAfXC++/TnSp2zmkoLpNTzQAoEIQooEqkQ26pa5EN9VG9tn220MlWgquSU80AKBCEKKBKhHLhOiSV6Kj4b3Xie7vHtwcpZRqm+iJBgBUDG8h2szmm9lvzOxJM3vczP4uc3ymmf3azJ7NPM7wNQcAg7JBt+Q90UNvLHQuU4n20M5RO41KNACgYvisRKck/W/n3GGSjpH0t2a2SNLlku52zi2UdHfmOQDPskG35KtzRIe0cyRjkhvw084RbZIShGgAQGXwFqKdc9ucc3/MfN0t6UlJB0o6Q9JNmdNuknSmrzkAGJRdQaPU60Q31UXU05+Sc26wUlzqJe4keqIBABWlLD3RZrZA0uGSHpQ01zm3TQqCtqQ55ZgDUO18VaKb6yJKpp36UwODPcul3rFQoicaAFBRvIdoM2uSdLukTzjn8l7k1cwuNrMNZrahvb3d3wSBKhFL+KlEN9fVSJK6+1KD6zh76YluZok7AEDF8BqizaxGQYC+2Tn335nD281sXub1eZJ2DPde59z1zrk251xba2urz2kCVSHbt1zySnRmtY/uvuRgyPXRzhFtDnqu06mxzwUAwDOfq3OYpG9LetI597UhL90haW3m67WSfuprDgAG5SrRJV6do7kuG6JTgz3LvtaJlqhGAwAqgs9K9HGSzpf0djPbmPn1l5KulnSSmT0r6aTMcwCe9fSnFI2EFAmX9rd9U6YS3dOfGtIT7WmdaImtvwEAFaG0/647hHNuvSQb4eXVvsYFMLzuvpSm1ZX+t/xgT3RycAk6HyG6bnrw2EeIBgBMPHYsBKpET38qF3hLadh2Dh890bkQ3Vn6awMAUCBCNFAluvuSudaLUto7RPdIFpJq6ks+jupagkdCNACgAhCigSrR05fKBd5S2rsnuitYI9pG6uQqApVoAEAFIUQDVaKnP+WlEh0Jh1RfEw56ovs6B8NuqeVCdIef6wMAUABvNxYCqCzdfSk1eahES0FLR9DO4TFEZ3dBpBINAKgAVKKBKtHdl9Q0DzcWSlJTXUTd/alg5QxfITocCTZcIUQDACoAIRqoAs45b+0cUrDMXXdfym87hyTVtxCiAQAVgRANVIFYIq0BJ3/tHLUR9fjuiZaCa8fpiQYATDxCNFAFevpTkuRldY7sdctSia6bTiUaAFARCNFAFejuS0qSt3aOptqI4n39wY6FhGgAQBUgRANVoLvPdyW6RgPZ3QoJ0QCAKkCIBqrAYDuHn9U5musiCiW6gideQzQ3FgIAKgMhGqgC2Uq0v9U5IpquWPDEdyW6v1MaSPsbAwCAPBCigSrQU4YQPc16gyfZTVF8yAb0/i5/YwAAkAdCNFAFujPtHL42W5lWV6Np5apES7R0AAAmHCEaqALZ1Tkaa8Nerj+9oWawEu17sxWJEA0AmHCEaKAK9PSl1BANKxL281u+pT5a3ko0G64AACYYIRqoAt19/rb8lqSWhho1W0xOVp6e6D5CNABgYhGigSrQ05/ytuW3JE2vD3qiE+FGKeTxx0r9jOAxvsffGAAA5IEQDVSB7v6Umj1WohuiYbWEYuoLN3kbQ5JUPzN4jO32Ow4AAGMgRANVoDOe1LR6PytzSJKZaWY4rlio0dsYkqRogxSpl2K7/I4DAMAYCNFAFeiMJdTSEPU6xoxQXD1q8DqGJKlhFu0cAIAJR4gGqkBHPKkWj5VoSWqxHnWo2esYkqSGmVSiAQATjhANTHEDA05d8aRaGvyG6OmuW7uc555oiRANAKgIhGhgiuvuT2nABStoeOOcmtKdak957omWgnYObiwEAEwwQjQwxXXGgt0KvfZEJ3oUUUrbyxGi66lEAwAmHiEamOI64glJ8tsTnQm121MNSqYH/I0jBZXovk4pnfI7DgAAoyBEA1NcR64S7TNEB+0Ve1yzuuJJf+NIQYiWY9dCAMCEIkQDU1xHvHwherdrzo3nTQMbrgAAJh4hGpjiOjOh1udmK4oHgbZDTbnKtze5EE1fNABg4hCigSmuMxb0RHtdnWNIJboz04PtTcOszJiEaADAxCFEA1NcRyyphmhYtZGwv0Fiu+Rk6lKj9vR6rkTXZyrRcdo5AAAThxANTHHl2K1Q8d1SXYsGFNKu3n6/Y1GJBgBUAEI0MMV1xJKa7nONaCkItI2zFI2EtKvHcztHtEGK1BOiAQATyluINrMbzGyHmW0acmymmf3azJ7NPM7wNT6AQGc84b8SHdstq5+p1qZatfd4rkRLUmOr1NPufxwAAEbgsxJ9o6RT9jl2uaS7nXMLJd2deQ7Ao8540u/ydlJwY2HDLM1qivqvREtS81yp5zX/4wAAMAJvIdo5d5+kfe/8OUPSTZmvb5J0pq/xAQQ6YmUI0fHdUsNMzW6q1c5yVKKb5krd2/2PAwDACMrdEz3XObdNkjKPc8o8PlBVnHNBT3S9x55o54L+5PoZmtVYpkp001yphxANAJg4FXtjoZldbGYbzGxDezu9j8B4dMVTSqQHNLvJY4ju75JSfVLTXM1urtWu3n455/yNJ0nNBwTV71QZAjsAAMMod4jebmbzJCnzuGOkE51z1zvn2pxzba2trWWbIDCVZG/ya22u9TdIT+a3cfMBmtUYVTLt1BVP+RtPkpoy/4jVO+KPEAAAvCp3iL5D0trM12sl/bTM4wNVpb07E6KbPIbo7swNfk1zcmHd+wodTQdkxqalAwAwMXwucXeLpAckvdnMXjazD0q6WtJJZvaspJMyzwF4kr3Jb7bXSnQmyDYdoFmNwTi7vIfoTCWaFToAABMk4uvCzrlzRnhpta8xAewtF6LLUYlunqvZA+HMuJ57lZszlWhuLgQATBBvIRrAxNvZ069wyPxuttKzXQrXSnUtmp1O5Mb1qrFVktHOAQCYMBW7OgeA4rV392t2U1ShkPkbpGd7sPmJmWY0RBWyMrRzhGukhlm0cwAAJgwhGpjCdvYk/LZySEE7R+ZGv3DINLOxVju6y7DhSvMBgyuDAABQZoRoYArb2dPvP0T3bB+80U/S61rq9Gpnn98xpWDDla5X/Y8DAMAwCNHAFLazu0whOnujn6R50+u0rSPud0xJapkvdb7sfxwAAIZBiAamKOecdvYk/G60kuqX4nsG122W9LqWer3aEfe/a2HLQVJsp5To9TsOAADDIEQDU1RZtvzOLjHXPDd36HXT69WbSKurz/OuhS1vCB47XvI7DgAAwyBEA1NUe0/Ql+y1Et21LXhsnpc79LqWeknSq75bOloOCh47tvodBwCAYRCigSnq1Y4gRM+bXu9vkI4Xg8dsVVjSvJY6SdK2Ts8hevr8vecAAEAZEaKBKerlPUGIff0MjyF6TzZEz88del0mtL/S4XmFjqa5UjgqddLOAQAoP0I0MEW90hFTJGSaO63O3yAdW4IwWzMY1FubaxUJmf8VOkKhoBpNOwcAYAIQooEp6uU9cc1rqVPY526Fe17cq5VDCjZcmTutzn9PtBT0RROiAQATgBANTFEv74nrwBaPrRxS0I884w37HT6wpT7Xk+0VIRoAMEEI0cAU9cqeuF4/o8HfAOmU1PnKfpVoSTpoVoO27CrD+s0zFki97VJfl/+xAAAYghANTEGJ1IC2d/f5rUR3vSy59LCV6ENam7Sju19dfUl/40tS66HB485n/I4DAMA+CNHAFLStMy7nyrUyx0H7vXRIa6Mk6fl2z9Xo1jcHjzue9DsOAAD7IEQDU1B2ebsDfYboYdaIzjpkTpMkafOOHn/jS0E7R6ROan/K7zgAAOyDEA1MQS/viUmS5vvsid7xlBSpH7YSfdDMBkVCps3tnkN0KCzNXkiIBgCUHSEamII2t/cqGgnltuD2YsfjQTtFKLzfSzXhkN4wq8F/O4cU9EW3P+1/HAAAhiBEA1PQczt69MbZjX7XiN7+uDR3yYgvH9La5L8SLQUhuvMlqb/b/1gAAGQQooEp6LkdPbm+ZC96dgRLy81dNOIph8xp0pZdvUqkBvzNQ5LmHBY8cnMhAKCMCNHAFBNPpPXSnpj+otVjiN7+ePA4Z+QQvfTA6UqmnZ7c5nkN59e9JXh8+WG/4wAAMAQhGphinnytS85Ji143zd8gO54IHkdp5zj8oBZJ0qNb9/ibhyRNmxfc3PjSg37HAQBgCEI0MMU8/mpQ+V3sM0S/tklqbJWaWkc8Zd70eh0wrU6PvtThbx5Z84+WXnpIcs7/WAAAiBANTDmbXu5US0ON390KX35IOrBtzNMOP6hFj24tU4ju3hbcYAgAQBkQooEp5pGte3T4/BaZeVqZo3entOs56aCjxzz18INatHV3TDt7+v3MJWt+Zi5baekAAJQHIRqYQnb3JvTcjh61LZjpb5At64PHg1aOeeoRbwjmcf9zO/3NR5LmLpYaZkvP/MLvOAAAZBCigSnkD8/vkiQdfbDHEP3cXVLtdOnAI8Y8dcX8Fs1uiupXj2/3Nx8p2PDl0L+UnvmllPJc9QYAQIRoYEq59+kdmlYX0Yr5LX4GGEhLz/5aOuREKRwZ8/RwyHTSorm69+kd6kum/cwp67DTpUS39Py9fscBAECEaGDKSKUHdM9TO/TWN7UqEvb0W3vrA1LPa9KiM/J+yzsWH6DeRFrrn/Xc0nHwKql2mrTpdr/jAAAgQjQwZdy/eZd29iR02rLX+Rvk0ZulaJP0plPyfsvKQ2ZrdlNU3/vDi/7mJUmRWmn5OUGI7nzZ71gAgKpHiAamiO89sEUzG6N626Ejr91clO7tQUBd9j4p2pj326KRkP76uIP122fatemVTj9zy1p5SbBW9O//r99xAABVjxANTAGbXunUXU/u0HnHvEG1kbCfQX77ZWkgJR37twW/9fxj36Dm2oiu+eXTcj43RGk5SFp+trTh29Jrf/Y3DgCg6k1IiDazU8zsaTN7zswun4g5AFNFMj2gK36ySTMaavTB4w/2M8jz90obbpCO/JA065CC3z6trkb/8I43675n2vXt9S+Ufn5DnfRPUv0M6faLpHgZNnoBAFSlsodoMwtL+jdJ75S0SNI5Zrao3PMApoJYIqVPrNuoP73UoS+cuVTT62tKP8jme6R1F0ith0qrPzfuy1xw7Bt00qK5+uL/PKlv/e55DQx4qkg3zpLe/Z/BhjA3nirt2uxnHABAVTOv/7Q63IBmx0q60jn3jszzT0uSc+5LI72nra3NbdiwoUwzBCrbwIDTKx1x3ftMu779u+f14u6YPv3OQ3XxqsIrxMNyTortll5+WPrTLdITP5Fmv0k677+llvlFXbovmdal6zbq55te0+LXTdPZRx2koxbM1ILZDaVvQ9l8j/TDtVIyLi09K1hHet4KadqBUohONgDA/szsEedcW17nTkCIXiPpFOfchzLPz5d0tHPukpHeMxEh+qEff1PTH795hFdH/m9mo7w2mtHf50Yc0tt4Y71vxPmMZrz/3UZ7X+nHs3H+nhj1mkNe2/es0d+3N+ekAefknJNJqomE1FJfo7qafULhqN/CKC+6gSBAp+LB87oW6cgPSqs+KdXUj3bRvA0MOP30T6/o/97znDa390qSQiY11UbUXFejxtqwwqGQTJJZ8CtkFvy3yDzmu6N5S3q33hf7gd7ad68aXUySlFZIPdas3lCj0gorrbAGLKS0wnIyuTH+r6pMk3HOADCyjpbFOvqSG8o+biEheuzdEkpvuJ/2+/2pbmYXS7pYkg466CDfc9pPKBxVf2S0FQhG+0Nr5NdGzTajJAMnG/Gqo/+hbyNOxw09pyBjRVcb8VsZc64jXjNzxjCnZK85/P9Yo1xzyMX2C6vK77X92bBfjmXfaw59tvc8TXU1ITVEw5rVVKtp9TWj/J8xygRGS6H1M6TmedIBS6X5R0s1dWN/AwUIhUzvPvz1OnPFgdrc3qvHX+3U5vZedcWT6ulPqacvpbRzCv4u4zTgJOecnAb/EpGvlObo5oZP6IfuozoosVkLks9pRnqnmtJdanC9CrkBhZRW2KUV0oBCGijp91oe5S2EAEA5DJSocOMT7RwAAACACqtET0Rj4MOSFprZwWYWlXS2pDsmYB4AAADAuJS9ncM5lzKzSyT9UlJY0g3OucfLPQ8AAABgvCaiJ1rOuf+R9D8TMTYAAABQLNZ5AgAAAApEiAYAAAAKRIgGAAAACkSIBgAAAApEiAYAAAAKRIgGAAAACkSIBgAAAApEiAYAAAAKRIgGAAAACkSIBgAAAApkzrmJnsOYzKxd0osTMPRsSTsnYFyUF59zdeBznvr4jKsDn3N1mKjP+Q3OudZ8TpwUIXqimNkG51zbRM8DfvE5Vwc+56mPz7g68DlXh8nwOdPOAQAAABSIEA0AAAAUiBA9uusnegIoCz7n6sDnPPXxGVcHPufqUPGfMz3RAAAAQIGoRAMAACBU1WoAAAclSURBVAAFIkRLMrNTzOxpM3vOzC4f5vVaM1uXef1BM1tQ/lmiWHl8zqvM7I9mljKzNRMxRxQnj8/4783sCTN7zMzuNrM3TMQ8UZw8PucPm9mfzWyjma03s0UTMU8UZ6zPech5a8zMmVlFr+SA4eXx+/lCM2vP/H7eaGYfmoh5DqfqQ7SZhSX9m6R3Slok6ZxhfuB+UNIe59xfSPq6pC+Xd5YoVp6f81ZJF0r6QXlnh1LI8zN+VFKbc26ZpNskXVPeWaJYeX7OP3DOLXXOrVDwGX+tzNNEkfL8nGVmzZI+LunB8s4QpZDv5yxpnXNuRebXt8o6yVFUfYiWdJSk55xzzzvnEpJulXTGPuecIemmzNe3SVptZlbGOaJ4Y37OzrktzrnHJA1MxARRtHw+498452KZp3+Q9PoyzxHFy+dz7hrytFESN/9MPvn82SxJ/6TgL0p95ZwcSibfz7kiEaKlAyW9NOT5y5ljw57jnEtJ6pQ0qyyzQ6nk8zljciv0M/6gpJ97nRF8yOtzNrO/NbPNCgLWx8s0N5TOmJ+zmR0uab5z7s5yTgwlle/P7b/KtOHdZmbzyzO1sRGipeEqyvtWLfI5B5WNz3Dqy/szNrPzJLVJ+orXGcGHvD5n59y/OecOkXSZpM96nxVKbdTP2cxCCtor/3fZZgQf8vn9/P8kLci04d2lwc6ACUeIDv7WM/RvNa+X9OpI55hZRNJ0SbvLMjuUSj6fMya3vD5jM/tfkq6QdLpzrr9Mc0PpFPp7+VZJZ3qdEXwY63NulrRE0r1mtkXSMZLu4ObCSWfM38/OuV1Dflb/l6QjyjS3MRGipYclLTSzg80sKulsSXfsc84dktZmvl4j6R7HAtuTTT6fMya3MT/jzD///qeCAL1jAuaI4uXzOS8c8vRdkp4t4/xQGqN+zs65TufcbOfcAufcAgX3OJzunNswMdPFOOXz+3nekKenS3qyjPMbVWSiJzDRnHMpM7tE0i8lhSXd4Jx73MyukrTBOXeHpG9L+p6ZPaegAn32xM0Y45HP52xmR0r6saQZkk4zs390zi2ewGmjAHn+Xv6KpCZJP8rcG7zVOXf6hE0aBcvzc74k8y8OSUl7NFgEwSSR5+eMSS7Pz/njZna6pJSCDHbhhE14H+xYCAAAABSIdg4AAACgQIRoAAAAoECEaAAAAKBAhGgAAACgQIRoAAAAoECEaACYwszsW2a2qIzjLTCz95drPACYKIRoAJjkzCw80mvOuQ85554o8Xij7TGwQBIhGsCUR4gGgCKZ2QVm9piZ/cnMvpc59gYzuztz/G4zOyhz/EYz+6aZ/d7MnjezNZnj68zsL4dc80Yz+yszC5vZV8zs4cy1/ibz+olm9hsz+4GkP5tZo5n9LDOHTWb2vsx592a3Qjazc8zsz5nXvzxkrB4z+2LmvX8ws7nDfI9Xmtn1ZvYrSd/NVJx/Z2Z/zPxamTn1aklvNbONZnbpSPPH/2/fXkKtqqM4jn/XwBpIBNmkZg1q0OuKcoMgK272JMhJ0YOiCAcOKhoEhjMhQhLEiCZFhL2ECirCUojUIjLopThp0iwpI5Awzcf9Ndj/U6fDPd6zuaMD38/oz/4/9vqPzmKdtSVNO5NoSVqCqroK2ATMJZkBnmpTLwE7klwLvAW8OLTtEuAG4G66pBNgJzBIfM8DbgF2AY8Dx5LMArPA+qq6rO25DtiU5ErgDuCXJDNJrgY+HYnzUmALMAesBGaral2bXg583eLfD6wfc93VwD1JHgR+A25NsqrFPbjfRuCLJCuTbFskfkmaWibRkrQ0c8B7SX4HSPJHe3498HYbv0GXNA98kGS+tVkMqr6fAHNVdT5wJ7A/yQngNuCRqvoBOACsAC5ve75J8nMbHwLWVtWWqlqT5NhInLPA3iRHk5yhS+xvbHOngI/b+Fu6loyFfNRiAlgGvFJVh4B3gXF91+eKX5Km1rn62iRJiysgE6wbXvP3yH6SnKyqvcDtdJXdd4bmn0iy+38vrboZOP7v4clPVbUauAt4vqr2JNk8+p4xTicZxHeW8b8Nx4fGTwO/AjN0BZmTY/YsGL8kTTsr0ZK0NJ8B91XVCoCquqg9/wq4v40fAr6c4KydwGPAGmCQdO4GNlTVsnb+FVW1fHRja9f4K8mbwFZg1ciSA8BNVXVx+xDxAWDfZFdc0IXAkSTzwMPA4OPGP4ELhtZNFL8kTRsr0ZK0BEkOV9VzwL6qOgt8DzwKPAm8VlXPAEfpkuPF7AF20LVNnGrPXqVrr/iuqqqdtW6BvdcAL1TVPHAa2DAS55Gqehb4nK46vCvJh33uOuJl4P2quredOahSHwTOVNWPwOvA9gnjl6SpUv/9gydJkiRpErZzSJIkST2ZREuSJEk9mURLkiRJPZlES5IkST2ZREuSJEk9mURLkiRJPZlES5IkST2ZREuSJEk9/QMYhcd5oRentQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\"\"\" COM ADICAO DOS VALORES PRIOR\"\"\"\n", + "\n", + "# For our graph\n", + "fig, ax = plt.subplots(1, 1,figsize=(12,6)) \n", + "\n", + "from matplotlib.pyplot import figure\n", + "figure(figsize=(18, 16))\n", + "\n", + "# Control\n", + "c_alpha, c_beta = c_successes + prior_successes, c_failures + prior_failures\n", + "# Experiment\n", + "e_alpha, e_beta = e_successes + prior_successes, e_failures + prior_failures\n", + "\n", + "x = np.linspace(0., 0.5, 1000) \n", + "\n", + "# Generate and plot the distributions!\n", + "c_distribution = beta(c_alpha, c_beta)\n", + "e_distribution = beta(e_alpha, e_beta)\n", + "\n", + "ax.plot(x, c_distribution.pdf(x),label='control(Alpacas)')\n", + "ax.plot(x, e_distribution.pdf(x),label='experiment(Bears)')\n", + "\n", + "ax.set(xlabel='conversion rate', ylabel='density')\n", + "ax.legend(loc='best', frameon=False)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Análise da diferença entre o grupo controle e o grupo do experimento, com o aumento das observações\n", + "\n", + "Podemos perceber que o alto número de observações faz com que a vairância diminua, e dessa forma fica mais claro a diferença entre o grupo controle (alpacas) e o grupo do experimento (ursos). \n", + "\n", + "Vamos calcular a probabilidade acumulada para as duas curvas de densidade de distribuição de sucesso para os dois casos com **ppf** (percentage point function) e comparar os resultados. Na sequência, plotamos o gráfico do ganho em sucesso da diferença entre os grupos controle e experimento com **cdf** (cumulative distribution function)." + ] + }, + { + "cell_type": "code", + "execution_count": 491, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.14680681 0.15774923 0.16911913]\n", + "[0.16720304 0.17872825 0.19065475]\n" + ] + } + ], + "source": [ + "# Arguments are x values so use ppf - the inverse of cdf\n", + "print(c_distribution.ppf([0.025, 0.5, 0.975]))\n", + "print(e_distribution.ppf([0.025, 0.5, 0.975]))\n", + "\n", + "# [ 0.14443947 0.15530981 0.16661068]\n", + "# [ 0.15770843 0.16897057 0.18064618]" + ] + }, + { + "cell_type": "code", + "execution_count": 492, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Text(0,0.5,'CDF'), Text(0.5,0,'Bears / Alpacas')]" + ] + }, + "execution_count": 492, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 1)\n", + "\n", + "ser = pd.Series(e_samples/c_samples)\n", + "\n", + "# Make the CDF\n", + "ser = ser.sort_values()\n", + "ser[len(ser)] = ser.iloc[-1] \n", + "cum_dist = np.linspace(0., 1., len(ser))\n", + "ser_cdf = pd.Series(cum_dist, index=ser)\n", + "\n", + "ax.plot(ser_cdf)\n", + "ax.set(xlabel='Bears / Alpacas', ylabel='CDF')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tirando conclusões sobre a hipótese nula\n", + "\n", + "Vamos comparar o resultado do **p-value** das distribuições com **rsv** (random variates) para um tamanho de amostra de 1 milhão de observações e tirar a conclusão se empiricamente a diferença de cliques de sucesso com grupo do experimento (ursos) é estísticamente relevante." + ] + }, + { + "cell_type": "code", + "execution_count": 493, + "metadata": {}, + "outputs": [], + "source": [ + "sample_size = 10000000\n", + "\n", + "c_samples = pd.Series([c_distribution.rvs() for _ in range(sample_size)])\n", + "e_samples = pd.Series([e_distribution.rvs() for _ in range(sample_size)])\n", + "\n", + "p_value = 1.0 - sum(e_samples > c_samples)/sample_size\n", + "\n", + "# 0.046830000000000038" + ] + }, + { + "cell_type": "code", + "execution_count": 494, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.005507400000000051" + ] + }, + "execution_count": 494, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p_value" + ] + }, + { + "cell_type": "code", + "execution_count": 495, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 495, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p_value < 0.05" + ] + }, + { + "cell_type": "code", + "execution_count": 496, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Os ursos são melhores que as Alpacas: hipótese nula não rejeitada: ursos fazem diferença na landing page.\n" + ] + } + ], + "source": [ + "if p_value < 0.05:\n", + " print('Os ursos são melhores que as Alpacas: hipótese nula não rejeitada: ursos fazem diferença na landing page.')\n", + "else:\n", + " print('Os ursos não são melhores que as Alpacas: hipótese nula rejeitada: ursos não fazem diferença na landing page.')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/1-analise-explorat\303\263ria-basica/07-inferencia2/simpson_kidney.png" "b/1-analise-explorat\303\263ria-basica/07-inferencia2/simpson_kidney.png" new file mode 100755 index 0000000..21b35a5 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/07-inferencia2/simpson_kidney.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/07-inferencia2/simpson_paradox.png" "b/1-analise-explorat\303\263ria-basica/07-inferencia2/simpson_paradox.png" new file mode 100755 index 0000000..87fb756 Binary files /dev/null and "b/1-analise-explorat\303\263ria-basica/07-inferencia2/simpson_paradox.png" differ diff --git "a/1-analise-explorat\303\263ria-basica/08-SQL1/python_e_sql.ipynb" "b/1-analise-explorat\303\263ria-basica/08-SQL1/python_e_sql.ipynb" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/miscel\303\242nia/Teorema_limite_central_e_lei_grandes_numeros.ipynb" "b/1-analise-explorat\303\263ria-basica/miscel\303\242nia/Teorema_limite_central_e_lei_grandes_numeros.ipynb" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/miscel\303\242nia/desafio_causalidade.txt" "b/1-analise-explorat\303\263ria-basica/miscel\303\242nia/desafio_causalidade.txt" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/miscel\303\242nia/desafio_simpson.txt" "b/1-analise-explorat\303\263ria-basica/miscel\303\242nia/desafio_simpson.txt" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/miscel\303\242nia/operacoes_com_conjuntos.ipynb" "b/1-analise-explorat\303\263ria-basica/miscel\303\242nia/operacoes_com_conjuntos.ipynb" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/miscel\303\242nia/paradoxo_de_simpson.ipynb" "b/1-analise-explorat\303\263ria-basica/miscel\303\242nia/paradoxo_de_simpson.ipynb" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/miscel\303\242nia/simulando_montyhall.ipynb" "b/1-analise-explorat\303\263ria-basica/miscel\303\242nia/simulando_montyhall.ipynb" old mode 100644 new mode 100755 diff --git "a/1-analise-explorat\303\263ria-basica/xxxxx/PRACTICA_GUIADA_Python.ipynb" "b/1-analise-explorat\303\263ria-basica/xxxxx/PRACTICA_GUIADA_Python.ipynb" new file mode 100755 index 0000000..eaf0cf0 --- /dev/null +++ "b/1-analise-explorat\303\263ria-basica/xxxxx/PRACTICA_GUIADA_Python.ipynb" @@ -0,0 +1,709 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Python Avançado" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tuplas, listas e dicionários" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "aluno = (\"Fernando\",\"Gonzalez\",26)\n", + "aluno" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Se eu quiser salvar os dados de todos os meus alunos, uso uma lista de tuplas:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "alunos = [(\"Fernando\",\"Gonzalez\",26),(\"Florencia\",\"Martinez\",32),(\"Florencia\",\"Martinez\",32)]\n", + "alunos" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "curso={\"ajudante\":(\"Javier\",\"Rodriguez\",32),\"professor\":(\"Marisol\",\"Andrade\",39)}\n", + "curso" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2- Definição de funções" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Escrever uma função que receba a longitude do lado de um quadrado e retorne a área do quadrado\n", + "def areaSquare(lado): \n", + " return lado ** 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Escrever uma função que receba o comprimento, largura e profundidade de um ”cuboide” e retorne a área da superfície do ”cuboide”\n", + "def surfaceAreaCuboid(comprimento, largura, profundidade): \n", + " superfície = 2 * (comprimento * largura + comprimento * profundidade + largura * profundidade)\n", + " return superfície" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Agora chamamos às funções definidas anteriormente" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "areaSquare(3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "surfaceAreaCuboid(1,3,5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3 - Abrangências de listas\n", + "\n", + "### Abrangências de listas básicas\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### O que são as abrangências de listas?\n", + "\n", + "As abrangências de listas são sentenças que realizam algum tipo de operação em cada elemento de uma lista. Vamos começar com uma lista simples de números:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "numbers = [0,1,2,3,4,5,6,7,8,9]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vamos supor que queremos somar 1 a cada elemento da lista. Poderíamos fazer isto de diferentes\n", + "formas sem utilizar abrangências de listas. Poderíamos utilizar um for:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "nums_plus_one = []\n", + "for num in numbers:\n", + " nums_plus_one.append(num + 1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "nums_plus_one" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Felizmente, temos as abrangências de listas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "nums_plus_one = [x + 1 for x in numbers]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "nums_plus_one" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vejamos detalhadamente como isto funciona:\n", + "* num_plus_one é atribuída à esquerda como uma nova variável\n", + "* As abrangências de listas retornam uma lista, e a sentença está entre colchetes: [...]\n", + "* Entre os colchetes, a estrutura é similar à de um loop for:\n", + " 1. A **operação por elemento** vem primeiro: x+1\n", + " 2. Depois, vem a **variável de atribuição da iteração**: for x\n", + " 3. Por último, a **lista de elementos sobre a qual iterar**: in numbers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lógica condicional nas abrangências de listas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As abrangências de listas não apenas servem para iterar sobre os elementos para aplicar alguma operação a eles, como também podem aplicar condições. \n", + "Vamos supor que queremos \"binarizar\" uma variável de acordo com o fato de cada elemento ser maior ou menor/igual à metade do máximo de todos os elementos. O for para fazer isto poderia ser desta maneira:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "n = [1, 2, 7, 21, 3, 1, 62, 3, 34, 12, 73, 44, 12, 11, 9]\n", + "n_bin = []\n", + "n_max_2 = max(n) / 2\n", + "for x in n:\n", + " if x >= n_max_2:\n", + " n_bin.append(1)\n", + " else:\n", + " n_bin.append(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mas isto exige muito código. Uma abrangência de listas pode fazer a mesma coisa de forma muito mais fácil:\n", + "\n", + "##### 3- A \"Binarizar\" n de tal forma que os valores maiores ou iguais à metade do máximo de n sejam 1, os outros 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Primeiro, vejamos como se interpreta uma expressão condicional em Python" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x = 2\n", + "print (1 if x > 5 else 0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x = 7\n", + "print (1 if x > 5 else 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Agora criamos nossa lista usando uma abrangência de listas e uma expressão condicional" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "n = [1, 2, 7, 21, 3, 1, 62, 3, 34, 12, 73, 44, 12, 11, 9]\n", + "n_max_2 = max(n) / 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "n_bin = [1 if x > n_max_2 else 0 for x in n]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "n_bin" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3- B Filtrar uma lista\n", + "\n", + "As condicionais dentro de uma abrangência de listas também servem para filtrar os dados que quero manter. Neste caso, o \"if\" vai depois do for." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "n = [100, 2, 423, 42, 15, 87, 67]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Queremos obter apenas os elementos que estão entre 40 e 70" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "[num for num in n if 70 >= num >= 40]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Funções em abrangências de listas\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Podemos realizar operações com várias listas ao mesmo tempo. Utilizar as funções **zip** e **enumerate** junto com abrangências de listas é muito útil. Primeiro vejamos o que cada uma destas funções faz.\n", + "\n", + "**zip** percorre cada elemento de duas listas de maneira iterativa ao mesmo tempo e combina cada fila de elementos em uma tupla:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a = ['a','b','c','d']\n", + "z = ['z','y','x','w']\n", + "\n", + "list(zip(a,z))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "zipped = []\n", + "for a_i, z_i in zip(a, z):\n", + " zipped.append([a_i, z_i])\n", + "\n", + "zipped" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3- C Combinar os elementos destas duas listas em pares (tuplas), item por item\n", + "Observação: O output a ser obtido é [('a', 'z'), ('b', 'y'), ('c', 'x'), ('d', 'w')]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a = ['a', 'b', 'c', 'd']\n", + "z = ['z', 'y', 'x', 'w']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "zipped_lc = [x for x in zip(a,z)]\n", + "zipped_lc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Nota**: Se quisermos obter apenas uma lista de tuplas, podemos usar o constructor list" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "list(zip(a,z))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3- D Criar uma lista de pares (índice, valor)\n", + "\n", + "Observação: Usando abrangência de listas fica claro :)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a = ['a','b','c','d']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**enumerate** leva o \"registro\" do índice de cada elemento da lista:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a = ['a','b','c','d']\n", + "\n", + "enumerated = []\n", + "for i, a_i in enumerate(a):\n", + " enumerated.append([i, a_i])\n", + "\n", + "enumerated" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Agora, usando abrangência de listas:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "enumerated_lc =[x for x in enumerate(a)]\n", + "enumerated_lc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3-E) Para cada elemento de cada lista, calcular a multiplicação do elemento da primeira lista por seu índice dividido pelo elemento da segunda lista\n", + "\n", + "Por exemplo, dadas estas duas listas:\n", + "\n", + " list_one = [10, 15, 20, 25, 40]\n", + " list_two = [1, 2, 3, 4, 5]\n", + "\n", + "Retornar:\n", + "\n", + "[0, 7, 13, 18, 32]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "list_one = [10, 15, 20, 25, 40]\n", + "list_two = [1, 2, 3, 4, 5]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "math_comp = [int((x * i) / y) for i, (x, y) in enumerate(zip(list_one, list_two))]\n", + "math_comp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Abrangências de dicionários" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A abrangência não está limitada a listas. \n", + "Podemos utilizar a abrangência para criar dicionários. \n", + "Abaixo, um exemplo onde criamos um dicionário em que cada chave é o nome de uma espécie animal e seu valor é a longitude desse nome." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "keys = ['dog', 'cat', 'bird', 'horse']\n", + "dicc = {k:len(k) for k in keys}\n", + "dicc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 3-F) Criar um dicionário onde as keys sejam o animal e a chave seja o índice de cada letra do nome do del animal no abecedário\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def indiceAbecedario(letra):\n", + " return ord(letra.lower()) - 96" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A função indiceAbecedario retorna a que número de letra do abecedário corresponde à letra passada como parâmetro" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "indiceAbecedario('b')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "keys = ['dog', 'cat', 'bird', 'horse']\n", + "dicc = {k:[indiceAbecedario(x) for x in k] for k in keys}\n", + "dicc" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3-F Criar um dicionário onde as chaves sejam os nomes de coluna e seus valores correspondentes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "column_names = ['height','weight','is_male']\n", + "values = [[62, 54, 60, 50], [180, 120, 200, 100], [True, False, True, False]]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dicc = {k:v for k, v in zip(column_names, values)}\n", + "dicc" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/1-analise-explorat\303\263ria-basica/xxxxx/PR\303\201CTICA_INDEPENDIENTE_SOLUTION.ipynb" "b/1-analise-explorat\303\263ria-basica/xxxxx/PR\303\201CTICA_INDEPENDIENTE_SOLUTION.ipynb" new file mode 100755 index 0000000..035a442 --- /dev/null +++ "b/1-analise-explorat\303\263ria-basica/xxxxx/PR\303\201CTICA_INDEPENDIENTE_SOLUTION.ipynb" @@ -0,0 +1,465 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Prática Independente de Python Avançado- SOLUTION" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define-se uma lista de dicionários com que a prática será desenvolvida." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Dicionário de filmes\n", + "\n", + "movies = [\n", + "{\n", + "\"name\": \"Usual Suspects\", \n", + "\"imdb\": 7.0,\n", + "\"category\": \"Thriller\"\n", + "},\n", + "{\n", + "\"name\": \"Hitman\",\n", + "\"imdb\": 6.3,\n", + "\"category\": \"Action\"\n", + "},\n", + "{\n", + "\"name\": \"Dark Knight\",\n", + "\"imdb\": 9.0,\n", + "\"category\": \"Adventure\"\n", + "},\n", + "{\n", + "\"name\": \"The Help\",\n", + "\"imdb\": 8.0,\n", + "\"category\": \"Drama\"\n", + "},\n", + "{\n", + "\"name\": \"The Choice\",\n", + "\"imdb\": 6.2,\n", + "\"category\": \"Romance\"\n", + "},\n", + "{\n", + "\"name\": \"Colonia\",\n", + "\"imdb\": 7.4,\n", + "\"category\": \"Romance\"\n", + "},\n", + "{\n", + "\"name\": \"Love\",\n", + "\"imdb\": 6.0,\n", + "\"category\": \"Romance\"\n", + "},\n", + "{\n", + "\"name\": \"Bride Wars\",\n", + "\"imdb\": 5.4,\n", + "\"category\": \"Romance\"\n", + "},\n", + "{\n", + "\"name\": \"AlphaJet\",\n", + "\"imdb\": 3.2,\n", + "\"category\": \"War\"\n", + "},\n", + "{\n", + "\"name\": \"Ringing Crime\",\n", + "\"imdb\": 4.0,\n", + "\"category\": \"Crime\"\n", + "},\n", + "{\n", + "\"name\": \"Joking muck\",\n", + "\"imdb\": 7.2,\n", + "\"category\": \"Comedy\"\n", + "},\n", + "{\n", + "\"name\": \"What is the name\",\n", + "\"imdb\": 9.2,\n", + "\"category\": \"Suspense\"\n", + "},\n", + "{\n", + "\"name\": \"Detective\",\n", + "\"imdb\": 7.0,\n", + "\"category\": \"Suspense\"\n", + "},\n", + "{\n", + "\"name\": \"Exam\",\n", + "\"imdb\": 4.2,\n", + "\"category\": \"Thriller\"\n", + "},\n", + "{\n", + "\"name\": \"We Two\",\n", + "\"imdb\": 7.2,\n", + "\"category\": \"Romance\"\n", + "}\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 1" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Escrever uma função que pega um filme (movie) e retorna True se sua pontuação IMDB for maior do que 5.5\n", + "# e False, caso contrário\n", + "def filmeMédiaMaior55(movie):\n", + " return movie['imdb'] > 5.5" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Definimos um filme como exemplo\n", + "m = {\n", + "\"name\": \"We Two\",\n", + "\"imdb\": 7.2,\n", + "\"category\": \"Romance\"\n", + "}\n", + "\n", + "# Testamos a nossa função\n", + "filmeMédiaMaior55(m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 2" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Escrever uma função que retorne a sublista dos filmes com pontuação IMDB maior do que 5.5 \n", + "# (Hint: Pode ser útil usar a função definida no ponto anterior).\n", + "def subListaFilmesMédiaMaior55(filmes):\n", + " ret = []\n", + " for f in filmes:\n", + " if filmeMédiaMaior55(f):\n", + "ret.append(f)", + " return ret" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def subListaFilmesMédiaMaior55(filmes):\n", + " return [f for f in filmes if filmeMédiaMaior55(f)]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'category': 'Thriller', 'imdb': 7.0, 'name': 'Usual Suspects'},\n", + " {'category': 'Action', 'imdb': 6.3, 'name': 'Hitman'},\n", + " {'category': 'Adventure', 'imdb': 9.0, 'name': 'Dark Knight'},\n", + " {'category': 'Drama', 'imdb': 8.0, 'name': 'The Help'},\n", + " {'category': 'Romance', 'imdb': 6.2, 'name': 'The Choice'},\n", + " {'category': 'Romance', 'imdb': 7.4, 'name': 'Colonia'},\n", + " {'category': 'Romance', 'imdb': 6.0, 'name': 'Love'},\n", + " {'category': 'Comedy', 'imdb': 7.2, 'name': 'Joking muck'},\n", + " {'category': 'Suspense', 'imdb': 9.2, 'name': 'What is the name'},\n", + " {'category': 'Suspense', 'imdb': 7.0, 'name': 'Detective'},\n", + " {'category': 'Romance', 'imdb': 7.2, 'name': 'We Two'}]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subListaFilmesMédiaMaior55(movies)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'category': 'Thriller', 'imdb': 7.0, 'name': 'Usual Suspects'},\n", + " {'category': 'Action', 'imdb': 6.3, 'name': 'Hitman'},\n", + " {'category': 'Adventure', 'imdb': 9.0, 'name': 'Dark Knight'},\n", + " {'category': 'Drama', 'imdb': 8.0, 'name': 'The Help'},\n", + " {'category': 'Romance', 'imdb': 6.2, 'name': 'The Choice'},\n", + " {'category': 'Romance', 'imdb': 7.4, 'name': 'Colonia'},\n", + " {'category': 'Romance', 'imdb': 6.0, 'name': 'Love'},\n", + " {'category': 'Comedy', 'imdb': 7.2, 'name': 'Joking muck'},\n", + " {'category': 'Suspense', 'imdb': 9.2, 'name': 'What is the name'},\n", + " {'category': 'Suspense', 'imdb': 7.0, 'name': 'Detective'},\n", + " {'category': 'Romance', 'imdb': 7.2, 'name': 'We Two'}]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subListaFilmesMédiaMaior55(movies)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 3" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Escrever uma função que pega o nome de uma categoria e \n", + "# retorna somente os filmes que pertencem a tal categoria.\n", + "def getFilmesDeCategoria(categoria):\n", + " ret = []\n", + " for m in movies:\n", + " if m['category'] == categoria:\n", + "ret.append(m)", + " return ret" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def getFilmesDeCategoria(categoria):\n", + " return [f for f in movies if f['category'] == categoria]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'category': 'Romance', 'imdb': 6.2, 'name': 'The Choice'},\n", + " {'category': 'Romance', 'imdb': 7.4, 'name': 'Colonia'},\n", + " {'category': 'Romance', 'imdb': 6.0, 'name': 'Love'},\n", + " {'category': 'Romance', 'imdb': 5.4, 'name': 'Bride Wars'},\n", + " {'category': 'Romance', 'imdb': 7.2, 'name': 'We Two'}]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "getFilmesDeCategoria('Romance')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'category': 'Romance', 'imdb': 6.2, 'name': 'The Choice'},\n", + " {'category': 'Romance', 'imdb': 7.4, 'name': 'Colonia'},\n", + " {'category': 'Romance', 'imdb': 6.0, 'name': 'Love'},\n", + " {'category': 'Romance', 'imdb': 5.4, 'name': 'Bride Wars'},\n", + " {'category': 'Romance', 'imdb': 7.2, 'name': 'We Two'}]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "getFilmesDeCategoria('Romance')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 4" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Escrever uma função que receba uma lista de filmes e calcule sua média de pontuação IMDB\n", + "def médiaDeLista(lista):\n", + " soma = 0\n", + " for f in lista:\n", + " soma = soma + f['imdb']\n", + " \n", + " return soma / len(lista)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.486666666666667" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "médiaDeLista(movies)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercício 5" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# BÔNUS: Escrever uma função que receba uma categoria e compute sua média de pontuação IMDB\n", + "#(Hint: funções já definidas podem ser reutilizadas)\n", + "def médiaDeCategoria(categoria):\n", + " filmesDaCategoria = getFilmeDeCategoria(categoria)\n", + " return médiaDeLista(filmesDaCategoria)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.3" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "médiaDeCategoria('Action')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.44" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "médiaDeCategoria('Romance')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/aula.ipynb" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/aula.ipynb" deleted file mode 100644 index c2640b0..0000000 --- "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/aula.ipynb" +++ /dev/null @@ -1,3591 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Regressões\n", - "\n", - "1. Regressão Simples\n", - "2. Regressão Multipla\n", - "3. Modelagem\n", - "4. Causalidade\n", - "\n", - "\n", - "### Regressão Simples \n", - "\n", - "**Pré-requisitos do modelo de regressão Linear**\n", - "\n", - "A maioria dos testes estatísticos depende de suposições sobre as variáveis. Para tirar conclusões sobre as estimativas para um modelo de regressão linear, quatro suposições são feitas sobre o comportamento dos dados:\n", - "\n", - "- A relação entre as variáveis de resposta e de previsão é **linear** na natureza.\n", - "- Os erros são **independentes**. \n", - "- Os erros possuem distribuições **normal**. \n", - "- Os erros têm a **mesma** variância.\n", - "\n", - "\n", - "**LINEAR**\n", - "- Se a relação entre as variáveis ​​de resposta e preditor não for linear, os resultados da análise de regressão irão subestimar a verdadeira relação. Isso é melhor verificado com um gráfico de dispersão dos valores previstos versus os valores observados.\n", - "\n", - "\n", - "**INDEPENDENTES**\n", - "- Séries autocorrelacionadas o que não é o nosso caso. Um gráfico de latência dos resíduos verifica se eles são aleatórios. Se aleatório, os dados não devem exibir nenhuma estrutura identificável em um gráfico de latência.\n", - "\n", - "\n", - "**NORMAL**\n", - "- Se a distribuição de erro for significativamente não normal, os intervalos de previsão não serão confiáveis. O melhor teste para erros normalmente distribuídos é um gráfico de probabilidade normal dos resíduos . Se a distribuição for normal, os pontos em tal plotagem devem se aproximar da linha de referência diagonal.\n", - "\n", - "\n", - "- As violações da normalidade freqüentemente surgem porque as distribuições das variáveis ​​são significativamente não-normais e / ou a suposição de linearidade é violada. Em tais casos, uma transformação não linear de variáveis pode resolver ambos os problemas. Se as distribuições de algumas das variáveis ​​forem extremamente assimétricas ou de cauda longa, elas podem não se encaixar em um modelo linear com erros normalmente distribuídos.\n", - "\n", - "\n", - "- Como os dados reais raramente apresentam erros que normalmente são distribuídos normalmente e, como uma violação significativa da suposição de distribuição normal pode indicar outro problema com as premissas do modelo e / ou a presença de pontos de dados influentes, geralmente é útil se concentrar mais em quaisquer violações de dados. as outras suposições e / ou a influência de alguns outliers (que podem ser os principais responsáveis ​​por violações da normalidade de qualquer maneira).\n", - "\n", - "\n", - "**VARIÂNCIA**\n", - "- Se a variação dos erros for marcadamente diferente em vários valores, isso pode levar à distorção dos resultados e enfraquecer a análise. Essa suposição pode ser verificada examinando-se um gráfico residual dos valores previstos versus os resíduos padronizados . Idealmente, os resíduos são aleatoriamente espalhados em torno de 0, fornecendo uma distribuição relativamente uniforme. A largura vertical da dispersão não deve aparecer para aumentar ou diminuir os valores ajustados.\n", - "\n", - "\n", - "**Regressões Simples**\n", - "\n", - "- O objetivo é ajustar a inclinação (w1 nesse exemplo) e o intercepto (b) de modo que a regressão linear (a \"linha\" laranja) minimize a soma dos resíduos (as distâncias entre as observações, \"bolas azuis\" e os valores esperados pela regressão, os resíduos são as distâncias verticais.)\n", - "\n", - "\n", - "\n", - "#### Gerando dados para treinarmos.\n", - "\n", - "- rng é o método de números aleatórios que estamos criando com um seed fixo (123) para tornar-se reprodutivel;\n", - "- Como vamos gerar duas variáveis, vamos definir duas médias, 100 e 1000;\n", - "- Na variável cov está o \"truque\" para gerar dados fakes para uma regressão linear, estamos definindo uma matriz 2x2 (2 linhas e 2 colunas) e dizendo que a covariância entre as duas séries de números aleatórios que estamos criando **não** são independentes e essa não independencia é o que vamos tentar capturar com a regressão linear.\n", - "- Na variável sample estamos criando duas distribuições normal que seguem certa regra de covariância que passamos, por isso a ideia de elas são \"multivariadas\" (ou seja, os valores de uma série dependem da outra).\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import scipy.stats\n", - "import seaborn as sns\n", - "%matplotlib inline\n", - "%config InlineBackend.figure_formats=['svg']\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/svg+xml": [ - "\r\n", - "\r\n", - "\r\n", - "\r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - "\r\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "rng = np.random.RandomState(1)\n", - "\n", - "x = 10 * rng.rand(500)\n", - "y = 3 * x -5 + 4*rng.randn(500)\n", - "\n", - "plt.scatter(x, y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Solução analitica\n", - " $w = (X^T X)^{-1} X^T y$\n", - " \n", - " [derivação](https://stats.stackexchange.com/questions/46151/how-to-derive-the-least-square-estimator-for-multiple-linear-regression) \n", - "
\n", - "\n", - "\n", - "Onde:\n", - "- w é o **vetor** de pesos (nossos parâmetros estimados)\n", - "- X é a matriz de valores, onde cada linha é uma observação e cada coluna é uma variável\n", - "- o Sobrescrito T indica \"Transposto\", ou seja, a matriz com um T é a matriz transposta.\n", - "- y é simplesmente o vetor da variável y." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Intercepto: -5.14\n", - "Inclinação: 3.06\n" - ] - } - ], - "source": [ - "X = x[:, np.newaxis]\n", - "\n", - "# Um ponto importante aqui é adicionar uma coluna de \"1s\" que será nosso intercepto.\n", - "Xb = np.hstack((np.ones((X.shape[0], 1)), X))\n", - "w = np.zeros(X.shape[1])\n", - "\n", - "z = np.linalg.inv(np.dot(Xb.T, Xb))\n", - "w = np.dot(z, np.dot(Xb.T, y))\n", - "b, w1 = w[0], w[1]\n", - "print('Intercepto: %.2f' % b)\n", - "print('Inclinação: %.2f' % w1)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Intercepto beta_0: -5.135054100148473\n", - "Inclinação beta_1: 3.05797193870835\n" - ] - }, - { - "data": { - "image/svg+xml": [ - "\r\n", - "\r\n", - "\r\n", - "\r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - "\r\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from sklearn.linear_model import LinearRegression\n", - "\n", - "model = LinearRegression(fit_intercept=True)\n", - "\n", - "model.fit(x[:, np.newaxis], y)\n", - "\n", - "xfit = np.linspace(0, 10, 100)\n", - "yhat = model.predict(xfit[:, np.newaxis])\n", - "\n", - "plt.scatter(x, y)\n", - "plt.plot(xfit, yhat)\n", - "\n", - "print(\"Intercepto beta_0: \", model.intercept_)\n", - "print(\"Inclinação beta_1: \", model.coef_[0])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Qualidade do Ajuste\n", - "\n", - "#### Erros Quadraticos Médios \n", - "(MSE, Mean Squared Error)\n", - "\n", - "$$MSE = \\frac{1}{n} \\sum_{i=1}^{n} \\big(y_i - \\hat{y_i}\\big)^2$$\n", - "\n", - "- Note que o MSE é dependente da escala, e retorna $unidade^2$\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "15.905333715527409" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y_predicted = x*w1 + b\n", - "mse = np.mean((y - y_predicted)**2)\n", - "mse" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.988149159137282" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# R = Root, Raiz\n", - "rmse = np.sqrt(mse)\n", - "rmse" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0.5,0,'index')" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/svg+xml": [ - "\r\n", - "\r\n", - "\r\n", - "\r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - " \r\n", - "\r\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(np.arange(x.shape[0]), y - y_predicted)\n", - "plt.ylabel('vertical offset')\n", - "plt.xlabel('index')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Coeficiente de Determinação \n", - "ou $R^2$\n", - "\n", - "- Soma total dos quadrados (variabilidade da variável resposta ou alvo, proporcional à variância do y):\n", - "\n", - "$$SS_{total} = \\sum_{i=1}^{n} \\big( y_i - \\bar{y_i} \\big)^2$$\n", - "\n", - "- Soma dos Residuos ao Quadrado:\n", - "\n", - "$$SS_{residual} = \\sum_{i=1}^{n} \\big( \\hat{y_i} - \\bar{y_i} \\big)^2$$\n", - "\n", - "- Coeficiente de Determinação $R^2$:\n", - "\n", - "$$R^2 = \\frac{SS_{residual}}{SS_{total}}$$" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.1621615323645781" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Método raiz\n", - "mean_y = np.mean(y)\n", - "SS_total = np.sum((y - mean_y)**2)\n", - "SS_residual = np.sum((yhat - mean_y)**2)\n", - "r_squared = SS_residual / SS_total\n", - "r_squared" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.8379164761712601" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# método nutella\n", - "slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)\n", - "r_value**2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "# exemplos com arquivo ibge\n", - "# mostrar a diferença entre regressão correlação" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/2019-02-12_12-55-10.jpg" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/2019-02-12_12-55-10.jpg" new file mode 100755 index 0000000..26bbdd9 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/2019-02-12_12-55-10.jpg" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/Curso_de_Economia_Informa\303\247\303\265es_2013.pdf" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/Curso_de_Economia_Informa\303\247\303\265es_2013.pdf" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/R2 eqs.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/R2 eqs.png" new file mode 100755 index 0000000..6bae64e Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/R2 eqs.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/SEbformulae.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/SEbformulae.png" new file mode 100755 index 0000000..85344b6 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/SEbformulae.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/SSEvenn.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/SSEvenn.png" new file mode 100755 index 0000000..1460b43 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/SSEvenn.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/Teste_T_Gr\303\241fico_bicaudal.gif" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/Teste_T_Gr\303\241fico_bicaudal.gif" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/bivarvsmulti slope calc.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/bivarvsmulti slope calc.png" new file mode 100755 index 0000000..68fcd20 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/bivarvsmulti slope calc.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/bode.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/bode.png" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/cov eqs.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/cov eqs.png" new file mode 100755 index 0000000..13b6b64 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/cov eqs.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/cov-cor eqs.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/cov-cor eqs.png" new file mode 100755 index 0000000..1367113 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/cov-cor eqs.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/cov-cor.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/cov-cor.png" new file mode 100755 index 0000000..631dca0 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/cov-cor.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/dv measerror.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/dv measerror.png" new file mode 100755 index 0000000..3456cf6 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/dv measerror.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/erros.PNG" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/erros.PNG" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/houses_tableau.jpg" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/houses_tableau.jpg" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/iv measerror.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/iv measerror.png" new file mode 100755 index 0000000..ef1782a Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/iv measerror.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/linear_regression_scheme.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/linear_regression_scheme.png" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/multicoll.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/multicoll.png" new file mode 100755 index 0000000..40b4a6b Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/multicoll.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/multireg.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/multireg.png" new file mode 100755 index 0000000..11911c4 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/multireg.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/normal.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/normal.png" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/ovb case 1.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/ovb case 1.png" new file mode 100755 index 0000000..5536a1e Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/ovb case 1.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/ovb case 2.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/ovb case 2.png" new file mode 100755 index 0000000..ab8ccb7 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/ovb case 2.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/partY venn1.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/partY venn1.png" new file mode 100755 index 0000000..7aba2df Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/partY venn1.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/partY2.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/partY2.png" new file mode 100755 index 0000000..08dcd37 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/partY2.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/regiao_critica_bilateral_aceitacao_exemplo.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/regiao_critica_bilateral_aceitacao_exemplo.png" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/slopecalc.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/slopecalc.png" new file mode 100755 index 0000000..bc063ea Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/slopecalc.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/var calc w scatter.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/var calc w scatter.png" new file mode 100755 index 0000000..a1c14d4 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/var calc w scatter.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/vareqs.png" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/vareqs.png" new file mode 100755 index 0000000..95884a0 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/img/vareqs.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/regressao_simples.ipynb" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/regressao_simples.ipynb" new file mode 100755 index 0000000..df94e7c --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/regressao_simples.ipynb" @@ -0,0 +1,6078 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Análise de dados e introdução a Regressão\n", + "\n", + "\n", + "## Forma do modelo linear\n", + "\n", + "$y = \\beta_0 + \\beta_1x_1 + \\beta_2x_2 + ... + \\beta_nx_n$\n", + "- $y$ é a variável dependente (a resposta)\n", + "- $\\beta_0$ é o termo de intercepção\n", + "- $\\beta_1$ é o coeficiente para $x_1$ \n", + "- $\\beta_n$ é o coeficiente para $x_n$\n", + "\n", + "Os **$\\beta$** são os chamados **_Coeficientes do modelo_**\n", + "\n", + "- Esses valores são estimados (ou \"aprendidos\") no processo de adaptação do modelo utilizando o critério ** mínimos quadrados **.\n", + "- Especificamente, encontramos a linha (matematicamente) que minimiza a adição ** de quadrados de resíduos ** (ou “total de erros quadráticos”).\n", + "- E quando já tivermos aprendido esses coeficientes, podemos usar o modelo para prever a resposta.\n", + "\n", + "## Pré-requisitos do modelo de regressão Linear\n", + "\n", + "A maioria dos testes estatísticos depende de suposições sobre as variáveis. Para tirar conclusões sobre as estimativas para um modelo de regressão linear, quatro suposições são feitas sobre o comportamento dos dados:\n", + "\n", + "- A relação entre as variáveis de resposta e de previsão é **linear** na natureza.\n", + "- Os erros são **independentes**. \n", + "- Os erros possuem distribuições **normal**. \n", + "- Os erros têm a **mesma** variância.\n", + "\n", + "\n", + "**LINEAR**\n", + "- Se a relação entre as variáveis ​​de resposta e preditor não for linear, os resultados da análise de regressão irão subestimar a verdadeira relação. Isso é melhor verificado com um gráfico de dispersão dos valores previstos versus os valores observados.\n", + "\n", + "\n", + "**INDEPENDENTES**\n", + "- Séries autocorrelacionadas o que não é o nosso caso. Plotar um histograma dos resíduos pode ajudar a verificar se eles são aleatórios. Se aleatório, os dados não devem exibir nenhuma estrutura identificável. Além disso, é comum testarmos a correlação dos residuos com as variaveis independentes.\n", + "\n", + "\n", + "**NORMAL**\n", + "- Se a distribuição de erro for significativamente não normal, os intervalos de previsão não serão confiáveis. O melhor teste para erros normalmente distribuídos é um gráfico de probabilidade normal dos resíduos . Se a distribuição for normal, os pontos em tal plotagem devem se aproximar da linha de referência diagonal.\n", + "\n", + "\n", + "- As violações da normalidade freqüentemente surgem porque as distribuições das variáveis ​​são significativamente não-normais e / ou a suposição de linearidade é violada. Em tais casos, uma transformação não linear de variáveis pode resolver ambos os problemas. Se as distribuições de algumas das variáveis ​​forem extremamente assimétricas ou de cauda longa, elas podem não se encaixar em um modelo linear com erros normalmente distribuídos.\n", + "\n", + "\n", + "- Como os dados reais raramente apresentam erros que normalmente são distribuídos normalmente e, como uma violação significativa da suposição de distribuição normal pode indicar outro problema com as premissas do modelo e / ou a presença de pontos de dados influentes, geralmente é útil se concentrar mais em quaisquer violações de dados. as outras suposições e / ou a influência de alguns outliers (que podem ser os principais responsáveis ​​por violações da normalidade de qualquer maneira).\n", + "\n", + "\n", + "**VARIÂNCIA**\n", + "- Se a variação dos erros for marcadamente diferente em vários valores, isso pode levar à distorção dos resultados e enfraquecer a análise. Essa suposição pode ser verificada examinando-se um gráfico residual dos valores previstos versus os resíduos padronizados . Idealmente, os resíduos são aleatoriamente espalhados em torno de 0, fornecendo uma distribuição relativamente uniforme. A largura vertical da dispersão não deve aparecer para aumentar ou diminuir os valores ajustados.\n", + "\n", + "\n", + "**Regressões Simples**\n", + "\n", + "- O objetivo é ajustar a inclinação (w1 nesse exemplo) e o intercepto (b) de modo que a regressão linear (a \"linha\" laranja) minimize a soma dos resíduos (as distâncias entre as observações, \"bolas azuis\" e os valores esperados pela regressão, os resíduos são as distâncias verticais.)\n", + "\n", + "\n", + "\n", + "\n", + "#### Gerando dados para treinarmos.\n", + "\n", + "- rng é o método de números aleatórios que estamos criando com um seed fixo (123) para tornar-se reprodutivel;\n", + "- Como vamos gerar duas variáveis, vamos definir duas médias, 100 e 1000;\n", + "- Na variável cov está o \"truque\" para gerar dados fakes para uma regressão linear, estamos definindo uma matriz 2x2 (2 linhas e 2 colunas) e dizendo que a covariância entre as duas séries de números aleatórios que estamos criando **não** são independentes e essa não independencia é o que vamos tentar capturar com a regressão linear.\n", + "- Na variável sample estamos criando duas distribuições normal que seguem certa regra de covariância que passamos, por isso a ideia de elas são \"multivariadas\" (ou seja, os valores de uma série dependem da outra).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import scipy.stats\n", + "import seaborn as sns\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_formats=['svg']\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Começaremos com a regressão linear mais familiar, um ajuste linear aos dados. Um ajuste em linha reta é um modelo da forma de:\n", + "$$y = a * x + b $$\n", + "\n", + "Onde $b$ é chamado de intercepto e $a$ de inclinação.\n", + "\n", + "Considere os seguintes dados, que estão espalhados sobre uma linha com uma inclinação de 4 e um intercepto de -5:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rng = np.random.RandomState(42)\n", + "\n", + "x = 10 * rng.rand(200)\n", + "y = 3 * x -5 + 4*rng.randn(200)\n", + "\n", + "plt.scatter(x, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Solução analitica\n", + " $w = (X^T X)^{-1} X^T y$\n", + " \n", + " [derivação](https://stats.stackexchange.com/questions/46151/how-to-derive-the-least-square-estimator-for-multiple-linear-regression) \n", + "
\n", + "\n", + "\n", + "Onde:\n", + "- w é o **vetor** de pesos (nossos parâmetros estimados)\n", + "- X é a matriz de valores, onde cada linha é uma observação e cada coluna é uma variável\n", + "- o Sobrescrito T indica \"Transposto\", ou seja, a matriz com um T é a matriz transposta.\n", + "- y é simplesmente o vetor da variável y." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Intercepto: -4.58\n", + "Inclinação: 2.97\n" + ] + } + ], + "source": [ + "X = x[:, np.newaxis]\n", + "\n", + "# Um ponto importante aqui é adicionar uma coluna de \"1s\" que será nosso intercepto.\n", + "Xb = np.hstack((np.ones((X.shape[0], 1)), X))\n", + "w = np.zeros(X.shape[1])\n", + "\n", + "z = np.linalg.inv(np.dot(Xb.T, Xb))\n", + "w = np.dot(z, np.dot(Xb.T, y))\n", + "b, w1 = w[0], w[1]\n", + "\n", + "print('Intercepto: %.2f' % b)\n", + "print('Inclinação: %.2f' % w1)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Intercepto beta_0: -4.579195396156711\n", + "Inclinação beta_1: 2.9687715727300112\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "\n", + "model = LinearRegression(fit_intercept=True)\n", + "\n", + "model.fit(x[:, np.newaxis], y)\n", + "\n", + "xfit = np.linspace(0, 10, 100)\n", + "yhat = model.predict(xfit[:, np.newaxis])\n", + "\n", + "plt.scatter(x, y)\n", + "plt.plot(xfit, yhat)\n", + "\n", + "print(\"Intercepto beta_0: \", model.intercept_)\n", + "print(\"Inclinação beta_1: \", model.coef_[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Qualidade do Ajuste\n", + "\n", + "#### Erros Quadraticos Médios \n", + "(MSE, Mean Squared Error)\n", + "\n", + "$$MSE = \\frac{1}{n} \\sum_{i=1}^{n} \\big(y_i - \\hat{y_i}\\big)^2$$\n", + "\n", + "- Note que o MSE é dependente da escala, e retorna $unidade^2$\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14.941219212655671" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_predicted = x*w1 + b\n", + "mse = np.mean((y - y_predicted)**2)\n", + "mse" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3.8653873302239288" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# R = Root, Raiz\n", + "rmse = np.sqrt(mse)\n", + "rmse" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5,0,'index')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(np.arange(x.shape[0]), y - y_predicted)\n", + "plt.ylabel('vertical offset')\n", + "plt.xlabel('index')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Coeficiente de Determinação \n", + "ou $R^2$\n", + "\n", + "- Soma total dos quadrados (variabilidade da variável resposta ou alvo, proporcional à variância do y):\n", + "\n", + "$$SS_{total} = \\sum_{i=1}^{n} \\big( y_i - \\bar{y_i} \\big)^2$$\n", + "\n", + "- Soma dos Residuos ao Quadrado:\n", + "\n", + "$$SS_{residual} = \\sum_{i=1}^{n} \\big( \\hat{y_i} - \\bar{y_i} \\big)^2$$\n", + "\n", + "- Coeficiente de Determinação $R^2$:\n", + "\n", + "$$R^2 = \\frac{SS_{residual}}{SS_{total}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.41203028665786257" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Método raiz\n", + "mean_y = np.mean(y)\n", + "SS_total = np.sum((y - mean_y)**2)\n", + "SS_residual = np.sum((yhat - mean_y)**2)\n", + "r_squared = SS_residual / SS_total\n", + "r_squared" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8361743416805735" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# método nutella\n", + "slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)\n", + "r_value**2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analisando a relação entre Salario e Educação\n", + "\n", + "Vamos testar uma hipótese. Será que estudar aumenta nossos salarios?\n", + "\n", + "Vamos usar uma regressão de Salario ~ Estudo para nos ajudar a responder." + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0ididadesexoanos_estudocor/racasalarioestado_civilregiao
001.100190e+1053homem5.0Parda63600.0000001.0norte
111.100190e+1049mulher8.0AmarelaNaN1.0norte
221.100190e+1022mulher11.0Indigena4352.4003910.0nordeste
331.100190e+1055homem15.0Amarela96600.0000001.0norte
441.100190e+1056mulher15.0Amarela157800.0000001.0norte
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 id idade sexo anos_estudo cor/raca \\\n", + "0 0 1.100190e+10 53 homem 5.0 Parda \n", + "1 1 1.100190e+10 49 mulher 8.0 Amarela \n", + "2 2 1.100190e+10 22 mulher 11.0 Indigena \n", + "3 3 1.100190e+10 55 homem 15.0 Amarela \n", + "4 4 1.100190e+10 56 mulher 15.0 Amarela \n", + "\n", + " salario estado_civil regiao \n", + "0 63600.000000 1.0 norte \n", + "1 NaN 1.0 norte \n", + "2 4352.400391 0.0 nordeste \n", + "3 96600.000000 1.0 norte \n", + "4 157800.000000 1.0 norte " + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "df = pd.read_csv(r'./data/data.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Primeiro vamos ver o Scatter plot e tentar inferir alguma relação" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sample = df.dropna().sample(1000, random_state=7)\n", + "plt.scatter(sample['anos_estudo'], sample['salario'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dificil inferir algo desse grafico, mas já vemos que tem alguns outliners que não fazem muito sentido, vamos filtra-los." + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mascara_salario = df.salario<500000\n", + "sample = df[mascara_salario].dropna().sample(1000, random_state=7)\n", + "\n", + "plt.scatter(sample['anos_estudo'], sample['salario'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Analisando a correlação" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
anos_estudosalario
anos_estudo1.000000.32395
salario0.323951.00000
\n", + "
" + ], + "text/plain": [ + " anos_estudo salario\n", + "anos_estudo 1.00000 0.32395\n", + "salario 0.32395 1.00000" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sample[['anos_estudo','salario']].corr()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Legal! Correlação de 0.3 responde nossa pergunta. Quanto mais estudo mais salario, além disso a taxa é de 30% de \"transferência\" entre estudo e salario. Está certo isso? Quais os problemas?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vamos rodar uma regressão para ver as diferenças .." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Intercepto beta_0: -3296.263776719017\n", + "Inclinação beta_1: 1707.801386464875\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\marcos\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:3: FutureWarning: reshape is deprecated and will raise in a subsequent release. Please use .values.reshape(...) instead\n", + " This is separate from the ipykernel package so we can avoid doing imports until\n" + ] + } + ], + "source": [ + "model = LinearRegression(fit_intercept=True)\n", + "\n", + "model.fit(sample['anos_estudo'].reshape(-1, 1), sample['salario'])\n", + "\n", + "xfit = np.linspace(0, 14, 100)\n", + "yhat = model.predict(xfit[:, np.newaxis])\n", + "\n", + "print(\"Intercepto beta_0: \", model.intercept_)\n", + "print(\"Inclinação beta_1: \", model.coef_[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R^2: 0.10494385916738314\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\marcos\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: reshape is deprecated and will raise in a subsequent release. Please use .values.reshape(...) instead\n", + " \"\"\"Entry point for launching an IPython kernel.\n" + ] + } + ], + "source": [ + "print(\"R^2: \", model.score(sample['anos_estudo'].reshape(-1, 1), sample['salario']))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/regress\303\265es_multiplas_com_diagramas_de_venn.ipynb" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/regress\303\265es_multiplas_com_diagramas_de_venn.ipynb" new file mode 100755 index 0000000..26c929c --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/regress\303\265es_multiplas_com_diagramas_de_venn.ipynb" @@ -0,0 +1,149 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Regressões Visual\n", + "\n", + "Modelos de regressão podem ser representados visualmente com **diagramas de Venn** (também chamados de diagramas de Ballentine por sua semelhança com o logotipo da cerveja ). Nestes diagramas, cada variável no modelo de regressão é representada por um círculo diferente. Nos modelos básicos, um círculo azul representa a variável dependente (Y), enquanto os círculos vermelhos representam uma variável independente (X). Os tamanhos dos círculos e a maneira como eles se sobrepõem ilustram vários aspectos das variáveis e como eles se relacionam entre si.\n", + "\n", + "## Variação\n", + "\n", + "### Variação no Y\n", + "\n", + "\n", + "\n", + "\n", + "### Separanndo a Variação Total entre explicada e ruido\n", + "\n", + "\n", + "\n", + "\n", + "O tamanho de cada círculo representa a variação dessa variável. Abaixo, vemos que a variância da variável X2 é maior que a variância de X1.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Covariância / Correlação\n", + "\n", + "Quando duas variáveis ​​covary / estão correlacionadas, essa relação é representada pela sobreposição entre os dois círculos. No diagrama básico abaixo, vemos que existe uma relação entre as variáveis ​​Y e X1. A área de sobreposição (A) representa a covariância de X1 e Y. Observe que uma sobreposição em um diagrama de Ballentine mostra apenas que a covariância existe; não indica se a covariância é positiva ou negativa.\n", + "\n", + "\n", + "\n", + "\n", + "O diagrama mais complexo abaixo mostra três variáveis ​​inter-relacionadas.\n", + "\n", + "\n", + "\n", + "## Variação explicada (R 2 )\n", + "Como A representa o grau em que X1 e Y variam juntos, também podemos dizer que A é a porção da variância de Y que é explicada por X1 (ou pela variação em X1). Assim, o R2 da regressão de Y em X1 é igual à área de sobreposição (A) dividida pela área total representando Y (A + B).\n", + "\n", + "\n", + "\n", + "## Valor dos Betas (inclinação da regressão)\n", + "Lembre-se de que o cálculo da inclinação de regressão depende da variância de X e da covariância entre X e Y. Abaixo, a variância de X é representada pelo círculo vermelho (o total das seções A e C) e a covariância entre X e Y é representada por a sobreposição (seção A). A visualização das partes do Ballentine usadas no cálculo do declive de regressão ajudará mais tarde a entender como as variáveis ​​independentes afetam umas às outras no contexto de regressão múltipla.\n", + "\n", + "\n", + "\n", + "\n", + "## Erro padrão dos Betas\n", + "\n", + "Lembre-se de que calcular o erro padrão da inclinação começa com a soma dos termos de erro quadráticos (o SSE).\n", + "\n", + "\n", + "\n", + "Dentro do diagrama de Ballentine, podemos visualizar o SSE como a porção inexplicada da variância de Y.\n", + "\n", + "\n", + "\n", + "Podemos inferir a partir deles que existem três maneiras de reduzir o erro padrão do coeficiente (o que torna estreito o intervalo de confiança ao redor da inclinação): 1. aumentar o tamanho da amostra; 2. explicar mais variância de Y (isto é, adicionar variáveis ​​de controle); ou 3. aumentar a variância de X.\n", + "\n", + "## Comparação de modelos\n", + "O Ballentine pode ilustrar por que os declives de regressão podem mudar quando você adiciona mais variáveis ​​a um modelo. No modelo bivariado que discutimos até agora, a seção A representa a covariância de X1 e Y, que é usada no cálculo da inclinação. Em outras palavras, a seção A é a variação em Y que é explicada por X1.\n", + "\n", + "\n", + "\n", + "\n", + "Compare isso com um modelo que adiciona uma segunda variável independente. No contexto de regressão múltipla, estamos interessados ​​na variação em Y que é explicada de forma única por cada variável independente. Abaixo, a seção A é a variação em Y que é explicada exclusivamente por X1, a seção B é a variação em Y que é explicada exclusivamente por X2, e a seção C é a variação em Y que é explicada em conjunto por X1 e X2. Na regressão múltipla, essa variação em Y que não pode ser explicada apenas por X1 ou X2 (seção C) é retirada dos cálculos de inclinação.\n", + "\n", + "\n", + "\n", + "Como vimos no caso bivariado anterior, ambas as seções A e C seriam atribuídas a X1 se X2 fosse omitido do modelo. Da mesma forma, a seção C (juntamente com a seção B) seria atribuída a X2 se X1 fosse omitido do modelo. Essa é uma covariância contaminada que distorcerá nossas estimativas de inclinação de regressão se X1 ou X2 forem omitidos do modelo.\n", + "\n", + "Note também que a adição de uma variável altera ligeiramente a fórmula para calcular os declives de regressão. Abaixo, a fórmula de inclinação à esquerda é para a regressão bivariada e a da direita para a regressão múltipla.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Viés da Variável Omitida\n", + "Como visto na subseção anterior, omitir uma variável de um modelo de regressão pode influenciar as estimativas de inclinação para as variáveis ​​incluídas no modelo. O viés ocorre apenas quando a variável omitida está correlacionada com a variável dependente e com uma das variáveis ​​independentes incluídas.\n", + "\n", + "Abaixo, o declive para X1 será polarizado se X2 for omitido do modelo. O viés deriva da covariância contaminada na seção B, mas a direção / tamanho do viés não pode ser determinada a partir do diagrama.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Abaixo, o declive para X1 não será polarizado se X2 for omitido do modelo.\n", + "\n", + "\n", + "\n", + "\n", + "Tenha em mente que, em ambos os casos, omitir a variável X2 alterará o erro padrão calculado para X1.\n", + "## Erro de medição\n", + "O erro de medição em uma variável pode afetar as estimativas de inclinação e os erros padrão na regressão. Observe que o erro de medição é sempre um erro aleatório. O erro de medição faz com que a variação dessa variável aumente. Como o erro de medição pode surgir em uma variável dependente ou independente, os efeitos de ambas as situações são detalhados nesta seção.\n", + "\n", + "O erro de medição na variável dependente causa variação adicional em Y. Nos Ballentines abaixo, isso é ilustrado pelo maior círculo Y à direita. Com base em nossas fórmulas para o declive e erro padrão, podemos inferir do diagrama que as estimativas de inclinação serão idênticas, mas que o erro padrão será maior no caso à direita. O erro padrão inflacionado, por sua vez, tornará menos provável que o coeficiente de inclinação seja estatisticamente significativo.\n", + "\n", + "\n", + "\n", + "\n", + "Erro de medição na variável independente causa variação adicional em X. Nos Ballentines abaixo, isso é refletido pelo círculo X maior à direita. Aqui podemos inferir do diagrama que, para o caso à direita, tanto a estimativa de inclinação quanto o erro padrão diminuirão. Isto é, a inclinação é empurrada para zero (seja positiva ou negativa); isso é chamado de atenuação .\n", + "\n", + "\n", + "\n", + "## Multicolinearidade\n", + "A multicolinearidade surge quando as variáveis ​​independentes em um modelo de regressão estão fortemente correlacionadas entre si. Isso dificulta ver os efeitos isolados de cada uma das variáveis ​​independentes na variável dependente. Isso também causa a inflação dos erros padrão de cada inclinação, o que aumenta os intervalos de confiança correspondentes e torna menos provável que os coeficientes de inclinação sejam estatisticamente significativos. Existe um alto grau de multicolinearidade no modelo abaixo. Quanto maior a multicolinearidade, menor a área B total e, portanto, maior o erro padrão da inclinação.\n", + "\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/resumo.txt" "b/2-analise-explorat\303\263ria-inter/01-regress\303\265es1/resumo.txt" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/aula.ipynb" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/aula.ipynb" deleted file mode 100644 index 1a7d743..0000000 --- "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/aula.ipynb" +++ /dev/null @@ -1,162 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Regressões Multiplas\n", - "\n", - "Exemplo (1) Modelando preços de casas nos EUA.\n", - "\n", - "Features:\n", - "- **price** - The last price the house was sold for\n", - "- **num_bed** - The number of bedrooms\n", - "- **num_bath** - The number of bathrooms (fractions mean the house has a toilet-only or shower/bathtub-only bathroom)\n", - "- **size_house** (includes basement) - The size of the house\n", - "- **size_lot** - The size of the lot\n", - "- **num_floors** - The number of floors\n", - "- **is_waterfront** - Whether or not the house is a waterfront house (0 means it is not a waterfront house whereas 1 means that it is a waterfront house)\n", - "- **condition** - How worn out the house is. Ranges from 1 (needs repairs all over the place) to 5 (the house is very well maintained)\n", - "- **size_basement** - The size of the basement\n", - "- **year_built** - The year the house was built\n", - "- **renovation_date** - The year the house was renovated for the last time. 0 means the house has never been renovated\n", - "- **zip** - The zip code\n", - "- **latitude** - Latitude\n", - "- **longitude** - Longitude\n", - "- **avg_size_neighbor_houses** - The average house size of the neighbors\n", - "- **avg_size_neighbor_lot** - The average lot size of the neighbors" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import statsmodels.formula.api as smf\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "from scipy import stats\n", - "from sklearn import linear_model\n", - "from sklearn.metrics import mean_squared_error, r2_score\n", - "\n", - "import warnings\n", - "warnings.filterwarnings(\"ignore\")\n", - "\n", - "%matplotlib inline\n", - "%config InlineBackend.figure_formats=['svg']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = pd.read_csv('house_sales.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df.describe()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "corrmat = df[['price','size_house','num_bath','size_house','size_lot','num_floors','is_waterfront','year_built','latitude','longitude','avg_size_neighbor_houses','avg_size_neighbor_lot']].corr()\n", - "cols = corrmat.nlargest(10, 'price')['price'].index\n", - "cm = np.corrcoef(df[cols].values.T)\n", - "sns.set(font_scale=1.15)\n", - "f, ax = plt.subplots(figsize=(12, 9))\n", - "hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.display import Image\n", - "Image(filename=r'img\\houses_tableau.jpg')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "function1 = '''\n", - "price ~ \n", - " + size_house\n", - " + num_bath\n", - " + size_house\n", - " + size_lot\n", - " + num_floors\n", - " + is_waterfront\n", - " + year_built\n", - " + latitude\n", - " + longitude\n", - " + avg_size_neighbor_houses\n", - " + avg_size_neighbor_lot\n", - "'''\n", - "\n", - "model1 = smf.ols(function1, df).fit()\n", - "print(model1.summary2())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/exercicio_titulos_fazem_diferenca.ipynb" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/exercicio_titulos_fazem_diferenca.ipynb" new file mode 100755 index 0000000..1f90846 --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/exercicio_titulos_fazem_diferenca.ipynb" @@ -0,0 +1,572 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import statsmodels.formula.api as smf\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('data.csv', encoding='latin1')" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0ididadesexoanos_estudocor/racasalarioestado_civilregiao
001.100190e+1053homem5.0Parda63600.0000001.0norte
111.100190e+1049mulher8.0AmarelaNaN1.0norte
221.100190e+1022mulher11.0Indigena4352.4003910.0nordeste
331.100190e+1055homem15.0Amarela96600.0000001.0norte
441.100190e+1056mulher15.0Amarela157800.0000001.0norte
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 id idade sexo anos_estudo cor/raca \\\n", + "0 0 1.100190e+10 53 homem 5.0 Parda \n", + "1 1 1.100190e+10 49 mulher 8.0 Amarela \n", + "2 2 1.100190e+10 22 mulher 11.0 Indigena \n", + "3 3 1.100190e+10 55 homem 15.0 Amarela \n", + "4 4 1.100190e+10 56 mulher 15.0 Amarela \n", + "\n", + " salario estado_civil regiao \n", + "0 63600.000000 1.0 norte \n", + "1 NaN 1.0 norte \n", + "2 4352.400391 0.0 nordeste \n", + "3 96600.000000 1.0 norte \n", + "4 157800.000000 1.0 norte " + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "count 66036.000000\n", + "mean 8.686065\n", + "std 3.374522\n", + "min 5.000000\n", + "25% 5.000000\n", + "50% 8.000000\n", + "75% 11.000000\n", + "max 15.000000\n", + "Name: anos_estudo, dtype: float64" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.anos_estudo.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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tCSpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpMWM4JNmUZE+Sx/pqJyXZlmRnd7+8qyfJLUl2JXk0yXl966ztxu9Msrav/qYkO7p1bkmSuZ6kJOnoHMmew23A6oNq64HtVbUS2N4tA1wKrOxu64BboRcmwE3Am4HzgZsOBEo3Zl3fege/liRpxGYMh6r6ArD3oPIaYHP3eDNwRV/99up5ADgxyanAJcC2qtpbVS8A24DV3XOvraovVVUBt/dtS5I0JsOec5ioqucAuvtTuvppwNN946a72uHq0wPqkqQxWjbH2xt0vqCGqA/eeLKO3iEoJiYmmJqaGqJFuPGc/UOtBwz9mgD79u2b1fqLkXMeLd/bo7PU5zxsODyf5NSqeq47NLSnq08DZ/SNOx14tqtPHlSf6uqnDxg/UFVtBDYCrFq1qiYnJw819LCuW3/fUOsB7L5muNeE3jffsD0vVs55tHxvj85Sn/Owh5W2AAeuOFoL3NtXv7a7aukC4MXusNP9wMVJlncnoi8G7u+e+16SC7qrlK7t25YkaUxm3HNIcie93/pPTjJN76qjDcDdSa4HngKu7IZvBS4DdgEvA+8AqKq9SW4GHuzGfaCqDpzkfhe9K6JeBXymu0mSxmjGcKiqqw/x1EUDxhZwwyG2swnYNKD+EHD2TH1IkkbHT0hLkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpYThIkhqGgySpsWzcDUjSsWbF+vuGXnf3hsvnsJNDc89BktSYVTgk2Z1kR5JHkjzU1U5Ksi3Jzu5+eVdPkluS7EryaJLz+razthu/M8na2U1JkjRbc7HncGFVnVtVq7rl9cD2qloJbO+WAS4FVna3dcCt0AsT4Cbg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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.anos_estudo.hist(bins=20)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0ididadesexoanos_estudocor/racasalarioestado_civilregiaoginasiofundamentalmediosuperior
001.100190e+1053homem5.0Parda63600.0000001.0norteTrueFalseFalseFalse
111.100190e+1049mulher8.0AmarelaNaN1.0norteTrueFalseFalseFalse
221.100190e+1022mulher11.0Indigena4352.4003910.0nordesteTrueTrueFalseFalse
331.100190e+1055homem15.0Amarela96600.0000001.0norteTrueTrueTrueTrue
441.100190e+1056mulher15.0Amarela157800.0000001.0norteTrueTrueTrueTrue
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 id idade sexo anos_estudo cor/raca \\\n", + "0 0 1.100190e+10 53 homem 5.0 Parda \n", + "1 1 1.100190e+10 49 mulher 8.0 Amarela \n", + "2 2 1.100190e+10 22 mulher 11.0 Indigena \n", + "3 3 1.100190e+10 55 homem 15.0 Amarela \n", + "4 4 1.100190e+10 56 mulher 15.0 Amarela \n", + "\n", + " salario estado_civil regiao ginasio fundamental medio \\\n", + "0 63600.000000 1.0 norte True False False \n", + "1 NaN 1.0 norte True False False \n", + "2 4352.400391 0.0 nordeste True True False \n", + "3 96600.000000 1.0 norte True True True \n", + "4 157800.000000 1.0 norte True True True \n", + "\n", + " superior \n", + "0 False \n", + "1 False \n", + "2 False \n", + "3 True \n", + "4 True " + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['ginasio'] = df['anos_estudo']>=5\n", + "df['fundamental'] = df['anos_estudo']>8\n", + "df['medio'] = df['anos_estudo']>11\n", + "df['superior'] = df['anos_estudo']==15\n", + "\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "def run_regression(df,function):\n", + " model = smf.ols(function, df).fit()\n", + " print(model.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Unnamed: 0',\n", + " 'id',\n", + " 'idade',\n", + " 'sexo',\n", + " 'anos_estudo',\n", + " 'cor/raca',\n", + " 'salario',\n", + " 'estado_civil',\n", + " 'regiao',\n", + " 'ginasio',\n", + " 'fundamental',\n", + " 'medio',\n", + " 'superior']" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "44569" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mascara_salario_alto = df.salario<999999\n", + "mascara_salario_baixo = df.salario>2\n", + "df = df[(mascara_salario_alto) & (mascara_salario_baixo)]\n", + "df.shape[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\sn3fru\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " \"\"\"Entry point for launching an IPython kernel.\n" + ] + } + ], + "source": [ + "df['log_salario'] = np.log(df['salario'])" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "funcao = ''' log_salario ~\n", + "idade +\n", + "sexo +\n", + "anos_estudo +\n", + "estado_civil +\n", + "regiao +\n", + "ginasio +\n", + "fundamental +\n", + "medio +\n", + "superior\n", + "'''" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: log_salario R-squared: 0.270\n", + "Model: OLS Adj. R-squared: 0.270\n", + "Method: Least Squares F-statistic: 1363.\n", + "Date: Wed, 22 Aug 2018 Prob (F-statistic): 0.00\n", + "Time: 20:25:49 Log-Likelihood: -59296.\n", + "No. Observations: 44243 AIC: 1.186e+05\n", + "Df Residuals: 44230 BIC: 1.187e+05\n", + "Df Model: 12 \n", + "Covariance Type: nonrobust \n", + "=======================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "---------------------------------------------------------------------------------------\n", + "Intercept 3.3652 0.098 34.298 0.000 3.173 3.557\n", + "sexo[T.homem] 0.5905 0.193 3.059 0.002 0.212 0.969\n", + "sexo[T.mulher] 0.0076 0.193 0.039 0.969 -0.371 0.386\n", + "regiao[T.nordeste] 0.8196 0.534 1.535 0.125 -0.227 1.866\n", + "regiao[T.norte] -0.2615 0.013 -19.550 0.000 -0.288 -0.235\n", + "regiao[T.sudeste] -0.0769 0.012 -6.524 0.000 -0.100 -0.054\n", + "regiao[T.sul] -0.0137 0.014 -0.982 0.326 -0.041 0.014\n", + "ginasio[T.True] 3.3652 0.098 34.298 0.000 3.173 3.557\n", + "fundamental[T.True] -0.1846 0.026 -7.140 0.000 -0.235 -0.134\n", + "medio[T.True] 0.0368 0.020 1.837 0.066 -0.002 0.076\n", + "superior[T.True] 0.4089 0.023 17.472 0.000 0.363 0.455\n", + "idade 0.0165 0.000 37.327 0.000 0.016 0.017\n", + "anos_estudo 0.1354 0.005 27.730 0.000 0.126 0.145\n", + "estado_civil 0.2101 0.009 22.440 0.000 0.192 0.228\n", + "==============================================================================\n", + "Omnibus: 5571.634 Durbin-Watson: 1.677\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 14351.388\n", + "Skew: -0.716 Prob(JB): 0.00\n", + "Kurtosis: 5.394 Cond. No. 1.56e+17\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "[2] The smallest eigenvalue is 2.85e-27. This might indicate that there are\n", + "strong multicollinearity problems or that the design matrix is singular.\n" + ] + } + ], + "source": [ + "run_regression(df,funcao)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/exercicios.ipynb" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/exercicios.ipynb" new file mode 100755 index 0000000..1014ba7 --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/exercicios.ipynb" @@ -0,0 +1,522 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercicio\n", + "\n", + "Vamos usar um famoso dataset sobre preços de casas em Boston (década de 70) para analisar alguns pontos.\n", + "\n", + "O conjunto de dados contém informações relacionadas à habitação na área de Boston, Massachusetts. Isso inclui recursos relacionados à estrutura, vizinhança, acessibilidade e qualidade do ar. Grande parte dos dados foi coletada pelo Serviço de Recenseamento dos EUA em 1970, mas o conjunto completo de dados foi reunido para a publicação original: Harrison, D. e Rubinfeld, preços DL 'Hedonic e a demanda por ar limpo', J. Environ. Economics & Management, volume 5, 81-102, 1978.\n", + "\n", + "Cada observação na nossa amostra é um setor censitario que tem entre 1000 e 8000 pessoas." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.datasets import load_boston\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.formula.api as smf\n", + "\n", + "%matplotlib inline\n", + "boston = load_boston()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['data', 'target', 'feature_names', 'DESCR'])\n" + ] + } + ], + "source": [ + "print(boston.keys())" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(506, 13)\n" + ] + } + ], + "source": [ + "print(boston.data.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'\n", + " 'B' 'LSTAT']\n" + ] + } + ], + "source": [ + "print(boston.feature_names)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Boston House Prices dataset\n", + "===========================\n", + "\n", + "Notes\n", + "------\n", + "Data Set Characteristics: \n", + "\n", + " :Number of Instances: 506 \n", + "\n", + " :Number of Attributes: 13 numeric/categorical predictive\n", + " \n", + " :Median Value (attribute 14) is usually the target\n", + "\n", + " :Attribute Information (in order):\n", + " - CRIM per capita crime rate by town\n", + " - ZN proportion of residential land zoned for lots over 25,000 sq.ft.\n", + " - INDUS proportion of non-retail business acres per town\n", + " - CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n", + " - NOX nitric oxides concentration (parts per 10 million)\n", + " - RM average number of rooms per dwelling\n", + " - AGE proportion of owner-occupied units built prior to 1940\n", + " - DIS weighted distances to five Boston employment centres\n", + " - RAD index of accessibility to radial highways\n", + " - TAX full-value property-tax rate per $10,000\n", + " - PTRATIO pupil-teacher ratio by town\n", + " - B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n", + " - LSTAT % lower status of the population\n", + " - MEDV Median value of owner-occupied homes in $1000's\n", + "\n", + " :Missing Attribute Values: None\n", + "\n", + " :Creator: Harrison, D. and Rubinfeld, D.L.\n", + "\n", + "This is a copy of UCI ML housing dataset.\n", + "http://archive.ics.uci.edu/ml/datasets/Housing\n", + "\n", + "\n", + "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n", + "\n", + "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n", + "prices and the demand for clean air', J. Environ. Economics & Management,\n", + "vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n", + "...', Wiley, 1980. N.B. Various transformations are used in the table on\n", + "pages 244-261 of the latter.\n", + "\n", + "The Boston house-price data has been used in many machine learning papers that address regression\n", + "problems. \n", + " \n", + "**References**\n", + "\n", + " - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n", + " - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n", + " - many more! (see http://archive.ics.uci.edu/ml/datasets/Housing)\n", + "\n" + ] + } + ], + "source": [ + "print(boston.DESCR)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "bos = pd.DataFrame(boston.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789101112
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.98
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.14
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.03
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.94
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.33
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 7 8 9 10 \\\n", + "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 \n", + "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 \n", + "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 \n", + "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 \n", + "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 \n", + "\n", + " 11 12 \n", + "0 396.90 4.98 \n", + "1 396.90 9.14 \n", + "2 392.83 4.03 \n", + "3 394.63 2.94 \n", + "4 396.90 5.33 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bos.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Guia.\n", + "\n", + "(Aqui começamos a analisar dados! Portanto não há uma resposta certa ou errada, há apenas boas práticas, então abuse de pesquisar formas diferentes de se fazer a mesma atividade)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Preencha os nomes das colunas do dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Crie uma coluna chamada \"MEDV\" com o \"target\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Análise as estatisticas descritivas de todas as variaveis numéricas. Há campos nulos?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. Exiba a matriz de variância x covariância das variaveis. Quais são as 3 variaveis mais correlacionadas com o preço dos imóveis? E as três menos correlacionadas? (tente não buscar no visual .. )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. Plot o histograma dos preços médios das casas e o histograma dos LOG dos preços médios das casas. A variável se parece mais com uma distribuição normal? (pode ser no visual)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. Rode uma regressão simples entre a preços médios do condado e as Idades médias desses imóveis.\n", + "\n", + " a) Qual o valor do nosso beta e o que ele significa?\n", + " b) Esse parâmetro estimado é estatisticamente significativo? Qual a probabilidade dele ser diferente de zero?\n", + " c) Podemos dizer que o o beta estimado (para idade) representa um efeito causal nos preços médios? Explique.\n", + " d) Agora rode a mesma regressão com log no preço médio e interprete a diferença dos resultados (betas e R^2) porque se alterou?" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "def run_regression(df,function):\n", + " model = smf.ols(function, df).fit()\n", + " print(model.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 7. Quanto morar próximo ao Rio Charles impacta nos preços médios dos imóveis?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 8. Rode agora uma nova regressão com todas as variáveis disponiveis.\n", + "\n", + " a) Porque o beta estimado para idade média se alterou? Análise os porquês dele ter perdido significância estatística.\n", + " b) Explique porque o beta estimado para o Rio Charles se alterou.\n", + " c) Qual o impacto da poluição nos preços dos imóveis?\n", + " d) Podemos afirmar que os efeitos estimados são causais? Porque?\n", + " e) Tem algum sinal dos parâmetros que não faz sentido? Explique.\n", + " f) Qual a interpretação do intercepto nessa regressão." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Desafio" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) Rode uma regressão em que seus parâmetros estimados expliquem mais do que 80% da variância dos preços médios. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) Se você fosse um negociante de imóveis e tivesse que comprar 5 imóveis visando a melhor rentabilidade percentual (retorno sobre o investimento), quais 5 imóveis do nosso dataset você apostaria? Porque? (dica do professor: Residuos) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/exercicios_possivel_solucao.ipynb" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/exercicios_possivel_solucao.ipynb" new file mode 100755 index 0000000..d1d9cbc --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/exercicios_possivel_solucao.ipynb" @@ -0,0 +1,1292 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercicio\n", + "\n", + "Vamos usar um famoso dataset sobre preços de casas em Boston (década de 70) para analisar alguns pontos.\n", + "\n", + "O conjunto de dados contém informações relacionadas à habitação na área de Boston, Massachusetts. Isso inclui recursos relacionados à estrutura, vizinhança, acessibilidade e qualidade do ar. Grande parte dos dados foi coletada pelo Serviço de Recenseamento dos EUA em 1970, mas o conjunto completo de dados foi reunido para a publicação original: Harrison, D. e Rubinfeld, preços DL 'Hedonic e a demanda por ar limpo', J. Environ. Economics & Management, volume 5, 81-102, 1978.\n", + "\n", + "Cada observação na nossa amostra é um setor censitario que tem entre 1000 e 8000 pessoas." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.datasets import load_boston\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.formula.api as smf\n", + "\n", + "%matplotlib inline\n", + "boston = load_boston()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['data', 'target', 'feature_names', 'DESCR'])\n" + ] + } + ], + "source": [ + "print(boston.keys())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(506, 13)\n" + ] + } + ], + "source": [ + "print(boston.data.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'\n", + " 'B' 'LSTAT']\n" + ] + } + ], + "source": [ + "print(boston.feature_names)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Boston House Prices dataset\n", + "===========================\n", + "\n", + "Notes\n", + "------\n", + "Data Set Characteristics: \n", + "\n", + " :Number of Instances: 506 \n", + "\n", + " :Number of Attributes: 13 numeric/categorical predictive\n", + " \n", + " :Median Value (attribute 14) is usually the target\n", + "\n", + " :Attribute Information (in order):\n", + " - CRIM per capita crime rate by town\n", + " - ZN proportion of residential land zoned for lots over 25,000 sq.ft.\n", + " - INDUS proportion of non-retail business acres per town\n", + " - CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n", + " - NOX nitric oxides concentration (parts per 10 million)\n", + " - RM average number of rooms per dwelling\n", + " - AGE proportion of owner-occupied units built prior to 1940\n", + " - DIS weighted distances to five Boston employment centres\n", + " - RAD index of accessibility to radial highways\n", + " - TAX full-value property-tax rate per $10,000\n", + " - PTRATIO pupil-teacher ratio by town\n", + " - B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n", + " - LSTAT % lower status of the population\n", + " - MEDV Median value of owner-occupied homes in $1000's\n", + "\n", + " :Missing Attribute Values: None\n", + "\n", + " :Creator: Harrison, D. and Rubinfeld, D.L.\n", + "\n", + "This is a copy of UCI ML housing dataset.\n", + "http://archive.ics.uci.edu/ml/datasets/Housing\n", + "\n", + "\n", + "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n", + "\n", + "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n", + "prices and the demand for clean air', J. Environ. Economics & Management,\n", + "vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n", + "...', Wiley, 1980. N.B. Various transformations are used in the table on\n", + "pages 244-261 of the latter.\n", + "\n", + "The Boston house-price data has been used in many machine learning papers that address regression\n", + "problems. \n", + " \n", + "**References**\n", + "\n", + " - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n", + " - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n", + " - many more! (see http://archive.ics.uci.edu/ml/datasets/Housing)\n", + "\n" + ] + } + ], + "source": [ + "print(boston.DESCR)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "bos = pd.DataFrame(boston.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789101112
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.98
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.14
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.03
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.94
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.33
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 7 8 9 10 \\\n", + "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 \n", + "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 \n", + "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 \n", + "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 \n", + "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 \n", + "\n", + " 11 12 \n", + "0 396.90 4.98 \n", + "1 396.90 9.14 \n", + "2 392.83 4.03 \n", + "3 394.63 2.94 \n", + "4 396.90 5.33 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bos.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Guia.\n", + "\n", + "(Aqui começamos a analisar dados! Portanto não há uma resposta certa ou errada, há apenas boas práticas, então abuse de pesquisar formas diferentes de se fazer a mesma atividade)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Preencha os nomes das colunas do dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "bos.columns = boston.feature_names" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTAT
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.98
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.14
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.03
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.94
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.33
\n", + "
" + ], + "text/plain": [ + " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n", + "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 \n", + "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 \n", + "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 \n", + "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 \n", + "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 \n", + "\n", + " PTRATIO B LSTAT \n", + "0 15.3 396.90 4.98 \n", + "1 17.8 396.90 9.14 \n", + "2 17.8 392.83 4.03 \n", + "3 18.7 394.63 2.94 \n", + "4 18.7 396.90 5.33 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bos.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Crie uma coluna chamada \"MEDV\" com o \"target\"." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATnova_variavel
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.9824.0
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.1421.6
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.0334.7
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.9433.4
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.3336.2
\n", + "
" + ], + "text/plain": [ + " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n", + "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 \n", + "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 \n", + "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 \n", + "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 \n", + "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 \n", + "\n", + " PTRATIO B LSTAT nova_variavel \n", + "0 15.3 396.90 4.98 24.0 \n", + "1 17.8 396.90 9.14 21.6 \n", + "2 17.8 392.83 4.03 34.7 \n", + "3 18.7 394.63 2.94 33.4 \n", + "4 18.7 396.90 5.33 36.2 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bos['nova_variavel'] = boston.target\n", + "bos.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Análise as estatisticas descritivas de todas as variaveis numéricas. Há campos nulos?" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# há muitas formas de se fazer isso, comece com o dataframe.describe() e analise os números." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATnova_variavel
count506.0506.0506.0506.0506.0506.0506.0506.0506.0506.0506.0506.0506.0506.0
mean3.611.411.10.10.66.368.63.89.5408.218.5356.712.722.5
std8.623.36.90.30.10.728.12.18.7168.52.291.37.19.2
min0.00.00.50.00.43.62.91.11.0187.012.60.31.75.0
25%0.10.05.20.00.45.945.02.14.0279.017.4375.47.017.0
50%0.30.09.70.00.56.277.53.25.0330.019.0391.411.421.2
75%3.612.518.10.00.66.694.15.224.0666.020.2396.217.025.0
max89.0100.027.71.00.98.8100.012.124.0711.022.0396.938.050.0
\n", + "
" + ], + "text/plain": [ + " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n", + "count 506.0 506.0 506.0 506.0 506.0 506.0 506.0 506.0 506.0 506.0 \n", + "mean 3.6 11.4 11.1 0.1 0.6 6.3 68.6 3.8 9.5 408.2 \n", + "std 8.6 23.3 6.9 0.3 0.1 0.7 28.1 2.1 8.7 168.5 \n", + "min 0.0 0.0 0.5 0.0 0.4 3.6 2.9 1.1 1.0 187.0 \n", + "25% 0.1 0.0 5.2 0.0 0.4 5.9 45.0 2.1 4.0 279.0 \n", + "50% 0.3 0.0 9.7 0.0 0.5 6.2 77.5 3.2 5.0 330.0 \n", + "75% 3.6 12.5 18.1 0.0 0.6 6.6 94.1 5.2 24.0 666.0 \n", + "max 89.0 100.0 27.7 1.0 0.9 8.8 100.0 12.1 24.0 711.0 \n", + "\n", + " PTRATIO B LSTAT nova_variavel \n", + "count 506.0 506.0 506.0 506.0 \n", + "mean 18.5 356.7 12.7 22.5 \n", + "std 2.2 91.3 7.1 9.2 \n", + "min 12.6 0.3 1.7 5.0 \n", + "25% 17.4 375.4 7.0 17.0 \n", + "50% 19.0 391.4 11.4 21.2 \n", + "75% 20.2 396.2 17.0 25.0 \n", + "max 22.0 396.9 38.0 50.0 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bos.describe().round(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. Exiba a matriz de variância x covariância das variaveis. Quais são as 3 variaveis mais correlacionadas com o preço dos imóveis? E as três menos correlacionadas? (tente não buscar no visual .. )" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# a forma nao visual é essa: dataframe.corr().round(2) mas há muitos comandos mais intuitivos de viz." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# sns.pairplot(\n", + "# data=bos,\n", + "# vars=list(bos),\n", + "# size=1,\n", + "# plot_kws={'s': 5}\n", + "# );" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# corr = bos.corr()\n", + "# mask = np.zeros_like(corr)\n", + "# mask[np.triu_indices_from(mask)] = True\n", + "\n", + "# with sns.axes_style(\"white\"):\n", + "# fig, ax = plt.subplots(figsize=(15, 12));\n", + " \n", + "# sns.heatmap(\n", + "# corr,\n", + "# ax=ax,\n", + "# annot=True,\n", + "# mask=mask,\n", + "# square=True\n", + "# );" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. Plot o histograma dos preços médios das casas e o histograma dos LOG dos preços médios das casas. A variável se parece mais com uma distribuição normal? (pode ser no visual)." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA34AAAEyCAYAAAClLAIqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHLFJREFUeJzt3XuUZWV5J+Dfa4MiojZC4zA02g0hiBFBbdFRGQ3GUSOBxGUL5mLHIbYKJmTiDUxWxNtauoZRc3FUCMhliIBXUMwFb+BoFJuICKIDIoMdUDoQIsjdvPNHnWZKUtBFU6dO1e7nWavW2fvb39n7XdV7rdO/+r79neruAAAAMFwPmnQBAAAAjJfgBwAAMHCCHwAAwMAJfgAAAAMn+AEAAAyc4AcAADBwgh8AAMDACX4AAAADJ/gBAAAM3FbjOnFVnZjkwCTXdfcTprX/fpLXJrkryTnd/cZR+9FJDkvysyR/0N1/t6lr7Ljjjr1ixYoxVA8AALDwXXjhhf/c3cs21W9swS/JSUn+MskpGxuq6peTHJzkid19e1XtNGp/fJJDk/xSkv+Y5HNV9Yvd/bP7usCKFSuybt26MZUPAACwsFXV/51Nv7FN9ezu85PccI/m1yR5V3ffPupz3aj94CSnd/ft3f2DJFck2W9ctQEAAGxJ5vsZv19Msn9Vfb2qzquqp47ad0nyw2n91o/a/p2qWltV66pq3YYNG8ZcLgAAwOI338FvqyTbJ3l6kjckObOqKknN0LdnOkF3H9fdq7p71bJlm5zKCgAAsMUb5zN+M1mf5BPd3UkuqKp/S7LjqH3Xaf2WJ7lmnmsDAIAt1p133pn169fntttum3QpzGCbbbbJ8uXLs/XWW2/W++c7+H0qyQFJvlRVv5jkwUn+OcnZSf66qt6TqcVd9khywTzXBgAAW6z169fn4Q9/eFasWJGpSXksFN2d66+/PuvXr8/KlSs36xxjm+pZVR9J8g9J9qyq9VV1WJITk+xWVZckOT3Jmp5yaZIzk3wnyd8mOWJTK3oCAABz57bbbssOO+wg9C1AVZUddtjhAY3Gjm3Er7tfdi+Hfvte+r8zyTvHVQ8AAHDfhL6F64H+28z34i4AAADMs/l+xg8AAFgEVhx1zpye76p3vWhOz8f9Y8QPAABgM33wgx/MKaecMqfnPOaYY3LsscfO6TmN+AEAAGyGu+66K69+9asnXcasCH7A4M31VJWhMxUHgEm56qqr8sIXvjDPetaz8tWvfjW77LJLzjrrrHzve9/Lq1/96txyyy3Zfffdc+KJJ+ZHP/pR1qxZkwsuuODu9x500EG5+OKL87a3vS2f/vSnc+utt+YZz3hGPvShD824OMpll112v8/xnOc8J894xjPyla98JQcddFBuuummbLfddnn961+f448/Pscdd1zuuOOO/MIv/EJOPfXU3Hnnndlnn31y5ZVX5kEPelBuueWW7Lnnnrnyyitz9dVX54gjjsiGDRuy7bbb5vjjj8/jHve4sfxuTfUEAAAWjMsvvzxHHHFELr300ixdujQf//jH8/KXvzzvfve7c/HFF2fvvffOW9/61uy111654447cuWVVyZJzjjjjLz0pS9Nkrz2ta/NN77xjVxyySW59dZb85nPfGbGa23uOW688cacd955ed3rXvdz53vxi1+cb3zjG/nWt76VvfbaKyeccEIe+chHZp999sl5552XJPn0pz+d5z//+dl6662zdu3a/MVf/EUuvPDCHHvssTn88MPn9pc5jeAHAAAsGCtXrsy+++6bJHnKU56S73//+7nxxhvz7Gc/O0myZs2anH/++UmSl770pTnzzDOTTIW2Qw45JEnyxS9+MU972tOy99575wtf+EIuvfTSe73e5pxjY597uuSSS7L//vtn7733zmmnnXb3ew455JCcccYZSZLTTz89hxxySG6++eZ89atfzerVq7PvvvvmVa96Va699trN+6XNgqmeAADAgvGQhzzk7u0lS5bkxhtvvNe+hxxySFavXp0Xv/jFqarsscceue2223L44Ydn3bp12XXXXXPMMcfc5xefb845Hvawh814rt/93d/Npz71qeyzzz456aST8qUvfSlJctBBB+Xoo4/ODTfckAsvvDAHHHBAfvrTn2bp0qW56KKL7udvaPMIfgAAwL+zUJ75fuQjH5ntt98+X/7yl7P//vvn1FNPvXv0b/fdd8+SJUvy9re//e5RuI0Bbccdd8zNN9+cj33sY3nJS15yr+efi3NsdNNNN2XnnXfOnXfemdNOOy277LJLkmS77bbLfvvtlyOPPDIHHnhglixZkkc84hFZuXJlPvrRj2b16tXp7lx88cXZZ599Nv+XdR8EPwAAYEE7+eST717cZbfd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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bos[['nova_variavel']].plot(\n", + " kind='hist',\n", + " figsize=(15, 5),\n", + " bins=10\n", + ");" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# np.log(bos[['MEDV']]).plot(\n", + "# kind='hist',\n", + "# figsize=(15, 5),\n", + "# bins=10\n", + "# );" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. Rode uma regressão simples entre a preços médios do condado e as Idades médias desses imóveis.\n", + "\n", + " a) Qual o valor do nosso beta e o que ele significa?\n", + " b) Esse parâmetro estimado é estatisticamente significativo? Qual a probabilidade dele ser diferente de zero?\n", + " c) Podemos dizer que o o beta estimado (para idade) representa um efeito causal nos preços médios? Explique.\n", + " d) Agora rode a mesma regressão com log no preço médio e interprete a diferença dos resultados (betas e R^2) porque se alterou?" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "def run_regression(df,function):\n", + " model = smf.ols(function, df).fit()\n", + " print(model.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: nova_variavel R-squared: 0.142\n", + "Model: OLS Adj. R-squared: 0.140\n", + "Method: Least Squares F-statistic: 83.48\n", + "Date: Tue, 21 Aug 2018 Prob (F-statistic): 1.57e-18\n", + "Time: 19:40:05 Log-Likelihood: -1801.5\n", + "No. Observations: 506 AIC: 3607.\n", + "Df Residuals: 504 BIC: 3615.\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "Intercept 30.9787 0.999 31.006 0.000 29.016 32.942\n", + "AGE -0.1232 0.013 -9.137 0.000 -0.150 -0.097\n", + "==============================================================================\n", + "Omnibus: 170.034 Durbin-Watson: 0.613\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 456.983\n", + "Skew: 1.671 Prob(JB): 5.85e-100\n", + "Kurtosis: 6.240 Cond. No. 195.\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" + ] + } + ], + "source": [ + "run_regression(bos,'''nova_variavel ~ AGE''')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# run_regression(bos,'''np.log(MEDV) ~ AGE''')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 7. Quanto morar próximo ao Rio Charles impacta nos preços médios dos imóveis?" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0 471\n", + "1.0 35\n", + "Name: CHAS, dtype: int64" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bos.CHAS.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: MEDV R-squared: 0.031\n", + "Model: OLS Adj. R-squared: 0.029\n", + "Method: Least Squares F-statistic: 15.97\n", + "Date: Sun, 19 Aug 2018 Prob (F-statistic): 7.39e-05\n", + "Time: 11:59:04 Log-Likelihood: -1832.3\n", + "No. Observations: 506 AIC: 3669.\n", + "Df Residuals: 504 BIC: 3677.\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "Intercept 22.0938 0.418 52.902 0.000 21.273 22.914\n", + "CHAS 6.3462 1.588 3.996 0.000 3.226 9.466\n", + "==============================================================================\n", + "Omnibus: 81.923 Durbin-Watson: 0.579\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 125.534\n", + "Skew: 1.043 Prob(JB): 5.50e-28\n", + "Kurtosis: 4.267 Cond. No. 3.96\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" + ] + } + ], + "source": [ + "run_regression(bos,'''MEDV ~ CHAS''')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 8. Rode agora uma nova regressão com todas as variáveis disponiveis.\n", + "\n", + " a) Porque o beta estimado para idade média se alterou? Análise os porquês dele ter perdido significância estatística.\n", + " b) Explique porque o beta estimado para o Rio Charles se alterou.\n", + " c) Qual o impacto da poluição nos preços dos imóveis?\n", + " d) Podemos afirmar que os efeitos estimados são causais? Porque?\n", + " e) Tem algum sinal dos parâmetros que não faz sentido? Explique.\n", + " f) Qual a interpretação do intercepto nessa regressão." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: nova_variavel R-squared: 0.741\n", + "Model: OLS Adj. R-squared: 0.734\n", + "Method: Least Squares F-statistic: 108.1\n", + "Date: Tue, 21 Aug 2018 Prob (F-statistic): 6.95e-135\n", + "Time: 19:57:51 Log-Likelihood: -1498.8\n", + "No. Observations: 506 AIC: 3026.\n", + "Df Residuals: 492 BIC: 3085.\n", + "Df Model: 13 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "Intercept 36.4911 5.104 7.149 0.000 26.462 46.520\n", + "CRIM -0.1072 0.033 -3.276 0.001 -0.171 -0.043\n", + "ZN 0.0464 0.014 3.380 0.001 0.019 0.073\n", + "INDUS 0.0209 0.061 0.339 0.735 -0.100 0.142\n", + "CHAS 2.6886 0.862 3.120 0.002 0.996 4.381\n", + "NOX -17.7958 3.821 -4.658 0.000 -25.302 -10.289\n", + "RM 3.8048 0.418 9.102 0.000 2.983 4.626\n", + "AGE 0.0008 0.013 0.057 0.955 -0.025 0.027\n", + "DIS -1.4758 0.199 -7.398 0.000 -1.868 -1.084\n", + "RAD 0.3057 0.066 4.608 0.000 0.175 0.436\n", + "TAX -0.0123 0.004 -3.278 0.001 -0.020 -0.005\n", + "PTRATIO -0.9535 0.131 -7.287 0.000 -1.211 -0.696\n", + "B 0.0094 0.003 3.500 0.001 0.004 0.015\n", + "LSTAT -0.5255 0.051 -10.366 0.000 -0.625 -0.426\n", + "==============================================================================\n", + "Omnibus: 178.029 Durbin-Watson: 1.078\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 782.015\n", + "Skew: 1.521 Prob(JB): 1.54e-170\n", + "Kurtosis: 8.276 Cond. No. 1.51e+04\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "[2] The condition number is large, 1.51e+04. This might indicate that there are\n", + "strong multicollinearity or other numerical problems.\n" + ] + } + ], + "source": [ + "run_regression(bos,'''nova_variavel ~ CRIM +\n", + "ZN +\n", + "INDUS +\n", + "CHAS +\n", + "NOX +\n", + "RM +\n", + "AGE +\n", + "DIS +\n", + "RAD +\n", + "TAX +\n", + "PTRATIO +\n", + "B +\n", + "LSTAT''')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Desafio" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1) Rode uma regressão em que seus parâmetros estimados expliquem mais do que 80% da variância dos preços médios. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2) Se você fosse um negociante de imóveis e tivesse que comprar 5 imóveis visando a melhor rentabilidade percentual (retorno sobre o investimento), quais 5 imóveis do nosso dataset você apostaria? Porque? (dica do professor: Residuos) \n", + "\n", + "- Update: Considere que você deve escolher um condado (que há milhares de imóveis) ao invés de um imóvel já que o agrupamento dos dados é por condado." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/Curso_de_Economia_Informa\303\247\303\265es_2013.pdf" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/Curso_de_Economia_Informa\303\247\303\265es_2013.pdf" new file mode 100755 index 0000000..04943d6 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/Curso_de_Economia_Informa\303\247\303\265es_2013.pdf" differ diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/Teste_T_Gr\303\241fico_bicaudal.gif" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/Teste_T_Gr\303\241fico_bicaudal.gif" new file mode 100755 index 0000000..66b418e Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/Teste_T_Gr\303\241fico_bicaudal.gif" differ diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/bode.png" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/bode.png" new file mode 100755 index 0000000..6e1e3c8 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/bode.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/erros.PNG" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/erros.PNG" new file mode 100755 index 0000000..efe6841 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/erros.PNG" differ diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/houses_tableau.jpg" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/houses_tableau.jpg" new file mode 100755 index 0000000..8a7ab38 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/houses_tableau.jpg" differ diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/linear_regression_scheme.png" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/linear_regression_scheme.png" new file mode 100755 index 0000000..bbd6546 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/linear_regression_scheme.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/normal.png" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/normal.png" new file mode 100755 index 0000000..aa7b449 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/normal.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/regiao_critica_bilateral_aceitacao_exemplo.png" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/regiao_critica_bilateral_aceitacao_exemplo.png" new file mode 100755 index 0000000..6235d91 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/img/regiao_critica_bilateral_aceitacao_exemplo.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/reg_mult.ipynb" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/reg_mult.ipynb" new file mode 100755 index 0000000..91e1f1b --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/reg_mult.ipynb" @@ -0,0 +1,2238 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Regressão multipla com dados do IBGE\n", + "\n", + "Vamos utilizar um dataset de uma amostra da população brasileira para treinar nossos conceitos de regressão.\n", + "\n", + "Nesse dataset temos informações sobre 66470 invidividuos pesquisados pelo censo e extraimos 8 variáveis:\n", + "- id\n", + "- idade\n", + "- sexo\n", + "- cor/raca\n", + "- salario\n", + "- estado_civil\n", + "- regiao\n", + "- Educação\n", + "\n", + "\n", + "Nossos pontos de interesse serão:\n", + "\n", + "- Análise multivariada.\n", + "- Transformações nas distribuições para serem usadas em uma regressão.\n", + "- Tratamento de variáveis categóricas.\n", + "- O que seria afinal uma variável categórica?\n", + "\n", + "Algumas perguntas que poderemos responder:\n", + "\n", + "- Pessoas casadas ganham mais que pessoas solteiras?\n", + "- Existe diferença salarial entre as diferentes regiões do país?\n", + "- O salário aumenta com a idade?\n", + "- Vale a pena estudar mais para ganhar maiores salarios? Estudar até quando?" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import statsmodels.formula.api as smf\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy import stats\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(r'./data/data.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0ididadesexoanos_estudocor/racasalarioestado_civilregiao
001.100190e+1053homem5.0Parda63600.0000001.0norte
111.100190e+1049mulher8.0AmarelaNaN1.0norte
221.100190e+1022mulher11.0Indigena4352.4003910.0nordeste
331.100190e+1055homem15.0Amarela96600.0000001.0norte
441.100190e+1056mulher15.0Amarela157800.0000001.0norte
551.100190e+1030mulher15.0Amarela88550.0000000.0nordeste
661.100190e+1052mulher5.0Branca6734.4003910.0norte
771.100190e+1029homem5.0Parda14875.2006840.0norte
881.100190e+1029mulher11.0Parda6734.4003910.0norte
991.100191e+1046mulher15.0Branca54300.0000001.0norte
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 id idade sexo anos_estudo cor/raca \\\n", + "0 0 1.100190e+10 53 homem 5.0 Parda \n", + "1 1 1.100190e+10 49 mulher 8.0 Amarela \n", + "2 2 1.100190e+10 22 mulher 11.0 Indigena \n", + "3 3 1.100190e+10 55 homem 15.0 Amarela \n", + "4 4 1.100190e+10 56 mulher 15.0 Amarela \n", + "5 5 1.100190e+10 30 mulher 15.0 Amarela \n", + "6 6 1.100190e+10 52 mulher 5.0 Branca \n", + "7 7 1.100190e+10 29 homem 5.0 Parda \n", + "8 8 1.100190e+10 29 mulher 11.0 Parda \n", + "9 9 1.100191e+10 46 mulher 15.0 Branca \n", + "\n", + " salario estado_civil regiao \n", + "0 63600.000000 1.0 norte \n", + "1 NaN 1.0 norte \n", + "2 4352.400391 0.0 nordeste \n", + "3 96600.000000 1.0 norte \n", + "4 157800.000000 1.0 norte \n", + "5 88550.000000 0.0 nordeste \n", + "6 6734.400391 0.0 norte \n", + "7 14875.200684 0.0 norte \n", + "8 6734.400391 0.0 norte \n", + "9 54300.000000 1.0 norte " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Vamos olhar as estátisticas descritivas desses dados." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Contagens diferentes indicam campos nulos nessas variáveis -> Será que existe viés?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "STD Muito altos indicam que existe outliners (ver max/min) distorcendo a amostra. Qual a origem desses pontos anormais? Gerarão viés?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para dummies, a média representa a proporção das variáveis." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0ididadeanos_estudosalarioestado_civil
count66470.0000006.647000e+0466470.00000066036.00000047878.00000066470.000000
mean33234.5000003.445307e+1037.6348138.68606519706.7903230.587724
std19188.3805341.292491e+1011.3801583.37452288627.5320240.492248
min0.0000001.100190e+1020.0000005.000000-1.0000000.000000
25%16617.2500003.110060e+1028.0000005.0000003780.0000000.000000
50%33234.5000003.316781e+1037.0000008.0000007113.5996091.000000
75%49851.7500004.310361e+1047.00000011.00000012720.0000001.000000
max66469.0000005.311702e+1060.00000015.000000999999.0000001.000000
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 id idade anos_estudo salario \\\n", + "count 66470.000000 6.647000e+04 66470.000000 66036.000000 47878.000000 \n", + "mean 33234.500000 3.445307e+10 37.634813 8.686065 19706.790323 \n", + "std 19188.380534 1.292491e+10 11.380158 3.374522 88627.532024 \n", + "min 0.000000 1.100190e+10 20.000000 5.000000 -1.000000 \n", + "25% 16617.250000 3.110060e+10 28.000000 5.000000 3780.000000 \n", + "50% 33234.500000 3.316781e+10 37.000000 8.000000 7113.599609 \n", + "75% 49851.750000 4.310361e+10 47.000000 11.000000 12720.000000 \n", + "max 66469.000000 5.311702e+10 60.000000 15.000000 999999.000000 \n", + "\n", + " estado_civil \n", + "count 66470.000000 \n", + "mean 0.587724 \n", + "std 0.492248 \n", + "min 0.000000 \n", + "25% 0.000000 \n", + "50% 1.000000 \n", + "75% 1.000000 \n", + "max 1.000000 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe() # Apenas variáveis numéricas aparecem no describe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Quantidade de linhas nulas para cada campo" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "salario 18592\n", + "anos_estudo 434\n", + "cor/raca 242\n", + "regiao 0\n", + "dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum().sort_values(ascending=False).head(4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Transformando em percentual" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "salario 0.279705\n", + "anos_estudo 0.006529\n", + "cor/raca 0.003641\n", + "regiao 0.000000\n", + "dtype: float64" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(df.isnull().sum()/df.isnull().count()).sort_values(ascending=False).head(4)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0ididadeanos_estudosalarioestado_civil
Unnamed: 01.00000.97040.04500.01730.01820.0357
id0.97041.00000.05200.03570.02230.0295
idade0.04500.05201.0000-0.22320.12220.2100
anos_estudo0.01730.0357-0.22321.00000.1014-0.1188
salario0.01820.02230.12220.10141.00000.0310
estado_civil0.03570.02950.2100-0.11880.03101.0000
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 id idade anos_estudo salario estado_civil\n", + "Unnamed: 0 1.0000 0.9704 0.0450 0.0173 0.0182 0.0357\n", + "id 0.9704 1.0000 0.0520 0.0357 0.0223 0.0295\n", + "idade 0.0450 0.0520 1.0000 -0.2232 0.1222 0.2100\n", + "anos_estudo 0.0173 0.0357 -0.2232 1.0000 0.1014 -0.1188\n", + "salario 0.0182 0.0223 0.1222 0.1014 1.0000 0.0310\n", + "estado_civil 0.0357 0.0295 0.2100 -0.1188 0.0310 1.0000" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# correlação entre todas as variaveis:\n", + "df.corr().round(4)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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XHcPH+B+O62eoX4O+ErwIu8yREREREQkv2WrSLj7G1NGrU6Y1oFTU/K5HLg8IX0O+OWE9J/mXYaIiIiIiOSjtiEREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclNFQkREREREclt5BUJM/tFM7sj8nrCzN5lZmeb2X9H0l8Xmef9ZrbRzO4xs9dG0tcGaRvN7PRI+n5m9m0zu9fMPmtm00H6TDC8MRi/apTrLiIiIiKyUoy8IuHu97j7ge5+IPAKYBvw+WD0ReE4d78WwMxeCpwAvAxYC1xsZlUzqwIfA44CXgq8MZgW4ENBXvsDjwEnBeknAY+5+4uBi4LpREREREQkp6JvbVoN3OfuP+4yzTHAVe4+7+7/CWwEDgleG939fndfAK4CjjEzA44Arg7mvxI4NpLXlcHnq4HVwfQiIiIiIpJD0RWJE4DPRIZPM7PvmtnlZrZ7kLY38GBkmk1BWlr6s4HH3b0eS+/IKxj/s2D6DmZ2ipnNmdnc5s2bB1k/KTGV82RQOa98KuPJoHKeDCrn8VJYRSJ4buH1wD8HSR8HXgQcCDwMXBhOmjC795HeLa/OBPdL3X3W3Wf32muv1HWQ8aZyngwq55VPZTwZVM6TQeU8XopskTgK+I67/wTA3X/i7g13bwKfpHXrErRaFPaNzLcP8FCX9C3AbmZWi6V35BWMfxbw6JDXS0RERERkxSuyIvFGIrc1mdnzIuN+C/he8HkdcELQ49J+wP7ALcCtwP5BD03TtG6TWufuDnwDeEMw/4nAFyN5nRh8fgPw9WB6ERERERHJodZ7kuEzs52BI4E/iCT/pZkdSOtWowfCce5+t5l9Dvg+UAdOdfdGkM9pwHVAFbjc3e8O8nofcJWZ/RlwO/CpIP1TwN+b2UZaLREnLNtKioiIiIisYIVUJNx9G7GHnN39zV2m/yDwwYT0a4FrE9LvZ8etUdH07cDxfYQsIiIiIiIRRffaJCIiIiIiY0gVCRERERERyU0VCRERERERyU0VCRERERERyS1TRcLMnmVmF4X/NGhmF5rZs5Y7OBERERERKaesLRKXA08Avx28ngCuWK6gRERERESk3LJ2//oidz8uMnyOmd2xHAGJiIiIiEj5ZW2ReNrMfi0cMLPDgKeXJyQRERERESm7rC0SbweuDJ6LMFr/Cv3W5QpKRERERETKLVNFwt3vAA4ws12D4SeWNSoRERERESm1rhUJM3uTu/+Dmb0nlg6Au394GWMTEREREZGS6tUi8YzgfZflDkRERERERMZH14qEu3/CzKrAE+5+0YhiEhERERGRkuvZa5O7N4DXjyAWEREREREZE1m7f/0PM/tbM/t1Mzs4fPW7UDN7wMzuMrM7zGwuSNvDzK43s3uD992DdDOzj5rZRjP7bnS5ZnZiMP29ZnZiJP0VQf4bg3mt2zJERERERCSfrBWJ/wW8DDgXuDB4XTDgsl/t7ge6+2wwfDpwg7vvD9wQDAMcBewfvE4BPg6tSgFwFvCrwCHAWZGKwceDacP51vZYhoiIiIiI5JC1+9dXL3cgwDHA4cHnK4ENwPuC9E+7uwPfMrPdzOx5wbTXu/ujAGZ2PbDWzDYAu7r7zUH6p4Fjga90WYaIiIiIiOSQ9Q/pMLOjabVK7BSmufu5fS7XgfVm5sAn3P1S4Lnu/nCQ78Nm9pxg2r2BByPzbgrSuqVvSkinyzI6mNkptFo0eP7zn9/nKkrZqZwng8p55VMZTwaV82RQOY+XTLc2mdklwO8A76T1z9bHAy8YYLmHufvBtG5bOtXMXtVt8Qlp3kd6Zu5+qbvPuvvsXnvtlWdWGSMq58mgcl75VMaTQeU8GVTO4yXzMxLu/hbgMXc/BzgU2Lffhbr7Q8H7I8DnaT3j8JPgliWC90eCyTfFlrUP8FCP9H0S0umyDBERERERySFrReLp4H2bmf08sAjs188CzewZZrZL+BlYA3wPWAeEPS+dCHwx+LwOeEvQe9MrgZ8FtyddB6wxs92Dh6zXANcF47aa2SuD3preEssraRkiIiIiIpJD1mckvmRmuwF/BXyH1q1Cl/W5zOcCnw96ZK0B/+TuXzWzW4HPmdlJwH/Run0K4FrgdcBGYBvwNgB3f9TMzgNuDaY7N3zwGng78HfAz9F6yPorQfr5KcuQIdm2UKdWqVBvNtl5OvMjOLLCaD8YjLafDIP2IxHpZdDzRKYWCXc/z90fd/draD0b8RJ3PyP30lp53e/uBwSvl7n7B4P0n7r7anffP3h/NEh3dz/V3V/k7i9397lIXpe7+4uD1xWR9Dl3/+VgntOCHp9SlyHDU6tUOOCc9dQqWRu7ZCXSfjAYbT8ZBu1HItLLoOeJrlUPM/t/u4zD3f+lr6XKilVvNrnzrDXUm02mM985JyuN9oPBaPvJMGg/EpFeBj1P9GrD+M0u4xxQRUI6hM1i+tKabNoPBqPtJ8Og/UhEehn0PNG1IuHub+srVxERERERWdGK+kM6EREREREZY0X9IZ2IiIiIiIyxQv6QTkRERERExlvWisT24D38Q7o6ff4hnYiIiIiIjL+sz0j8a8If0n1y2aISEREREZFSy1qR+CHQcPdrzOylwMHAF5YvLBERERERKbOstzad4e5bzezXgCOBvwM+vmxRiYiIiIhIqWWtSDSC96OBS9z9i8D08oQkIiIiIiJll7Ui8d9m9gngt4FrzWwmx7wiIiIiIrLCZK0M/DZwHbDW3R8H9gD+/2WLSkRERERESi3Tw9buvg34l8jww8DDyxWUiIiIiIiU28hvTzKzfc3sG2b2AzO728z+KEg/28z+28zuCF6vi8zzfjPbaGb3mNlrI+lrg7SNZnZ6JH0/M/u2md1rZp81s+kgfSYY3hiMXzW6NRcRERERWTmKeM6hDvyxu/8S8Erg1KBLWYCL3P3A4HUtQDDuBOBlwFrgYjOrmlkV+BhwFPBS4I2RfD4U5LU/8BhwUpB+Eq1/534xcFEw3YqybaHOQr3JtoV60aHICKncpUja/yaLyltk5Rj0eB55RcLdH3b37wSftwI/APbuMssxwFXuPu/u/wlsBA4JXhvd/X53XwCuAo4xMwOOAK4O5r8SODaS15XB56uB1cH0K0atUuGAc9ZTq+hZ+Emicp8MZb2A0/43WVTeUpSyngPH2aDHc6FngeDWooOAbwdJp5nZd83scjPbPUjbG3gwMtumIC0t/dnA4+5ej6V35BWM/1kwfTyuU8xszszmNm/ePNA6DlOWA2ix0eS2M17DYqM5wsjGU1nLOY9wn5ivN1TuKVZCOYfiJ/yyfKnWm03uPGsN9WYx+99KKuNxMF9vcOdZa5ivN3pPPEQq58nQrZxViR2+QY/nwkrCzJ4JXAO8y92foPUHdy8CDqT1IPeF4aQJs3sf6d3y6kxwv9TdZ919dq+99uq6Hmlf5MvxBZ/lADJrTTfsdpYqT3KOAAAgAElEQVSyXLAMU5ZyHmX59iPcJ2Zq1aGWe1nWbxjyHM9lFz/hD/NLdZzLfCWV8TiYqVU54oINzNSqI12uynkydCvnon+0WIlmalWOu/imvo/nQioSZjZFqxLxj+7+LwDu/hN3b7h7E/gkrVuXoNWisG9k9n2Ah7qkbwF2M7NaLL0jr2D8s4BHB1mXtC/y5ag1ZzmAdp6uMV2rsPN0Z4dcg14kTOqvAKMs335E94l4uQ9S5mVZP+kUv4Ab5pfqIGVeq1Q48Nz1uDO2lRFZKu0csthosv49r1ILqIxc2jWO9G++3uCadxw2Pi0SwTMJnwJ+4O4fjqQ/LzLZbwHfCz6vA04IelzaD9gfuAW4Fdg/6KFpmtYD2evc3YFvAG8I5j8R+GIkrxODz28Avh5M37e0L/LlqDUPcgANemE4qb8CjLJ8+9FtnxikzMuyftKp3mzy9fce3i6XYX6pDlLm9WaTO85cw1RVFdCVJO0c0nSnVqnQHOzrU0RKYKZWbd/Z0I8iqnSHAW8G7jKzO4K0P6HV69KBtG41egD4AwB3v9vMPgd8n1aPT6e6ewPAzE6j9Ud5VeByd787yO99wFVm9mfA7bQqLgTvf29mG2m1RJww6MqEX+DTsTpZWnpROn657iOmsq3PqIxL+SYZpMzHYf0m0XKWyyB5h/NuW6gPdJ6Rckk7h+yy0xQA0zWVsci4G/T6cOQVCXf/JsnPKlzbZZ4PAh9MSL82aT53v58dt0ZF07cDx+eJd6UY5YXhtoU6tUqFerPZ9ZfSrNNJf4qsDMTLVmWdzyDbq8htrQpoy9bti8zUqszXG+2L7nGk8pSy0XdJ+ejsMCbG6UHIrLfU6D78wZV1v4iXrco6n0GfVxh0W5d1vxoXg94qUHbaP6Qo+i4ZvlqlwhEXbBjP7l/HVREn0XE6eLLea13m+/DH5YuyrPtFvGzLXNZlNOjzCoNu67T9alyOi6IV1T3qqLi39jM9IiGjpu+S4ZuvN/j6ew8fn4etV4JhXbzl+VIe5cEz6MVC1gdAd56uUW82qVUqpbswKesFeij6/xHD3C+GdaE4yT1rDGMbDrL9wnmh1YPS1u2LueNJO9+U/biQ0ZiqVnjFeV9jqqr9QEZrkr9blsug3TnrLNCHYV3U9/pSjl6QjPLg6fdPr/q5gCrrhUnZf/WI/n/EMO8VrVUq3HzfloErd/F9oazlvBxGsa7djrVwnDusDr4c8sYTP98sV8V1pRrGrU1lbv1Z6S0uIpNELRIFGNZFfa+L1aLudY7HNcxnHuLxlPULqey/eoRldPP9WxK3d78XIfVmk0NftOfA+110XwhjmPvT15SunJfDclZCw3LtdqyF46aqFW4IvhyyxNNtn4lWXJfjf2pWmmGc1yap8i2Slc41w6cWiTHW62I1fkES3qKwdftix3RZLgAG+TUy6cIoaZlZLqDi8VTMaDSdyrD/inuFC28LO/j5uwPw1Hy9oyz6vQgJ8+33Qjjpl+uwlWOqWpmIcl6OSmi0leHAc9ez2Gi2L1Tj54T4nxTustNUx61OaV/ASftM1pYIXfR2qlas470fZWgVTftuqZhRbzYn4niWctG5ZvjUIrGCxS9I0prLux1Y8S+j6BdDltsj4rdVRS9o4rfAZLmAisczVa1w8HnX617bPuw8XWOmVuXAc9djRkf5h9t5sZHtl5uwXLduX2x3rQf5/6U4fAizYtbeF8JWjiMu2KByzihaHtEWiKlqhTvOXINZqw//6DkhnAdIvC2p1xdw9NiMznPguet7XjCW4aK3TIZxsVOGVtG09ZiqVljz4Rt1PMvIlfUuhnGmFokVKO0CP+kAit42klRZiH8ZRb8Yet0ekdQdWJg+Va103AKTtbkxXikBuOUDq1ls6AIkr20LdRYbTW79wGuoVSrtX6fDcgeY/bOvZbqYqVUqHBmcSMJy7+diaKpa4db/fJSpamcFc9BfPMpouZ8dOiJSHmELRNjKEJZv9JyQVl5hXtE8kuKKHpthhXC+3mj/Y3W37gHLcNFbJouNJred8ZqxOq/laWVeicezjAfdxTB8apEomay/8neTdkGQ1Fwe/aUSaLcWHHTeetxbt7xElxn9pXohcrtC/BfQ6I4VjTuaHv2S6ech3eh91+NyToiXYZH3a9YqFX730puZqu7YjnMP/JRapdK+1eWWD6zOdHKoN5t86V2/zmKj2XFCueUDq3P9yhy2PsT3hZXUr378NqNenRJk6Sqz2/H39fceTtM9sSemasXaty+ltT7G80j6USEed9grT/hMhC4c82m6U6tUaGboH3U5zyFpt8MmSfreaTS94z2kW5ukKE13qhXLdGxJNoN+P6siMQTRL4JuPR6ljQvvbw+HF1LuR65VKu2Ha+MVg/BiPqxU3H5G61dEMzpaDVoXDY3goqLa/iXTHd7w8Zs6mrjCHSsadzQ92n3rQr3RtYUi6csy+mtq2X/JTLo9JMvtIstl6/ZF5usN/umUQ4FWi9TN921hdtWzqTebHeWUNbKwQhcv/7xls9hoVSbCymz0HvuVcCEav80orVOC8CKuW1eZ8f0qevydfMUtS07wtUqFN1x8U/tCLty+2xbqSy76apUK7/ns7alfEouNJt8540gWG02Ou/imxFvjwlauXheOegCyU55bBZazU408FwhJrShp5a7uX6UoK+lHqbIYtAXVXLW6rmZnZ31ubq7rNAv1Jm/4+E1c/fbD2hfW9WYTbzqY4ZGL9mh3nQv1JnMP/JTZVc9mod5gOvhFOToc7dozrAgcccEGvv7ew9vThBdnM7Uqi40mZrRvHXJvnfTDZb/mwxv42nsOp95s8oefnuOytx7CAees586z1gC0p4vGCrQrC2bGVLXSsQ4337eFQ1+0J/P1BtWKtZc598CjzK7ao71NDjx3Pbd+4DXteMKY5+sNdtlpKmnTjuznrl7lvFBvctIVt3DJW2bb8VcAYttjVJ6ab10whLechPtDpWLsPF1j6/ZFZmpVtm5f7HjYNk14ETJVrXTsL13KJjWfjT95ghfs+UwcZ7paZcuT8zzr56ba+SbkV5pyziI8DuPHSnjsNZreHv6fH/xaxz4f7643LKfw2AnnjR5L0Tzjy3KHtRfdyA3vPRygvS9A57Ec5vWMmVpq/EnHfHQ5R33kRr7yR69K3N8X6k1WX7iBr74reXxgJOU8jDIeVLRcex0/YXkMcg55ar7eLqdnzOzIIymOtOUlTbtQb1Uyr3nHYR3nkC7rV/ixvOr0L3ed74Hzj16ukCZJYeWc59iSbNLOH2QsZ/2c0IdtC/X2LUPhL8NXv/2w9sVxeMKdqlXbv/zPPfBox6864f3ts6uezc33b2G6VuXpxTqzq57Nlifnma5VuePBx5b8ShW9xWC6VuWg81oPQoa19KnqjlsXWvc676goLjaafO09h7PYaNJoOpe99ZAlvxRXzNp9z4frEV50TAfrA60Lm6eC5vKDX7A7sx/s/IVgod5gdtUekV/vd9xrHf6aEP3Vrmy/ZMZvCZivN/jU2w7puMVkKrigg9b2KOoX2eve/ar2PhO9MAhPtFlaARbqjXYL1mKjidF6z1s28/UGL37urjy9uMh0tbVP7vnMmY6WjnEVf5h5Jjj+QuHtLOGvuAB3nLmmowk+bEUI968wrWLWPtajLQphnuFD9eH9wdB6/iXaxWv03HDguZ2tG2FeC/Vme/7or83h+9lfuKvdQhltEW2687X3HA7suJ0r3o3zDX/cOb5MRt1ikufWn7TnS5JuS0pbj7QWgplalXdfdXvHcZd2q13SL73z9QbXvOOwTOcQERlPeW7FTFKus/2YaDadqWql/WUdvw3oqfnWLz53PvgYM7Uqdz7Y+mU+LCR32r80HnDOeg594Z4s1hv83FStfeG1+sINHLjv7iwGtxY8GfSmMx25EH96oc4tf9L6tXPLk/NLuoPctlBnulblj4PbG6oV48gLN1Cr2JIvjWhF5Ib3Hs5ivdFej8VG58XGmos2YLQupBcaDSpm/Mf7VgOti6BGo8l0rcq37t/Sfh6jUrGOBz7DL6br3v0q5usN3ClVZSK6fRbqzSXDFTNOvuKWji//g84b3QVU9LY1M9jzmTMA7YuOeEWtl7Clae1FNwZ5ty6A3L3rvf1JFhtNdt1phoV6g++ccWT79rmwrMtUzvFnE7rdihe/BWW+3uD2M9YwU6ty3MU3tX/Nj5+Uky4q48df9ATuLH2QcL7e4LYzjuzo5eyOM1vHUdO9/WNCGEc47uvvPbx969JMrcpZX7irvV9ELz5/55LWszZnH/tyFiIXjdFnJcJ5wryjF6PR80c4vkxGfQti0hfzMCozac8spN2aMF9vcNEJB3WUR1qlIymPtHOIbi+RomjfG77od0dfWhcKeqW9XvGKV3jck9sXfevTC/7k9kWfX2z41qcXfH6x4U8E79sX6n7TvY90pP3kZ9t8frHhv/mRG/2p+dZ80fl35Ff3JyJ5P7l90Z8Mhp/cvtjOb+v2HdP80hlf6civPRzJ94lYjD/bttCe54ltO8Y9EcwTHZ5fbPj8YsNvuX9LO475xYb/2z0/8e0L9fbwhh/+pP05nk80bdtC3ecXG/4b7W1Rb8cSU1g5x7dX+P7k9kX/9Q/d0JF+zEdubG+jJ55eWLK/LIcl+8j2Rf+1v7ihvT9Fyy5LTE9E9rF42edZp3Ce/35sW0dsv/nRG33bfPnKeX6x4b/50Rs71juM8c2X3uzzi40l69brPVoWadNFp33Jn36lfTzMLzb89X9zY8e0f77ue4l5PB0ce+HxHh13bJDXtvl65riT4kt6v+irP/Anty/6U/NLzys99pnCztnhOfep+SX73rKYX2z4JV//Uer+E5WWPr/Y8MOC/Sj05PZF3zZfX3IM5cl7uaYNFPrd7O7+gvd9qetLhqIU380yHIMezxPXImFma83sHjPbaGan95NH0739C274q3/0V5yF4Jalu//7cWZqVf74qtvZbecZFhtNrn7HYbjvuJVkPnjuYLpW5b5HngSMCq1fjU6+4hamqsZUrQruNH3Hvdd4qxII8O0/abUGPLDlqXZ3oIuNBlO1auuX5WC+6EO0O01VWQxiqFSMg87bUcOfrlW5+f4trQd1g1sp5usNXvrzz+r4JfyVL9yzvR0OOGc9h75oz45bl6ZrVe588DEqZjiOBXk3m85C0GTeaDqLDccp77M6Sbd4VMy48t/vo2LG5wpq+p+qVlhcbODeaiG79l2/DoBD+xfqrC0SM8Fta+GzLXlbNKL5HHfxTez5zBkOPHd9O87PnHJoKf9jILwtMfzlOPrL+2VvOyTxD99malVOCh6EXn3Bho7Wg3Adw9uN4k3Fx8d+9Wm6t1vowltI/vkPD+uY9o+P+qWOPBrB8fyaC/+NqWqF2/70yPZtaGF5fTbIqxq0Pobxhq0XF9/wo44833vV7R3DM7UqZ3/hro60s79wFxUz3rH6FwC49BsbO37JCp/jKOOvhWm/5C+X+XqDt/36iwY6L5S5pyx1wSlFqZi1z2NSDhNVkTCzKvAx4CjgpcAbzeylefOZqVWpVY0DzlnPztM1Trj0Jtw7v0QXG01+4X/syny9wfnHH9Ced34xfI6iyt0PPd7uKeeAc9bzkuft2upRKZj242+ZZbHRuoifCr6Yb76/9Q/B3lqf9m0Qqy/YwP7P3aV1zxQwVa3y6FPz4YoDO24jCm83atL6spqqVvjW+1e31y283Qp2dLUWchz3Vi9B8/VGexnhcDT/m+/bwgH77t7K/76ftitcYUXMg5PBVLXCgeeU60/pomX55+vuTrwV5cRff1FhXdDN1FoPMU9NVTuqYOEtNK374bNfiCwED9oecM56ZlftwWKjyWKj2d5nsopeEN9x5o4H+MOyfU3J/5Quy8Vb+LzMfL3BDe89vH2bY/icQ3SfiD6/NFOr8s/BtpmpVVl94YYlX4ZJ04b5hGV7+ufu6Igz7AoxLfZovGv/+t8AeMfqX+h4HuqCEw6K3b7X4OxjX96Rz9nHvry9bk133rH6FzrKu1qxFdU716jkeZ4irevLPHnkqeylTas/EpWihJUIdf86PIP+ADRpZ4FDgI3ufr+7LwBXAcfkzWSx0aTecG47o3XxfNUph2Fm3Bw8E/D4tgWc1q+7FbMdXbBWjZmpHRWHl/38bkDrV7I7z1rDzfe1HroOC9WM1jyRQp59wR6RhzOtfQEe/gIa9iK05cl5dtlpqn2iv/n+Le0Ld4A7Nz3Wfm4i+s+10YpAvDvKqWqFg869vv3LdcWMPZ4xE9x73IrTCB/kcw5+we4AnV3DButjBgeee33wC/hP28ssi/B+4fl6gzOPfXlwj3rr/uGzv3hXR5kcH3SbO8pfYhcbTfZ85sySMqpGLiSma1Vuvm9Lppima62KZ7gftv4p29rlnFVHZTqoQFQr1k776nteVapybv2yv6F9IRaNP/ylPdo5QPg5/IX/oPPWL/nTtuh0qy/c0HFxHT5XtRB5OHn1hRvaD1NHpw1bJOLPM/zV7xzUsQ7h+SC63DAt7IwhtP7dh7dbDaPnjfDP58LuYD2yfdr7+SWd2yNc1zD+cPoyPlQ/6uMzaXlpMaQ96LhceaRV9pKmTXv2Yhz/cE9WhrK2eo6zgY/nrPdArYQX8Abgssjwm4G/TZjuFGAOmHv+85+feD9Z9NmB8B7n+cVG+9mIaHr0Xvb4cwTxaaLjw/vLw/vNw2VG53lqfrE93VPzrVd4X+1T8637r8P7g6Np8ecYti/U/SV/+pX2fewbfvgTn19s+MOPb4s9k1FPjSHM67DI/eFJ2yDpHuwwvZ/78wbYH1LLOal8w/Xs9T4K8W0YLjtt2/cSlk+4/4b7VJhHVtHtML/Y8G8Hz9X0uH++NOX85PZFf3qhnrhtk575Cec97C9uSFzP8Hg6LOGZieh5I55X+Dn6LEJ4b3z4LEX82Yroto/us9Fp33TpzR3ThcvqWGYkvnh5RuOJ7/e/8ZEbU+/hX+5yznLOHuV91XmeN4iWT6880s4zefJIevYib8xdzneFHcshPSMxEoWfs/WMxPAM+t08Uf8jYWbHA69195OD4TcDh7j7O9PmSeqrOuzHOLxNZ6bW6tM4vE0nnh7+AmmR8e47nrOITjMdm8fZ8f8QQEe+QMfn8JfH9v8cxOKJjo/GGI8tmj6dsuykGMLmxrRx8bgW6o0dvT8F61qWPsmjfVXnfR9F39Zbty9i0O5dKf7fD9C5b/SKaev2xY79BTrLO+s6RbdbGEN8vy5T3/N5yjlcn372ieXMq6zxFfV/Id3O2aM8PuPLS4shT/qo88i7PPQ/EpOiFOds/Y/EcAx6PJf774SHbxOwb2R4H+ChvJmEGzr6Bz29PqeNT5omzzxJ4wYZ3yv2QePL8rkM4mWc931U8UVlKZcs+XUry6z5dNuPylTWecs5z7SjzKus8ZVF0n456uWlxZAnfdR55F2eyHLTvjd8g27TSSuJW4H9zWw/M5sGTgDWFRyTiIiIiMjYmagWCXevm9lpwHVAFbjc3e8uOCwRERERkbEzUc9I9MPMNgM/Thi1J7BlxOGUxajWfYu7rx3BcrqV8zCUfV8pOr6iy7no9c9q3OMcSTlP8Dm7DOtX9LEM5dgOWYxznEWX8zhvu7Lqu5xVkeiTmc25+2zRcRRhkte9H2XfXmWPb7mNy/orzsGUNa5hWenrl9W4bAfF2b8yxpRkXOKEwWKdtGckRERERERkCFSREBERERGR3FSR6N+lRQdQoEle936UfXuVPb7lNi7rrzgHU9a4hmWlr19W47IdFGf/yhhTknGJEwaIVc9IiIiIiIhIbmqREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSREBERERGR3FSR6GHt2rUO6FXMa2RUzipnvVZGOauMV34Zg8q54NfIqJzLX86qSPSwZcuWokOQEVA5TwaV88qnMp4MKufJoHIuP1UkREREREQkt7GrSJjZ5Wb2iJl9L2W8mdlHzWyjmX3XzA6OjDvRzO4NXieOLmoRERERkZVl7CoSwN8Ba7uMPwrYP3idAnwcwMz2AM4CfhU4BDjLzHZf1khFRERERFaoWtEB5OXuN5rZqi6THAN82t0d+JaZ7WZmzwMOB65390cBzOx6WhWSz+SNYev2RSpmTFUrzNcbzNSqzNcbS9IWG02a7h3jgfY0QHtcOD2wZJ74cDh/9DOQOhzG0S2vpFia7u30+LqEostIij1pG4WS1mOXnabyFsey2Lp9sWN7JL2H4umjWIfoPpi07cO4wnLrFdPW7YvteeL7A5B5naLbLZpHEdsoiyzlnGV98r4PM6+yxleWMobO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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.pairplot(\n", + " data=df.fillna(0).sample(5000),\n", + " size=1.8,\n", + " plot_kws={'s': 5})" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwgAAAKqCAYAAACepnlGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xl0FGXWx/FfJ52wSCAQSAIYULZxAdkXBQnGIQwgg4bFdUREcISgI+iroBOUGUDckBElOiojiGxugIFhE8WAwyIIouOIyBIg6UBiAoFASHe9f4ClTSppUdIFqe/H0+dQVU913bLgnNzc+zzlMgzDEAAAAABICrE7AAAAAADnDxIEAAAAACYSBAAAAAAmEgQAAAAAJhIEAAAAACYSBAAAAAAmEgQAAADgAjFmzBhdffXVuuGGGyyPG4ahv//97+revbv69Omjr776yjz2/vvvKzExUYmJiXr//fdLvQYJAgAAAHCBSEpK0muvvVbq8TVr1mj37t1avny5/va3v+mJJ56QJOXl5WnatGmaP3++FixYoGnTpik/P9/yO0gQAAAAgAtE+/btVaNGjVKPr1q1SjfeeKNcLpdatWqlw4cPKzs7W+np6ercubMiIyNVo0YNde7cWZ9++qnld7jLK3gAAADgQnby0Pe2Xj+sdqOzPsfj8Sg2Ntbcjo2NlcfjKbE/JiZGHo/H8juoIAAAAAAVhGEYJfa5XK5S91shQQAAAAAqiNjYWGVlZZnbWVlZio6OLrHf4/EoOjra8jtIEAAAAAArPq+9n18hISFBH3zwgQzD0BdffKGIiAhFR0erS5cuSk9PV35+vvLz85Wenq4uXbpYfgdzEAAAAIALxKhRo7Rhwwb98MMP6tq1q0aOHKni4mJJ0q233qr4+Hh98skn6t69u6pUqaKJEydKkiIjIzV8+HD1799fkjRixAhFRkZaXsNlWDUkAQAAAA53MnuHrdcPi25qy3WpIAAAAABWDJ/dEdiCOQgAAAAATFQQAAAAACs+KggAAAAAHI4EAQAAAICJFiMAAADAgsEkZQAAAABORwUBAAAAsMIkZQAAAABOR4IAAAAAwESLEQAAAGCFScoAAAAAnI4KAgAAAGDF57U7AltQQQAAAABgIkEAAAAAYKLFCAAAALDCJGUAAAAATkcFAQAAALDCm5QBAAAAOB0JAgAAAAATLUYAAACABYNJygAAAACcjgQBAAAAgIkWIwAAAMAKqxgBAAAAcDoqCAAAAIAVJikDAAAAcDoSBAAAAAAmWowAAAAAKz6v3RHYggoCAAAAABMVBAAAAMAKk5QBAAAAOB0JAgAAAAATLUYAAACAFd6kDAAAAMDpqCAAAAAAVpikDAAAAMDpSBAAAAAAmGgxAgAAAKwwSRkAAACA01FBAAAAACwYhtfuEGxBBQEAAACAiQQBAAAAgIkWIwAAAMAK70EAAAAA4HRUEAAAAAArDl3mtNQEwTAMbdu2TR6PRy6XS9HR0brqqqvkcrmCGR8AAACAILJMENLT0/Xkk0+qYcOGiomJkSRlZWVp7969GjdunLp06RLUIAEAAAAEh2WCMGHCBM2YMUMXX3yx3/6MjAwNGzZMS5cuDUpwAAAAgG2YpPwTr9er2NjYEvtjYmJUXFxc7kEBAAAAsIdlBaFfv37q37+/evXqpbp160qSMjMztWTJEvXv3z+oAQIAAAAIHpdhGIbVgZ07d2rVqlXyeDwyDEOxsbFKSEhQkyZNgh0jAAAAEHTHN75r6/Urt+9ny3VLXcWocePGaty4cTBjAQAAAGAz3oMAAAAAWGGSMgAAAACnI0EAAAAAYAqYIMybN6/MbQAAAKBC8vns/dgkYIJw5iJHpSx6BAAAAKACKHWZUwAAAMDJjn82x9brV776Vluua7mK0YwZM8o8afDgweUSDAAAAAB7WSYIR48elSTt2rVLX375pRISEiRJq1evVrt27YIXHQAAAICgskwQkpOTJUl333233nvvPVWrVs3c/8ADDwQvOgAAAMAuNk4UtlOZk5QPHDig8PBwczs8PFz79+8v96AAAAAA2KPMNyn37dtX/fv3V/fu3eVyubRixQrdeOONwYoNAAAAsI9DKwgBVzH66quvtGnTJklS+/btdcUVVwQlMAAAAMBOxz+dZev1K1/7J1uuG/A9CIWFhapWrZoGDRqk2NhYZWRkBCMuAAAAADYos8Vo2rRp2r59u3bt2qV+/frp5MmTevjhhzV37txgxQcAAADYwjC8dodgizIrCCtWrND06dNVpUoVSVJMTIy5BCoAAACAiqfMCkJYWJhcLpdcLpck6dixY0EJCgAAALCdQycpl5kg9OzZUykpKTp8+LDmz5+vd999VwMHDgxWbAAAAACCLOAqRmvXrlV6erokqUuXLurcuXNQAgMAAADsVPjxG7Zev0q3u225bpkVBEnq3LmzWrZsqeLiYklSXl6eIiMjyz0wAAAAwFYGLUYlzJ07V//4xz9UuXJluVwuGYYhl8ulVatWBSs+AAAAAEFUZoLwxhtv6MMPP1StWrWCFQ8AAABwfnDoJOUylzmNi4szlzgFAAAAUPGVWUEYPXq0brnlFrVs2VLh4eHm/scff7zcAwMAAAAQfGUmCCkpKerUqZOaNWumkJAyiw0AAABAxcIkZYuDbrfGjBkTrFgAAAAA2KzMskDHjh01b948ZWdnKy8vz/wAAAAAqJjKrCAsXrxYkvTKK6+Y+1jmFAAAAI7g0FWMykwQPvroo2DFAQAAAOA8EPBNyt9++62+++47FRUVmftuvPHGcg0KAAAAsB2TlEuaNm2a1q9fr507dyo+Pl5r1qxR27ZtSRAAAACACqrMScrLli3Tm2++qdq1a2vSpElauHChXyUBAAAAQMVSZgWhUqVKCgkJkdvtVkFBgaKiopSRkRGs2AAAAAD7MEm5pObNm+vw4cMaMGCAkpKSVLVqVV111VXBig0AAABAkLkMwzB+ycB9+/apoKBAl112WXnHBAAAANiuMO0FW69fpfdfbLluwFWMPB6P9u/fL6/XK0nauHGj2rdvX+6BAQAAAAi+MhOEZ555RkuXLlXjxo0VGhpq7idBAAAAACqmMhOElStX6t///rfCw8ODFQ8AAABwfnDoexDKXOY0Li5OJ0+eDFYsAAAAAGxWZgWhSpUquvHGG3X11Vf7VREef/zxcg8MAAAAsBXLnJaUkJCghISEYMUCAAAAwGZlJgg33XRTsOIAAAAAcB4oM0H4/PPPNW3aNB04cEDFxcUyDEMul0urVq0KVnwAAACAPRw6SbnMBOGxxx7TmDFj1Lx5c4WElDmfGQAAAEAFUGaCEBERofj4+GDFAgAAAJw/mKRcUseOHTV58mQlJib6rWJ05ZVXlntgAAAAAIKvzARh69atkqTt27eb+1wul2bOnFm+UQEAAACwRZkJwqxZs4IVBwAAAHB+YZLyT2bMmOG37XK5FBkZqbZt2youLi4ogQEAAAAIPsuliY4ePer3KSgo0Pbt2zV06FClpaUFO0YAAAAg+Hw+ez82sawgJCcnWw7Oy8vT4MGD1bt371K/sChj67mJDEETHtfS7hAAAABwnjirlxtERkbKMIzyigUAAACAzcqcpHymzz77TNWrVy+vWAAAAIDzB+9B+EmfPn1K7MvPz1d0dLQmT55c7kEBAAAAsIdlgpCamuq3/eMqRlWrVg1KUAAAAADsYZkg1K9fP9hxAAAAAOcXh869PatJygAAAAAqtrOapAwAAAA4hkMnKVNBAAAAAGAiQQAAAABgosUIAAAAsEKLEQAAAACno4IAAAAAWDGoIAAAAABwOBIEAAAAACZajAAAAAArTFIGAAAA4HRUEAAAAAArhmF3BLagggAAAADARIIAAAAAwESLEQAAAGCFScoAAAAAnI4KAgAAAGDlPK0grFmzRhMmTJDP59OAAQM0bNgwv+MTJ07U+vXrJUnHjx9XTk6ONm3aJEm6/PLL1axZM0lS3bp1lZqaWuL7SRAAAACAC4TX69X48eM1Y8YMxcTEqH///kpISFCTJk3MMWPHjjX/PGvWLH399dfmduXKlbVw4cIyr0GLEQAAAHCB2LZtmxo2bKi4uDiFh4erd+/eWrVqVanj09LSdMMNN5zVNUgQAAAAACuGz96PBY/Ho9jYWHM7JiZGHo/Hcuz+/fu1b98+derUydx34sQJJSUlaeDAgVq5cqXlebQYAQAAABcIw+LlbS6Xy3JsWlqaevToodDQUHPf6tWrFRMTo4yMDA0aNEjNmjVTgwYN/M6jggAAAABcIGJjY5WVlWVuezweRUdHW45dsmSJevfu7bcvJiZGkhQXF6cOHTr4zU/4EQkCAAAAYMHwGbZ+rLRo0UK7d+9WRkaGioqKlJaWpoSEhBLjvv/+ex0+fFitW7c29+Xn56uoqEiSlJubq82bN/tNbv4RLUYAAADABcLtdislJUX33HOPvF6v+vXrp6ZNm2rq1Klq3ry5rr/+ekmn2ot69erl1360c+dOjRs3Ti6XS4ZhaOjQoZYJgsuwamT6DYoytp7Lr0MQhMe1tDsEAACA886x1AdsvX7VP0+15bq0GAEAAAAwkSAAAAAAMDEHAQAAALBSyrsIKjoqCAAAAABMVBAAAAAAK6UsNVrRUUEAAAAAYCJBAAAAAGCixQgAAACw4mOSMgAAAACHo4IAAAAAWKGCAAAAAMDpSBAAAAAAmGgxAgAAAKwYvAcBAAAAgMNRQQAAAACsMEkZAAAAgNORIAAAAAAw0WIEAAAAWPExSRkAAACAw1FBAAAAAKwYzpykTIIgKX3DF5r88gx5fT4l9bxe99x6o9/xA56DSnl2unLzDqtGRDVNGjNSsXWitOGL7Xp6+pvmuF17D+jpxx/Q9Z07BPsWAAAAgHPC8QmC1+vThBdf16uTH1dsnSjdMmKMrrumnRo3vNgc8+wrs9Sne1f1Teym9Vu2a+rrb2vSoyPVoVVzvfPKM5Kk/MMF6jVopK5p29KuWwEAAAB+M8fPQfjyf9+pQb1YxdWLUViYWz27XaPVazf6jfl+zz51bN1CktSh1ZVavW5Tie9ZvuY/6tK+tapUrhSUuAEAAFDOfIa9H5uUWkFYvnx5mScmJiae82DskH0oV7HRUeZ2TJ0obftmh9+YZo0aauWn63VHUi+tSt+go8cKlZd/RJE1Iswx//54re7sf0PQ4gYAAADKQ6kJwurVqyVJOTk52rJlizp16iRJWr9+vTp06FBhEgTDKJmdueTy237o3j9p4rQ3tHDZx2p71eWKrl1LoaGh5vGDOT9ox669uqYd7UUAAAC4sJWaIEyaNEmSdO+99yotLU3R0dGSpOzsbI0fPz440QVBTJ0oZWXnmNuegzmKjqrpNya6di298MRDkqRjhce14tP1iqhW1Ty+7JPPlNC5g8Lcjp/SAQAAUGEYPmeuYhRwDsL+/fvN5ECSateurd27d5dnTEHV/HeNtWd/pvZlZuvkyWIt/Xidul3Tzm/MD/mH5Tv9F+S1Oe/rpj9c53d86Udr1Suhc9BiBgAAAMpLwF95d+jQQUOGDFHv3r3lcrmUlpamjh07BiO2oHCHhmrsyLv150cnyOvz6aY/XKcml8Rp2r/m6cpmjXXdNe20cevXmvr623LJpbZXXa7HRg4xz9+fla2sg4fU7qorbLwLAAAAnHMOfZOyy7Bqwj/D8uXLtWnTqZV72rdvr+7du5c6tihj67mLDkERHsfcCQAAgDMdnXCnrde/6LGZtlz3FzXNJyYmVphJyQAAAABKV2qCcOutt2rOnDlq3bq1XK6fVvUxDEMul0ubN28OSoAAAACALQxnTlIuNUGYM2eOJGnLli1BCwYAAACAvViXEwAAALDi0EnKAZc5BQAAAOAcJAgAAAAATLQYAQAAAFZ4kzIAAAAAp6OCAAAAAFhhkjIAAAAApyNBAAAAAGCixQgAAACw4tA3KVNBAAAAAGCiggAAAABYYZIyAAAAAKcjQQAAAABgosUIAAAAsGDwJmUAAAAATkcFAQAAALDCJGUAAAAATkeCAAAAAMBEixEAAABghRYjAAAAAE5HggAAAADARIsRAAAAYMXgPQgAAAAAHI4KAgAAAGCFScoAAAAAnI4EAQAAAICJFiMAAADAgkGLEQAAAACno4IAAAAAWKGCAAAAAMDpSBAAAAAAmGgxAgAAAKz4eJMyAAAAAIejggAAAABYYZIyAAAAAKcjQQAAAABgosUIAAAAsEKLEQAAAACno4IAAAAAWDAMKggAAAAAHI4EAQAAAICJFiMAAADACpOUAQAAADgdCQIAAAAAEy1GAAAAgBVajAAAAAA43TmvINzeJeVcfyXKUYhcdoeAX2Heng/sDgEAgArPoIIAAAAAwOlIEAAAAACYmKQMAAAAWKHFCAAAAIDTUUEAAAAArPjsDsAeVBAAAAAAmEgQAAAAAJhoMQIAAAAs8B4EAAAAAI5HBQEAAACwQgUBAAAAgNORIAAAAAAw0WIEAAAAWOE9CAAAAACcjgoCAAAAYIFlTgEAAAA4HgkCAAAAABMtRgAAAIAVJikDAAAAcDoqCAAAAIAFJikDAAAAcDwSBAAAAAAmWowAAAAAK0xSBgAAAOB0JAgAAAAATLQYAQAAABYMWowAAAAAOB0VBAAAAMAKFQQAAAAATkeCAAAAAMBEixEAAABggUnKAAAAAByPCgIAAABghQoCAAAAAKcjQQAAAABgosUIAAAAsMAkZQAAAACORwUBAAAAsEAFAQAAAIDjkSAAAAAAMNFiBAAAAFigxQgAAACA41FBAAAAAKwYLrsjsAUVBAAAAAAmEgQAAAAAJhIEAAAAwILhs/dTmjVr1qhHjx7q3r27Xn311RLH33vvPXXq1El9+/ZV3759tWDBAvPY+++/r8TERCUmJur999+3/H7mIAAAAAAXCK/Xq/Hjx2vGjBmKiYlR//79lZCQoCZNmviN69Wrl1JSUvz25eXladq0aXr33XflcrmUlJSkhIQE1ahRw28cFQQAAADAguFz2fqxsm3bNjVs2FBxcXEKDw9X7969tWrVql90P+np6ercubMiIyNVo0YNde7cWZ9++mmJcSQIAAAAwAXC4/EoNjbW3I6JiZHH4ykxbvny5erTp4/uv/9+ZWZmntW5jmwxahXfWoPHDVVIaIhWzV2hD6a/63fcHe7WyOcfVKMWjXXkhyOakvyMDu7LNo/XrldbU1ZO0/wX5mrxqx9Ikl5Kf1XHjxbK5/XJ6/Xp0T6jg3pPFV3L+Na6a9w9CgkN0UdzV2jh9Pf8jrvD3Rrx/F/MZzY1+Vkd3JetOhdH6/lVL+rAzgOSpB1b/qfXHktVeOVwPTj9/xTTIFY+n0+fr9yoOZNn2XFrAAAAv5hhGCX2uVz+1YbrrrtON9xwg8LDwzVnzhw98sgjmjlz5i86V3JgghASEqIhf7tXf7t9nHKzcjRp0bPatHKD9u3IMMck3NxdBfkFGhn/Z13T51rd8eggTUl+xjw+KGWItny8ucR3P3HL4zryw5Gg3IeTuEJCdPff7tWE28cpJytHkxY9o00rN2j/jn3mmISbu+tofoEeiL9P1/TpotsevVNTk5+VJHn2ZOmRXg+W+N4PX/1AX322XaFhbv317fFq1a2NvrB4rgAAwJnOxzcpx8bGKisry9z2eDyKjo72G1OzZk3zzwMHDtSzzz5rnrthwwa/czt06FDiGo5rMWrSqqmydmcpO8Oj4pPFWrv4U7Xr7v8/pn33jvrk3Y8kSf9ZslbNO1/107HEjsre61HGt3uDGreTNWnVVJ7dmcrO8Mh7sljrFqerffeOfmPade+gT95dLUn6z5J1fs/MStHxIn312XZJkvdksXZt36lasVHlcwMAAADnSIsWLbR7925lZGSoqKhIaWlpSkhI8BuTnf1T58tHH32kxo0bS5K6dOmi9PR05efnKz8/X+np6erSpUuJa/yiCsL+/fu1Z88eXXPNNTp+/LiKi4tVrVq133JvtqkVG6WczEPmdm5mjpq2bnbGmFo6dODUGJ/Xp2NHjiqiZoSKjhfpxvuS9Lfbx6nPsBtLfPfjbz0pGYZWzF6mlXOWl++NOEit2Fp+zywnM0dNWjctOcbvmR1TRM0ISVKduBg9teR5FR45pnnPvq1vNn7td27V6hep7e/ba+kbH5bznQAAAPw2brdbKSkpuueee+T1etWvXz81bdpUU6dOVfPmzXX99ddr1qxZ+uijjxQaGqoaNWpo0qRJkqTIyEgNHz5c/fv3lySNGDFCkZGRJa8RKIj58+dr3rx5ys/P18qVK5WVlaVx48bpzTffPMe3a58z+7GserEMQxo46lZ9+NoiHT92vMTxx5Me1Q/ZuaoeVUN/fetJ7d+5T//d8HWJcTh7LlnM4j+zha6UZ/ZDdq5GXD1UBXlHdGnzxnron2P0UPeRKiwolCSFhIbo/hdH6d8z0pSdUXKSDgAAcC7DsF5JyG7x8fGKj4/32/fAAw+Yfx49erRGj7aeD9u/f38zQShNwBaj2bNna86cOWbF4JJLLlFubm7AwM9XuVk5iqpb29yuVTdKuR7/+8nJzFHteqfGhISGqGrERSrIO6KmrZrpjjGD9FL6q+p9dx8ljeivPwzqJenUD6KSdDgnXxuW/UdNWvlXJfDr5ZzxzKLqRumHM55ZbmaOovyeWVUV5B1RcVGxCvJOzQvZtX2nPHuyVPfSeuZ5w54arqxdmVryxuIg3AkAAMD5L2CCEB4ervDwcHO7uLi4XAMqb99t3aG6l9ZVdFy03GFude5zrTat2OA3ZtPKDYrvd6qXq1Ovztq+bpskKWXAWI3oMkwjugxT2huL9d5L7+jfby5RpSqVVPmiKpKkSlUqqWXX1sr4357g3lgFtnPrDsVeWld14qIVGubWNX26lPLMrpMkdep1jb5a96UkKaJWdblCTv01j46LUd1L68qz91Sl4OaHblPViIv05pOvB/FuAADAheJ8fZNyeQvYYtS+fXulpqbq+PHjWrt2rd5+++0SEyEuJD6vT6+nvKrHZj6hkNAQrZ6/Svt2ZOjmUbdp57bvtGnlBn00b4VGTnlQL36SqoK8I5pyejWc0tSoHamHXx0jSQp1hyp94Rp98cmWYNyOI/i8Pr2R8k+NnTlOIaGh+nj+Su3bkaEBo27V99u+0+crN2r1vJVKnvIXTf1kugryjmhq8nOSpMs7XqmBo26Vr9grn8+nf45N1dH8AtWKjVLSyIHa/12Gnkp7XpK0bGaaPpq70s5bBQAAsJ3LsFoQ9Wd8Pp/eeecdpaenSzo1+3nAgAGWffqSNKBh33MfJcpNiFV/P8578/Z8YHcIAABUePs62vtL8YvXf2TLdQNWEEJCQjRw4EANHDgwGPEAAAAA5wXD58xfpJaaIPTp06fMExcvZlInAAAAUNGUmiCkpqZKOrWKkST17XuqdWjx4sWqXLlyEEIDAAAA7FN2I37FVWqCUL9+fUnS5s2bNXfuXHP/7373O91yyy1KTk4u/+gAAAAABFXAZU4LCwu1adMmc3vz5s0qLCws16AAAAAA2CPgJOUJEyZo7NixKigokCRFRERo4sSJ5R4YAAAAYCcmKZeiefPmWrRokQoKCmQYhiIiIoIRFwAAAAAbBEwQJOnjjz/Wjh07dOLECXMfcxAAAABQkTm1ghBwDkJKSoqWLFmit956S5K0bNkyHThwoNwDAwAAABB8AROELVu26Omnn1b16tWVnJysuXPnKisrKxixAQAAAAiygC1GP77zoEqVKvJ4PKpZs6b27dtX7oEBAAAAduI9CKXo1q2bDh8+rCFDhigpKUkul0v9+/cPRmwAAAAAgsxlGL88NyoqKtKJEyfKXMloQMO+5yQwBEeInDn55kI3b88HdocAAECF932LRFuv3+jL5bZct9QKwvLlZQeUmGjv/zAAAAAA516pCcLq1aslSTk5OdqyZYs6deokSVq/fr06dOhAggAAAABUQKUmCJMmTZIk3XvvvUpLS1N0dLQkKTs7W+PHjw9OdAAAAIBNDMOZrdgBlzndv3+/mRxIUu3atbV79+7yjAkAAACATQKuYtShQwcNGTJEvXv3lsvlUlpamjp27BiM2AAAAAAEWcAEISUlRcuXL9emTZskSTfffLO6d+9e7oEBAAAAdjJ8dkdgj4AJgnRqxSImJQMAAAAVX6kJwq233qo5c+aodevWcrl+mqBhGIZcLpc2b94clAABAAAAO/gcOkm51ARhzpw5kqQtW7YELRgAAAAA9gq4ihEAAAAA5/hFcxAAAAAAp+E9CAAAAAAcjwoCAAAAYMHwUUEAAAAA4HAkCAAAAABMtBgBAAAAFgzD7gjsQQUBAAAAgIkKAgAAAGCBScoAAAAAHI8EAQAAAICJFiMAAADAgo83KQMAAABwOioIAAAAgAWDCgIAAAAApyNBAAAAAGCixQgAAACwwJuUAQAAADgeFQQAAADAAsucAgAAAHA8EgQAAAAAJlqMAAAAAAu8BwEAAACA45EgAAAAADDRYgQAAABY4D0IAAAAAByPCgIAAABggfcgAAAAAHC8c15BKDSKz/VXohyFu0LtDgFnaVHm53KH17c7DJyF4qL9docAAMAvRosRAAAAYIH3IAAAAABwPCoIAAAAgAUmKQMAAABwPBIEAAAAACZajAAAAAALDn2RMhUEAAAAAD+hggAAAABYYJIyAAAAAMcjQQAAAABgosUIAAAAsMCblAEAAAA4HhUEAAAAwILP7gBsQgUBAAAAgIkEAQAAAICJFiMAAADAgiEmKQMAAABwOCoIAAAAgAWfYXcE9qCCAAAAAMBEggAAAADARIsRAAAAYMHHJGUAAAAATkeCAAAAAMBEixEAAABggfcgAAAAAHA8KggAAACABZ/dAdiECgIAAAAAEwkCAAAAABMtRgAAAIAFJikDAAAAcDwqCAAAAIAFJikDAAAAcDwSBAAAAAAmWowAAAAAC7QYAQAAAHA8KggAAACABZY5BQAAAOB4JAgAAAAATLQYAQAAABZ8zuwwooIAAAAA4CdUEAAAAAALPiYpAwAAAHA6EgQAAAAAJlqMAAAAAAuG3QHYhAoCAAAAABMJAgAAAAATLUYAAACABZ/dAdiECgL11ZDpAAAgAElEQVQAAAAAExUEAAAAwILP5cz3IDgyQWgT31bDnhimkNAQLZ+7XO+8vMDvuDvcrVFTRqtJiyY68sMRTR7xlLL3ZSsiMkJjUseqacumWrVgpVJTUiVJVS6qosnvPG2eH1U3Sh+/v1r/fPKfQb2viqx1fBvdPe4ehYSGauXc5Xp/+rt+x93hbj3w/INq1KKJjvxwWM8lP6OD+7LVpGVT3TdphCTJ5XJp3gtztH7ZfyRJVatfpBGTkxXXrKEkQ9Me/oe+3fy/YN+aY0x5frx6/iFBxwoLNWTIg9ryxXa/41WqVNa8Oa+qUeOG8nq9SktbobGPTZIk/eWBYbr77ltVXFysQwdzdc+wUdq7d78dtwEAQIXnuAQhJCRE9/39Pj1+++PKyTykKYunaP2K/yhjR4Y5JvHmHjqaX6BhXYeqa5+uumvMYD09YrKKThTpredmqeHvGqphs4bm+MKjhbq/50hz+4W0qVq3dF1Q76siCwkJ0dC/3asnb09RTlaOnl70nDau3KB9P3tmv7+5uwryCzQi/l517nOt7nx0kJ5LfkZ7/7dHD/cZJZ/Xp5rRNfX80qnauHKDfF6fhowbqi2fbNYz902WO8yt8CqVbLzLiq3nHxLUtMmluuyKLurYoY1emjZJ13TpU2Lc81NS9fEn6xQWFqYVy+bpDz2u07+XrdYXX2xXx049VVh4XPcOu1NPTXpct91+nw13AgBAxee4OQjNWjVT5u4D8uzNUvHJYq1ZvEadEjv5jemU2FGr3lklSUpfkq6WnVtKkk4UntDXG79W0fGTpX5/vUvqqUZUDX214avyuwmHadKqqTJ3Z8qT4VHxyWKlL/5UHbp39BvTvntHrX73I0nSZ0vWqsXpZ1Z0vEg+76kpRmGVwmWcXtC4SrUquqLjlVo5d4UkqfhksY4dPhqkO3KePn16aNbsdyRJ6zdsVo3IGoqNjfYbU1h4XB9/ciqxPnnypDZv+VL169eVJH38yToVFh4/ff7nuvj0fgAAypNh88cuvyhBKCoq0rfffqtvv/1WJ0+W/sPxhSAqNkoHDxwytw9lHlJUTJTFmIOSJJ/Xp2NHjql6zeq/6Pu79o3Xp4s/PXcBQ1GxUcrJ/OmZ5WQeUq3Yks8s5/RzPfXMjiqiZoQkqWmrZnphxTRNWfYPvfLYy/J5fYppEKvDOflKfvYBPbvkBQ2fnKxKVBDKTf16sdqXccDc3r8vU/XrxZY6vkaN6rqhd3d9tDq9xLHBd92qfy9bXS5xAgCAX5AgrF+/Xj169ND48eP15JNPqkePHtq4cWMwYisfFpNNjDNTNMsxvyyP6/rHrvpk0Se/JjKUymKC0JnPo4znuuOLb/WX7sn6vz+OVtLw/gqrFKbQ0FA1at5Yy95aqod6/UXHjx1X0vD+5RA7pFPzP85U2r+p0NBQzZ71kqa99IZ27drrd+y225LUrm1LPfvc9HKJEwCAn/PZ/LFLwDkIkydP1uuvv65GjRpJknbt2qXRo0frvffeK/fgykNO5iHVqVfb3K5dt7Zys3MsxtRRTlaOQkJDVDWiqo7kHQn43ZdefqlCQ0O188vvznncTpaTdUhRdX96ZlF1ayvXk+s/JvOQourV/tkzu0gFZzyz/d/t0/HC42rQrKFysg4pJ/OQdnzxrSTpsyXrlDS8X/nfjIPc9+dBGjLkdknSpk1f6OK4euax+hfX1YFMj+V5qdOf1o7vdukfL77mt//6hGs15tH7lXB9PxUVFZVf4AAAOFzACsLJkyfN5ECSLr300gu6zejbrd+q3qX1FRMXI3eYW137dNX6Fev9xqxfsV7X979ektSlVxdtW7ftF313177xVA/KwXdbd6jupfUUffqZdelzrTae8cw2rtyg6/olSJKu7tVZX55+ZtFxMQoJPfXXvE79OqrfqL6y93mUdzBPhzIPqV6j+pKkqzq39Juojt9ueuqbatc+Ue3aJ2rRomX60+2nKjQdO7TR4fzDysrKLnHO+Cf/TzVqRGjU6HF++1u1ulIvv/SUbkoarIMHc0qcBwAAzh2XEaB3ZsyYMXK5XOrbt68kafHixfJ6vZo0aZLl+Bsa9D73UZ5j7a5rp6HjTi1zumLeCs2fNk+3j7pDO77coQ0r1iusUphGv/CQGl3ZSAV5RzQ5+Wl59mZJkl5f+4aqRlSVO8yto4eP6q93PG7+YPla+ut6YtA47du5z87bOyvhrlC7Q/hF2lzXVnen3KOQ0BCtmr9S705boFtG3aad277TxpUbFFYpTA9MGaVLTz+z55OfkSfDo/ibuumm4f3lPVkswzA0f+pcbVh+Krm45IpLNXxystxhYfLszdK0h6bq6AUwUXlR5ud2h/Cr/GPqBPVI7KZjhYW6555R+nzzqSRu08blatc+UfXr19WeXZv032926MSJUxWCl1+eoTdmzNGypXPVvPllyjydVGRk7NdNSYNtu5ezVVzEkqwAcCGaU+92W69/64HZtlw3YIJQVFSk2bNn6/PPP5dhGGrfvr1uu+02hYeHW46/EBIE/ORCSRDwkws1QXAyEgQAuDA5NUEIOAchPDxcgwcP1uDBF85v6wAAAIDfyme1UIoDlJog9OlT8iVGP7d48eJzHgwAAAAAe5WaIKSmpkqSZs8+Vdr4+RyEypUrByE0AAAAAMFWaoJQv/6p1V02b96suXPnmvt/97vf6ZZbblFycnL5RwcAAADYxM63Gdsp4DKnhYWF2rRpk7m9efNmFRYWlmtQAAAAAOwRcJLyhAkTNHbsWBUUFEiSIiIiNHHixHIPDAAAALCTz5lzlAMnCM2bN9eiRYtUUFAgwzAUERERjLgAAAAA2CBggjBt2jTL/cxBAAAAACqegAlC1apVzT+fOHFCH3/8sRo1alSuQQEAAAB289kdgE0CJgh333233/aQIUN03333lVtAAAAAAOwTMEE4U2FhoTIyMsojFgAAAOC84dRlTgMmCD9/o7LP51Nubq6GDx9erkEBAAAAsEfABOHHNypLktvtVlRUlNzusy48AAAAADgH1qxZowkTJsjn82nAgAEaNmyY3/EZM2ZowYIFCg0NVa1atTRx4kTzJciXX365mjVrJkmqW7eu38/6Pwr4orQXXnhB9evXV/369RUTEyO3262HH374XNwbAAAAcN7yuez9WPF6vRo/frxee+01paWl6cMPP9R3333nN+byyy/Xu+++q8WLF6tHjx565plnzGOVK1fWwoULtXDhQsvkQPoFCcKZFywuLtZXX30V6DQAAAAA59i2bdvUsGFDxcXFKTw8XL1799aqVav8xnTq1ElVqlSRJLVq1UpZWVlndY1Se4VeeeUVpaam6sSJE2rTpo0kyTAMhYeHa+DAgWd7LwAAAAB+I4/Ho9jYWHM7JiZG27ZtK3X8O++8o65du5rbJ06cUFJSktxut4YNG6bf//73Jc4pNUG49957de+99+q5557T6NGjf+09AAAAABek8/E9CIZRcm0ll8u6H2nhwoXavn273nrrLXPf6tWrFRMTo4yMDA0aNEjNmjVTgwYN/M4L2GLUrVs3HTt2zLzIpEmTtH///rO6EQAAAAC/XWxsrF/LkMfjUXR0dIlx69atU2pqqqZPn67w8HBzf0xMjCQpLi5OHTp00Ndff13i3IAJwhNPPKEqVarom2++0WuvvaZ69erpkUce+VU3BAAAAFwofDZ/rLRo0UK7d+9WRkaGioqKlJaWpoSEBL8xX3/9tVJSUjR9+nRFRUWZ+/Pz81VUVCRJys3N1ebNm9WkSZMS1wi4Xqnb7ZbL5dLKlSt15513asCAAfrggw8CnQYAAADgHHO73UpJSdE999wjr9erfv36qWnTppo6daqaN2+u66+/Xk8//bSOHTumBx54QNJPy5nu3LlT48aNk8vlkmEYGjp06K9LEC666CK98sorWrRokWbPni2v16vi4uJzf7cAAAAAAoqPj1d8fLzfvh+TAUn617/+ZXlemzZttHjx4oDfH7DFaMqUKQoPD9fEiRNVp04deTweDRkyJOAXAwAAABcyw2Xvxy4BE4Q6deooMTHR7FeqWbOm5XJIAAAAAC58AROE+fPn6/7771dKSoqkUzOlR4wYUe6BAQAAAHY6HycpB0PABGH27NmaM2eOqlWrJkm65JJLlJubW+6BAQAAAAi+gAlCeHi439qpTFAGAAAAKq6Aqxi1b99eqampOn78uNauXau33367xFqrAAAAQEVzPr5JORgCVhAeeugh1apVS82aNdO8efMUHx+vv/zlL8GIDQAAAECQBawghISEaODAgRo4cKDl8ZEjR+rFF18854EBAAAAdjLsDsAmASsIgWRkZJyLOAAAAACcB35zguBy2fgWBwAAAADnVMAWIwAAAMCJfA79PfhvriAYhlO7swAAAICK56wShPz8fH3zzTd++x566KFzGhAAAABwPuBNyqX405/+pIKCAuXl5alv374aO3asJk2aZB7v0qVLuQYI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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "corr = df.corr()\n", + "mask = np.zeros_like(corr) # removendo valores zero\n", + "mask[np.triu_indices_from(mask)] = True\n", + "\n", + "with sns.axes_style(\"white\"):\n", + " fig, ax = plt.subplots(figsize=(15, 12));\n", + " \n", + " sns.heatmap(\n", + " corr,\n", + " ax=ax,\n", + " annot=True,\n", + " mask=mask,\n", + " square=True\n", + " );" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1. Qual a relação entre idade e salario?" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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fIDyq6++yuWXX855553H1VdfzbFjxwD4wQ9+wPnnn8/ZZ5/N3/zN33Ruf/PNN/O5z32O97znPdxxxx08//zzLF++nOXLl3POOefQ1NSEtZYvfvGLnHnmmZx11ln88pe/BGDz5s2sWrWKtWvXsmjRIm666abOqpTZs2ezYcMGLrnkEn79618P+FpfeeUV5s2bx9y5cwkEAtxwww389re/7bbd7NmzWbZsGR5P9z/jV199lRMnTnDVVVclpX/yk58k1VqRN998M5/61Ke49NJLWbBgAb///e8HnP9E//RP/8Rdd93V48MlEAiQlRXvmt5GinUBAAAgAElEQVTe3k4sFuv87E9/+hMXXXQR5557Ltdffz3Nzc3d9n/yySe58sorKS4upqioiCuvvJInnngCgB/96Ef88z//MwAej4fJkycPyTWNVomD+zWbTf+ForG+NxqH+r2yvDEmxxhTboyZ2fEajoxJd2+99Ra33norO3fupLCwkHvvvZdwOMw//MM/sHHjRl599VU+8YlP8K//+q8AfPjDH2b79u28+eabLF68mB/+8Iedx9q/fz9PP/00//mf/8ndd9/N9773Pd544w1eeOEFcnJy+J//+R/eeOMN3nzzTZ5++mm++MUvdgbX119/ne985zvs2bOHiooKXnrppc7jZmdn8+KLL3LDDTck5f1nP/tZZ6BNfK1du7bbdR45coTy8vLO38vKyjhy5Eja9ykWi/H5z3+e//iP/+j22YMPPsiKFStS7nf48GGef/55/vCHP/CpT32q25jQpqamlNewfPly9uzZ0+14mzZtYsaMGZx99tm95reyspJly5ZRXl7OHXfcwfTp06mpqeEb3/gGTz/9NK+99horVqzg29/+drd9e7pXp06dAuKl4Y4geuLEiV7zMdZV1gfJ6TL3pWazSZ/XhaVA6Ed1qDFmLvBT4nOGdqWq0RFQXl7OxRdfDMBHP/pR7rnnHlavXs2uXbu48sorgXhV4rRp0wDYtWsX//Zv/8apU6dobm7m6quv7jzW9ddf31ldefHFF/O5z32Om266iQ9/+MOUlZXx4osvcuONN+L1epkyZQqXX34527dvp7CwkAsuuICysjIAli9fzuHDh7nkkksA+MhHPpIy7zfddBM33XRTWteZqpG+P9U09957L+9///uTgkM6/vZv/xaPx8P8+fOZO3cu+/bt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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Não nos ajuda a ver o que precisamos.\n", + "temp = df[df.salario<999999].sample(1000)\n", + "sns.jointplot(x=\"idade\", y=\"salario\", data=temp, kind='reg') # hue='estado_civil'\n", + "plt.ylabel('salario', fontsize=13)\n", + "plt.xlabel('idade', fontsize=13)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.groupby('idade')['salario'].mean().plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.groupby('idade')['salario'].size().plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "def run_regression(df,function):\n", + " model = smf.ols(function, df).fit()\n", + " print(model.summary())\n", + " return model " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: salario R-squared: 0.014\n", + "Model: OLS Adj. R-squared: 0.014\n", + "Method: Least Squares F-statistic: 653.6\n", + "Date: Tue, 12 Feb 2019 Prob (F-statistic): 3.43e-143\n", + "Time: 12:07:47 Log-Likelihood: -5.3961e+05\n", + "No. Observations: 47511 AIC: 1.079e+06\n", + "Df Residuals: 47509 BIC: 1.079e+06\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "Intercept 3702.7591 343.225 10.788 0.000 3030.034 4375.485\n", + "idade 225.5802 8.824 25.566 0.000 208.286 242.875\n", + "==============================================================================\n", + "Omnibus: 71559.927 Durbin-Watson: 1.582\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 66131879.609\n", + "Skew: 9.093 Prob(JB): 0.00\n", + "Kurtosis: 184.867 Cond. No. 141.\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" + ] + } + ], + "source": [ + "mascara = df.salario < 999999\n", + "run_regression(df[mascara],'salario ~ idade')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Será que essa distribuição dos salarios é normal? \n", + "temp[temp.salario<60000].salario.plot.hist(bins=50)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaQAAAEWCAYAAAApTuNLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xl8VNX5+PHPk8nGEnZQBBGQRQggAoLWb90XtK3ggkJbcadWbetX2yrWhfplkWqF+lPbWpcqLmi1ClqUFsUWWwVBEEWlRESIKIQtQCCZ7fn9cc/ESZhJJslMMkye9+uVFzPnnnPuuXfIPDnnnnuuqCrGGGNMU8tq6gYYY4wxYAHJGGNMmrCAZIwxJi1YQDLGGJMWLCAZY4xJCxaQjDHGpAULSOagJSJ/EJHbk1RXDxHZKyI+9/4tEbmqnnXdKiKPJJj3HyLyttv/X+uzvzj11rv9DdhnTxFREcmuZ/lvi8jaZLfLHDwsIJm0JCIbRGS/iOwRkV0i8h8RuUZEKv/Pquo1qvp/CdZ1ek15VHWjqrZW1VBD266q01W11mAgIh2AYuBO4EXg8YbuOxlE5EoR+dSd+y0i8jcRKUj1flV1iar2T/V+TPqq118yxjSS76nqIhFpC5wE/A4YBVyezJ2ISLaqBpNZZyJUdQffHMuxjb3/WETkJGA6MFpVV7qg+b1G2G+TfAYmvVgPyaQ9VS1V1fnAxcClIjIIQET+LCJT3etOIvKq603tEJElIpIlInOAHsArbkjul1FDS1eKyEbgzTjDTUeKyDIRKRWRee7LGRE5WUSKo9sY3QsTkSki8lTUtv9xPbxdIrJJRC5z6d8RkZUistulT6lW57kissaVe0tEBsQ7RyJyhuvVlIrIA4BU236FiHwiIjtFZKGIHBGnqmOBd1R1pTv3O1T1CVXdk0ibq+3zcrfPPSKyXkR+FLXtZBEpFpGbReRr4PHq51VEBrjj3uXOw7lR284RkY9d3V+KyM/jtcMcPCwgmYOGqi7DG+L6dozNN7ltnYFDgFu9InoJsBGvt9VaVX8TVeYkYABwVpxdTgSuAA4DgsD9dW2ziPQAXgP+n2vbUGCV21zm9tEO+A7wYxEZ68r1A54FbnDlFuAF1dwY++iEN+R3G9AJ+Aw4IWr7WLzzcb6ra4mrO5alwFki8msROUFE8qptj9vmGLYC3wXa4PUEZ4nIsKjthwIdgCOASdWOKQd4Bfg70AX4CfC0iESG9B4FfqSqBcAg4M04bTAHEQtI5mCzGe9LrLoA0BU4QlUD7npEbQs1TlHVMlXdH2f7HFX9SFXLgNuBi8RNeqiDHwCLVPVZ167tqroKQFXfUtUPVTWsqqvxgsRJrtzFwN9U9R+qGgDuBVoA34qxj3OAj1X1BZd3NvB11PYfATNU9RM3LDYdGBqrl6SqS/AC1zDgb8B2Ebkvcty1tLl6XX9T1c/U80+84BL9x0QYuFNVK2J8BscBrYG7VdWvqm8CrwIT3PYAMFBE2qjqTlV9P1YbzMHFApI52HQDdsRIvwcoAv7uhoduSaCuTXXY/gWQg9cDqYvD8XosBxCRUSKyWERKRKQUuCaq/sPcPgFQ1bBrT7cYVR0W3VYXiKPbfgTwOzf0tQvv/EmculDV11T1e3iBfwxwGXBVAm2ufnxni8i7bgh1F17gjM5boqrlscpGjskdd8QXUW2+wNX3hYj8U0SOj1OPOYhYQDIHDRE5Fu8L6e3q21R1j6repKq98S7C3ygip0U2x6myth7U4VGve+D9Vb4Nb9iqZVS7fHhDYbFsAo6Ms+0ZYD5wuKq2Bf7AN9d+NuMFksg+xLXnyxj1fBXd1qi80W34kaq2i/ppoar/idMuwAuCqvoG3nDYoATaXMkN9b2I17M7RFXb4Q07Ruet6fxvBg6XqFmVeJ/Bl65t76nqGLzhvJeB52s6FnNwsIBk0p6ItBGR7wJzgadU9cMYeb4rIn3cl/FuIOR+ALYAveux6x+KyEARaQncBbzgpoX/F8h3F/hz8K7dVL/WEvE0cLqIXCQi2SLSUUSGum0FwA5VLReRkcD3o8o9D3xHRE5z+7gJqABiBZG/AYUicr6blPFTvOszEX8AJotIIYCItBWRcbEaKyJjRGS8iLQXz0i8Ibl3E2hztFx3TkqAoIicDZwZJ28sS/EC/y9FJEdETsb7Q2OuiOSKyA9EpK0boox83uYgZwHJpLNXRGQP3l/4vwLuI/6U777AImAv8A7wkKq+5bbNAG5zQ1Z1mY01B/gz3vWYfLwvelS1FLgWeATvL/YyvAkVB1DVjXhDSzfh9bA+Ao52m68F7nLHeAdRf+Wr6lrgh3iTIbbhfRl/T1X9MfaxDRgH3A1sd+fi31HbXwJm4n2Z73ZtODvOMe8ErgbW4X3RPwXco6pP19bmam3ag3e+nnd1fh+vZ5UQd5znunZuAx4CJqrqpy7LJcAGdzzX4J0rc5ATe0CfMY1DRC4BclX10aZuizHpyHpIxjQCEWmNN/38lKZuizHpygKSMY3jcbz7al5r6oYYk65syM4YY0xasB6SMcaYtGCLq8bQqVMn7dmzZ1M3wxhjDiorVqzYpqrx7smrlQWkGHr27Mny5cubuhnGGHNQEZEvas8Vnw3ZGWOMSQsWkIwxxqQFC0jGGGPSgl1DMnEFAgGKi4spL4+3ILMxpjnKz8+ne/fu5OTkJLVeC0gmruLiYgoKCujZsyfemqXGmOZOVdm+fTvFxcX06tUrqXXbkJ2Jq7y8nI4dO1owMsZUEhE6duyYkpETC0imRhaMjDHVpep7wQKSMcaYtGABKU0tWVfCCXe/yX6/PXfMGNM8WEBKU2u/3sOXu/azbW9FUzfFGGMahQWkNLXP9Yz2lAebuCVNT0S46aabKt/fe++9TJkypVHb0Lp161rzTJkyhXvvvReAb33rW3Hz7dq1i4ceeijhfe/fv5+TTjqJUCh1veUrrriCLl26MGjQoCrp5eXljBw5kqOPPprCwkLuvPPOGsvUlB9g1qxZFBYWMmjQICZMmBDzwvjrr79O//796dOnD3fffXeSj9QT/Vk1hk2bNnHKKacwYMAACgsL+d3vfldjOtR8ruJtS/Tc1ZbP7/dz4oknEgw28vePqtpPtZ/hw4drU5ux4BM94uZXden67U3Who8//rjJ9h0tLy9Pe/bsqSUlJaqqes899+idd96ZUNlwOKyhUKjBbWjVqlWtee6880695557as33+eefa2FhYcL7fuCBB3T27NkJ56+Pf/7zn7pixYoD2hUOh3XPnj2qqur3+3XkyJH6zjvvxC1TU/7i4mLt2bOn7tu3T1VVx40bp48//niV/QWDQe3du7d+9tlnWlFRoUOGDNE1a9Yk/XgT/aySZfPmzbpixQpVVd29e7f27dtX16xZEze9pnMVb1ui5y7RfFOmTNGnnnoq7jHF+n4AlmsDvnuth5SmygPeX8N7KwJN3JKml52dzaRJk5g1a9YB2+677z4GDRrEoEGDmD17NgAbNmxgwIABXHvttQwbNowlS5Zw1FFHcdVVVzFo0CB+8IMfsGjRIk444QT69u3LsmXLKusbO3Ysw4cPp7CwkIcffrjWtk2bNo3+/ftz+umns3bt2sr0SI+qrKyM73znOxx99NEMGjSI5557jltuuYXPPvuMoUOH8otf/KLWfTz99NOMGTOm8v3JJ59cua/t27cf0KupjxNPPJEOHTockC4ilccSCAQIBAKVM6xilakpP0AwGGT//v0Eg0H27dvHYYcdVqX8smXL6NOnD7179yY3N5fx48czb968mG2O9VlFPvurr76awsJCzjzzTPbv3w/E/6yq++CDDzjxxBMZOHAgWVlZiMgBPb266tq1K8OGDQOgoKCAAQMG8OWXX8ZNr+1cxdqW6LlLNN/YsWN5+umnG3TcdWU3xqapfX6vq5wuQ3bTp0/n008/TWqdRx11FLfeemtCea+77jqGDBnCL3/5y8q0FStW8Pjjj7N06VJUlVGjRnHSSSfRvn171q5dy+OPP85DDz3Ehg0bKCoq4i9/+QsPP/wwxx57LM888wxvv/028+fPZ/r06bz88ssAPPbYY3To0IH9+/dz7LHHcsEFF9CxY8eYbVqxYgVz585l5cqVBINBhg0bxvDhw6vkef311znssMP429/+BkBpaSmjRo3io48+YtWqVbUet9/vZ/369UQ/DqWoqIi+ffsCsHr1agYPHlylzLe//W327NlzQF333nsvp59+eq37rC4UCjF8+HCKioq47rrrGDVqVL3yd+vWjZ///Of06NGDFi1acOaZZ3LmmWdWKfvll19y+OGHV77v3r07S5cujbmfWJ8VwLp163j22Wf505/+xEUXXcSLL77IgAEDav2swBtyvPjii3nyyScZOXIkt99+O+Xl5VWGiBt6fjds2MDKlSsPOI/R6W3atIl7ruKdxxdeeCGhc5foOR40aBDvvfderceTTNZDSlP7A2EA9lakR0Bqam3atGHixIncf//9lWlvv/025513Hq1ataJ169acf/75LFmyBIAjjjiC4447rjJvr169GDx4MFlZWRQWFnLaaachIgwePJgNGzZU5rv//vs5+uijOe6449i0aRPr1q2L26YlS5Zw3nnn0bJlS9q0acO55557QJ7BgwezaNEibr75ZpYsWULbtm3rdNzbtm2jXbt2le+/+OILunXrRlaW96u7evVqhgwZckC7Vq1adcBPfYIRgM/nY9WqVRQXF7Ns2TI++uijeuXfuXMn8+bN4/PPP2fz5s2UlZXx1FNPVSmr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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ0AAAEWCAYAAAC9qEq5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmcXFWd9/HPN00ChC0QAkLIBgYhSUeWFhidUZEtoiOgMIYJEIExsinO8jzgxGdw1Dg68ygzbmh8QAL0CIgLjAMDiDDOOLJ0ENMJYQmQQCCSsIQtEEjye/44p9LV1dXV1Ul3VXfX9/161auqzj333l+1sX6ce0/9jiICMzOzWhhW7wDMzKxxOOmYmVnNOOmYmVnNOOmYmVnNOOmYmVnNOOmYmVnNOOmY9QFJX5B0zRbu+wlJ/11h+y2SZpfrK+lVSftuyXl7GeNdkv6iv89jQ5+TjjUsScslvZ6/uJ+V9ENJO9Y7rlIR8cGIWNDNth0j4nEASVdK+vKWnqcv/h6SJkoKSdtsaRw2tDnpWKP704jYETgEeBfw+dIOShrl/ys9/j3Mtkaj/B/JrKKIeBq4BZgGmy8nzZP0G2AdsK+kvSXdJOkFScskfbLkMNtJuk7SK5Lul/TOwgZJF0t6LG97UNJJJftK0rckvSTpIUlHFW3o9tJWHlW8XdIcYBbwv/NI5d8k/S9JPynp/y1J/9zbv0fJMYZJ+rykFZJWS7pK0i5586/z89ocxx/1dC5rLE46ZoCkccDxwO+Kmk8H5gA7ASuAHwErgb2Bk4GvFCcH4ATgx8BuwL8CP5c0PG97DPgTYBfg74FrJO1VtO/hwOPA7sAlwE8l7VZt/BExH2gF/jFfcvtT4BpghqRR+TNuA3wcuLqn43Xz9yj4RH4cCewL7Ah8O297b34eleP4bbWfwRqDk441up9LWgv8N/CfwFeKtl0ZEUsiYgPwNuCPgYsi4o2IeAD4f6TEVLAwIm6IiLeAbwDbAUcARMSPI+KZiNgUEdcBjwKHFe27GvjniHgrb38Y+NDWfLCIWEUaeZySm2YAz0XEwgq7Vfp7FMwCvhERj0fEq8DngJm+j2PV8D8Sa3QnRsQvu9n2VNHrvYEXIuKVorYVQEu5/hGxSVJhVISkM4C/AibmLjuSRjUFT0fn6rsrCvtupQXAucAPgNPoeZRT6e9RsDcpvoIVpO+SPbc0SGscHumYda84CTwD7CZpp6K28cDTRe/HFV7kiQf7AM9ImkD60r8AGB0Ro4DFgIr2HSup+P34fM4tjbfg58B0SdOAD5MuwW2tZ4AJRe/HAxuAZ7uJwWwzJx2zKkTEU8D/AP8gaTtJ04Gz6fwlfqikj+bLTJ8F1gN3AzuQvozXAEg6k6436PcAPiNpuKRTgAOBm3sZ5rOkeyzFcb8B3EC6x3RvRDzZy2OW8yPgLyVNylOqvwJcly9DrgE2lcZhVuCkY1a9U0mXx54BfgZcEhG3F22/kXSj/kXSvZ6P5ns0DwJfB35LSgzNwG9Kjn0PMBl4DpgHnBwRz/cyvsuBKZLWSvp5UfuCfM4eJxBU6Yp8rF8DTwBvAJ8GiIh1pPh/k+M4oo/OaUOEvIib2dAmaTzwEPC2iHi53vFYY/NIx2wIy/eW/gq41gnHBgLPXjMboiTtQLqct4I0Xdqs7nx5zczMasaX18zMrGZ8ea3E7rvvHhMnTqx3GGZmg8rChQufi4gxPfVz0ikxceJE2tra6h2GmdmgImlFz718ec3MzGrIScfMzGrGScfMzGrGScfMzGrGScfMzGrGScfMrMG1tsLEiTBsWHpu7YsFMLrhKdNmZg2stRXmzIF169L7FSvSe4BZs/r+fB7pmJk1sLlzOxJOwbp1qb0/OOmYmTWwJ7tZ1q+79q3lpGNm1sDGj+9d+9Zy0jEza2Dz5sHIkZ3bRo5M7f3BScfMrIHNmgXz58OECSCl5/nz+2cSAXj2mplZw5s1q/+STCmPdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGb6PelI2k7SvZJ+L2mJpL/P7ZMk3SPpUUnXSRqR27fN75fl7ROLjvW53P6wpOOK2mfktmWSLi5qL3sOMzOrj1qMdNYDH4iIdwIHATMkHQF8Dbg0IiYDLwJn5/5nAy9GxNuBS3M/JE0BZgJTgRnAdyU1SWoCvgN8EJgCnJr7UuEcZmZWB/2edCJ5Nb8dnh8BfAC4IbcvAE7Mr0/I78nbj5Kk3H5tRKyPiCeAZcBh+bEsIh6PiDeBa4ET8j7dncPMzOqgJvd08ojkAWA1cDvwGLA2IjbkLiuBsfn1WOApgLz9JWB0cXvJPt21j65wjtL45khqk9S2Zs2arfmoZmZWQU2STkRsjIiDgH1II5MDy3XLz+pmW1+1l4tvfkS0RETLmDFjynUxM7M+UNPZaxGxFrgLOAIYJalQ+20f4Jn8eiUwDiBv3wV4obi9ZJ/u2p+rcA4zM6uDWsxeGyNpVH69PXA0sBS4Ezg5d5sN3Jhf35Tfk7f/KiIit8/Ms9smAZOBe4H7gMl5ptoI0mSDm/I+3Z3DzMzqoBZVpvcCFuRZZsOA6yPiF5IeBK6V9GXgd8Dluf/lwNWSlpFGODMBImKJpOuBB4ENwPkRsRFA0gXArUATcEVELMnHuqibc5iZWR0oDQisoKWlJdra2uodhpnZoCJpYUS09NTPFQnMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxmnHTMzKxm+j3pSBon6U5JSyUtkXRhbv+CpKclPZAfxxft8zlJyyQ9LOm4ovYZuW2ZpIuL2idJukfSo5KukzQit2+b3y/L2yf29+c1M7Pu1WKkswH464g4EDgCOF/SlLzt0og4KD9uBsjbZgJTgRnAdyU1SWoCvgN8EJgCnFp0nK/lY00GXgTOzu1nAy9GxNuBS3M/MzOrk35POhGxKiLuz69fAZYCYyvscgJwbUSsj4gngGXAYfmxLCIej4g3gWuBEyQJ+ABwQ95/AXBi0bEW5Nc3AEfl/mZmVgc1vaeTL28dDNyTmy6QtEjSFZJ2zW1jgaeKdluZ27prHw2sjYgNJe2djpW3v5T7l8Y1R1KbpLY1a9Zs1Wc0M7Pu1SzpSNoR+Anw2Yh4GbgM2A84CFgFfL3QtczusQXtlY7VuSFifkS0RETLmDFjKn4OMzPbcjVJOpKGkxJOa0T8FCAino2IjRGxCfgB6fIZpJHKuKLd9wGeqdD+HDBK0jYl7Z2OlbfvArzQt5/OzMyqVYvZawIuB5ZGxDeK2vcq6nYSsDi/vgmYmWeeTQImA/cC9wGT80y1EaTJBjdFRAB3Aifn/WcDNxYda3Z+fTLwq9zfzMzqYJueu2y19wCnA+2SHshtf0uafXYQ6XLXcuBTABGxRNL1wIOkmW/nR8RGAEkXALcCTcAVEbEkH+8i4FpJXwZ+R0py5OerJS0jjXBm9ucHNTOzyuT/8O+spaUl2tra6h2GmdmgImlhRLT01M8VCczMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGacdMzMrGZ6lXQk7Sppen8FY2ZmQ1uPSUfSXZJ2lrQb8Hvgh5K+0dN+ZmZmpaoZ6ewSES8DHwV+GBGHAkf3b1hmZjYUVZN0tpG0F/BnwC/6OR4zMxvCqkk6XwRuBR6LiPsk7Qs8Wu0JJI2TdKekpZKWSLowt+8m6XZJj+bnXXO7JH1T0jJJiyQdUnSs2bn/o5JmF7UfKqk97/NNSap0DjMzq48ek05E/DgipkfEufn94xHxsV6cYwPw1xFxIHAEcL6kKcDFwB0RMRm4I78H+CAwOT/mAJdBSiDAJcDhwGHAJUVJ5LLct7DfjNze3TnMzKwOqplIsL+kOyQtzu+nS/p8tSeIiFURcX9+/QqwFBgLnAAsyN0WACfm1ycAV0VyNzAqX947Drg9Il6IiBeB24EZedvOEfHbiAjgqpJjlTuHmZnVQTWX134AfA54CyAiFgEzt+RkkiYCBwP3AHtGxKp8zFXAHrnbWOCpot1W5rZK7SvLtFPhHKVxzZHUJqltzZo1W/LRzMysCtUknZERcW9J24benkjSjsBPgM/m2XDddi3TFlvQXrWImB8RLRHRMmbMmN7samY2oLS2wsSJMGxYem5trXdEnVWTdJ6TtB/5i1zSycCq3pxE0nBSwmmNiJ/m5mfzpTHy8+rcvhIYV7T7PsAzPbTvU6a90jnMzIac1laYMwdWrICI9DxnzsBKPNUknfOB7wMHSHoa+CxwbrUnyDPJLgeWRkTxj0pvAgoz0GYDNxa1n5FnsR0BvJQvjd0KHJurIuwKHAvcmre9IumIfK4zSo5V7hxmZoNCuZFLd6OZuXNh3brO+69bl9oHCqV771V0lHYAhuXJANWfQPpj4L+AdmBTbv5b0n2d64HxwJPAKRHxQk4c3ybNQFsHnBkRbflYZ+V9AeZFxA9zewtwJbA9cAvw6YgISaPLnaNSvC0tLdHW1tabj2hm1i8KI5fiRDJ8OEjw5psdbSNHwvz5cPrpaYRTSoJNm7q29yVJCyOipcd+PSUdSX9Xrj0ivriFsQ1oTjpmNlBMnJgukVVjwoT0XK7/hAmwfHlfRVVetUmnmstrrxU9NpJ+RzNxq6IzM7MePflk7/rOm5dGPcVGjkztA8U2PXWIiK8Xv5f0f0n3SszMrB+NH1/9SGf8eJg1K72eOzclofHjU8IptA8EW7Kezkhg374OxMzMOis3chk+HEaM6NxWPJqZNStdStu0KT0PpIQD1VUkaM810BZJWgI8DPxL/4dmZtbYZs1KEwQmTEiTASZMgB/+EK64onPb/PkDL7l0p8fLa8CHi15vAJ6NiF7/ONTMzHrW2tr18li5SQCDJcmU6jbp5AKbAKVTpHeWRE9Tj83MrDqFRLNiRRq9FCYVF37cCYM3yZSqNNJZSOUyM76vY2a2lUp/i1P6K5bCjzuHfNKJiEm1DMTMrBGVqyJQqjdTpwe6au7pkMvOTAa2K7RFxK/7Kygzs0ZRTUIZP77/46iVHpOOpL8ALiQV0nyAtBDbb4EP9G9oZmZDX0+/xRloP+7cWtX8TudC4F3Aiog4krQejhedMTPbCoWinYXJA8UK7wfbdOhqVHN57Y2IeEMSkraNiIckvaPfIzMzG6LKTR4ozFqbMGHgVRHoS9UknZWSRgE/B26X9CId69WYmVkvlZs8UEg4/V2Ys96qqb12Un75BUl3ArsA/9GvUZmZDWHdTR4YSrPUutPtPR1J/y5pVl5HB4CI+M+IuCki3uxuPzMzq6y72WhDaZZadypNJJhPKoGzXNJ1kk6UNKJCfzMzq8JgWIKgv3SbdCLixog4lbTq5k9Jyz0/KekKScfUKkAzs6GmXCHPoTZLrTs9TpmOiNcj4rp8b+dY0pRp39MxM9sChanSp5+e3l999cBcgqC/VLO0wZ6SPi3pN6QZbLcBh1Z7gjwyWi1pcVHbFyQ9LemB/Di+aNvnJC2T9LCk44raZ+S2ZZIuLmqfJOkeSY/my4Ajcvu2+f2yvH1itTGbmfWHwlTpFSvSbLVCQc/W1npHVjuVJhJ8UtKvgPuB/YH/HRH7RsRFEfFAL85xJTCjTPulEXFQftyczzkFmAlMzft8V1KTpCbgO6SlsqcAp+a+AF/Lx5oMvAicndvPBl6MiLcDl+Z+ZmZ1U26qdKGgZ6OoNNJ5N/BVYFxEfDoifrMlJ8g12qpdBuEE4NqIWB8RTwDLgMPyY1lEPJ5nzl0LnCBJpHI8N+T9FwAnFh1rQX59A3BU7m9mVheNPFW6oNJEgjMj4raI2NRP574gr0Z6RS4oCjAWeKqoz8rc1l37aGBt0aJyhfZOx8rbX8r9u5A0R1KbpLY1a1zhx8z6TuEeTvE6OaUaYap0QTW11/rDZcB+wEHAKuDrub27tXt6217pWF0bI+ZHREtEtIwZM6ZS3GZmVSu+h9OdRpkqXVCXpBMRz0bExjyK+gHp8hmkkcq4oq77kErudNf+HDBK0jYl7Z2OlbfvQvWX+czMtlpPa+U0NTXOVOmCShMJdqv02JqTStqr6O1JQGFm203AzDzzbBJpDZ97gfuAyXmm2gjSZIObIiKAO4GT8/6zgRuLjjU7vz4Z+FXub2ZWEz3dq9m0qbESDlS/XPV40swwAaOAJ4GqVhaV9CPg/cDuklYClwDvl3RQPv5y4FMAEbFE0vXAg8AG4PyI2JiPcwFwK9AEXBERS/IpLgKulfRl4HfA5bn9cuBqSctII5yZ1cRrZtZXelorp5Hu5RSop//4l/Q90qiiMK35g8DREfHXNYiv5lpaWqKtra3eYZjZEFC6hEGxkSOH1qU1SQsjoqWnftXc03lXIeEARMQtwPu2Jjgzs0ZQXO4G0j0caKyyN6WqWU/nOUmfB64hXQ47DXi+X6MyMxsiZs1qzOTSnWpGOqcCY4Cf5ceY3GZmZtYr1Szi9gJwoaQdI+LVGsRkZmZDVDUFP98t6UHSjDIkvVPSd/s9MjMzG3Kqubx2KXAc+T5ORPweeG9/BmVmZkNTVRUJIuKpkqaN/RCLmZkNcdXMXntK0ruByNUAPgMs7d+wzMxsKKpmpHMOcD6pavNKUpHO8/szKDMzG5oqjnTy4mmnR4RnmZuZ2VarONLJdc9OqFEsZmZDRmEdnWHD0nMjLUldSTX3dH4j6dvAdcBrhcaIuL/fojIzG8RKa66tWJHeg6sTVFPw884yzRERH+ifkOrLBT/NbGtNnFi+uvSECbB8ea2jqY1qC35WU5HgyL4JycysMXS3jk5P6+s0gmoqEuwp6XJJt+T3UySd3f+hmZkNTt2tk9OI6+eUqmbK9JWkxdP2zu8fAT7bXwGZmQ128+al9XKKjRyZ2htdNUln94i4HtgEEBEbcEUCM7OyWlth7tw0icDr53RVzey11ySNJq2lg6QjgJf6NSozs0GodNbaxo0dIxwnnKSakc5fATcB+0n6DXAV8OlqTyDpCkmrJS0uattN0u2SHs3Pu+Z2SfqmpGWSFkk6pGif2bn/o5JmF7UfKqk97/NNSap0DjOz/lIY4RRbty61W9Jj0sm/x3kf8G7gU8DUiFjUi3NcCcwoabsYuCMiJgN35PcAHwQm58cc4DJICQS4BDgcOAy4pCiJXJb7Fvab0cM5zMz6hWet9azby2uSPtrNpv0lERE/reYEEfFrSRNLmk8A3p9fLwDuAi7K7VdF+vHQ3ZJGSdor9709LyiHpNuBGZLuAnaOiN/m9quAE4FbKpzDzKxf7LYbPP9813bPWutQ6Z7On+bnPUijnF/l90eSvsCrSjrd2DMiVgFExCpJe+T2sUDxMgorc1ul9pVl2iudowtJc0ijJcb7X4eZbYHWVnj55a7tI0Z41lqxbi+vRcSZEXEmaQLBlIj4WER8DJjaj/GoXChb0N4rETE/IloiomXMmDG93d3MjLlz4a23urbvtJMnERSrZiLBxMKIIXsW2H8rz/tsvmxGfl6d21cC44r67QM800P7PmXaK53DzKxPtbaWL3sD8MILtY1loKsm6dwl6VZJn8izxv4dKFePrTduAgoz0GYDNxa1n5FnsR0BvJQT3q3AsZJ2zRMIjgVuzdtekXREnrV2Rsmxyp3DzKzPnHcenH5699t9xb6zamqvXSDpJOC9uWl+RPys2hNI+hHphv7uklaSZqF9Fbg+l9N5Ejgld78ZOB5YBqwDzswxvCDpS8B9ud8XC5MKgHNJM+S2J00guCW3d3cOM7M+cd55cNll3W93FYKuKlaZzou43RoRR9cupPpylWkzq0ZraxrhVCrUf801jXM/p9oq09Us4rZO0i59FpmZ2SBWWJzttNMqJ5wJExon4fRGNWVw3gDa829jihdx+0y/RWVmNgCddx5873uVkw2A5Mtq3akm6fx7fpiZNazW1uoSDsA553iU051qks51wNtJv395LCLe6N+QzMwGnrlzq0s4554L3/1u/8czWHV7T0fSNpL+kfRbmAXANcBTkv5R0vBaBWhmNhBUUz9t9GgnnJ5UmkjwT8BuwKSIODQiDgb2A0YB/7cWwZmZDRS77VZ5+8iR8C//UptYBrNKSefDwCcj4pVCQ0S8TPpdzPH9HZiZ2UBx3nnlC3kWeJG26lW6pxNR5kc8EbFRUq/rm5mZDUaVfgA6ejQ891xt4xnsKo10HpR0RmmjpNOAh/ovJDOzgaG1tXLFAddV671KI53zgZ9KOgtYSJq99i5SuZmTahCbmVldXXhh5e2uq9Z7lZY2eDoiDge+CCwn1S/7YkQcFhFP1yg+M7Oaam2F3XdPP/CsdB8H/APQLVFNwc9f0bGAm5nZkNVTAc9iO+zgiQNbopqlDczMhrzeJJymJvj+9/s3nqHKScfMGlbxpbRqE86wYbBggUc5W6qaMjhmZkNOb0Y2BRJcddUQSTjPPQft7R2PRYvSH+SQQ/r1tE46ZtZwtiThwCAt5Ll+PSxdmpJKIbm0t8OqVR19dt8dmpvhzTf7PRwnHTNrKFuScHbcMVWYHtAJJwJWrOhIKoUE88gjsHFj6rPttjBlChxzDEyfnhLN9Omw555pGFcDTjpm1jB6+rFnqQGbbNau7TxqWbQIFi+GV17p6DNpUkoqH/tYem5uhsmTYZv6fu076ZhZwzjnnOr7HnUU/PKX/RdLVd58Ex5+uOvoZeXKjj677poSyhlndIxepk2DnXaqX9wV1DXpSFoOvAJsBDZERIuk3Uhr+Ewk/Sj1zyLiRUkC/oVUbHQd8ImIuD8fZzbw+XzYL0fEgtx+KHAlqYrCzcCF5erJmdnQ19oKr77acz8pJaeaLlEQkRJJ6ejloYdgw4bUZ/hwOPBAeN/7OpJLczOMHVuzS2N9YSCMdI6MiOKSeRcDd0TEVyVdnN9fBHwQmJwfhwOXAYfnJHUJ0EIq1bNQ0k0R8WLuMwe4m5R0ZgC31OZjmdlAUs0opyYLsL38croUVjx6aW9Pl8wKxo9PCeXDH+5IMO94R0o8g9xASDqlTgDen18vAO4iJZ0TgKvySOVuSaMk7ZX73h4RLwBIuh2YIekuYOeI+G1uvwo4EScds4bS2gpnnVV5YpYEV1/dx/duNmxIN/GLRy/t7bB8eUefnXdOCWXmzM6XxkaN6sNABpZ6J50AbstLJXw/IuYDe0bEKoCIWCVpj9x3LPBU0b4rc1ul9pVl2ruQNIc0ImK8K/iZDRlHHw133NFzv61KOBFp+nFpcnnwwY5M19QEBxwARxwBn/xkR4IZP35QXRrrC/VOOu+JiGdyYrldUqUlE8r9LxNb0N61MSW7+QAtLS2+52M2BFSbcHpVQ+3VV2HJkq4Jprgy6N57p6RyzDEdU5IPOCBNV7b6Jp2IeCY/r5b0M+Aw4FlJe+VRzl7A6tx9JTCuaPd9gGdy+/tL2u/K7fuU6W9mQ1hrK8ye3fHTlJ6UraG2cSMsW9Z5xlh7Ozz+eBrZQMpWzc3w0Y92JJdp09LKbtatuiUdSTsAwyLilfz6WNIyCjcBs4Gv5ucb8y43ARdIupY0keClnJhuBb4iadfc71jgcxHxgqRXJB0B3AOcAXyrVp/PzGqv2tFNwQ47wKxjVsMvS36tv2QJvPFG6jRsWPp9yyGHpGxWSDATJ6Zt1iv1HOnsCfwszYRmG+BfI+I/JN0HXC/pbNIaPqfk/jeTpksvI02ZPhMgJ5cvAfflfl8sTCoAzqVjyvQteBKB2ZDSmySzPeuYwoM0004z7UxnEe9paoc9V3d02nPPlFTOO69jSvKUKbD99v3zARqQ/LOVzlpaWqKtra3eYZhZBa2tcNpp5beJTUziCaazaHNyaaadt7OMJjYBsI7teX3SVEYfWfR7l+Zm2GOP8ge1HklaGBEtPfWr90QCM7NemTo1TQwDGM1zm0cuhQQzlSXsyGsAbEI8xn6008yPOJV2mpn9T8185C/3Y2RTUx0/ReNy0jGzgW/9ej713qW8fu8iPlGUYPamo1Lyc4xmEdO5nLNZxHTaaWYJU1nHDpv7XHMNfGSg1VFrME46ZjZwlFRKXv6Ldl6/exGTeYTvk6ajvcG2PMgUbueYzcmlnWb+wNso/0uJVOPyyisHYOHOBuSkY2b1UVopufAoqpS8iUk8QjM/4aObE8yjTGZjlV9dTU1e5XOgcdIxs/5VqJRcWsyyuFLyqFE8+7bp3PDqGfw+J5fFTONVtrxS8oCoEm1dOOmYWd8oVym5vT1VSn7rrdSnuFJy/r3LzHnNXPebsbB268rB7L03PP10H3wO61dOOmbWe4VKyaUJprhS8rhx6UeUH/pQxw8q998fRoygtRVOP73jx/1bqybVoa1POOmYWfeKKyUXJ5jiSsk77ZQSysyZncvBlFRKbm2F06f3XaIBX0IbjJx0zCxlgj/8ofM9l/Z2WLoU1q9PfZqa0pouhUrJhQRTplLyrrt2HvT0tSlTUqUaG3ycdMwazWuvdVwaK04wpZWSm5urrpQ8diw8U4Nyuh7ZDH5OOmZD1caN8NhjXUcvpZWSp03rqJRceHRTKblS+Zn+5Hs2Q4eTjtlQsHp15xv6ixalWjGvv562FyolH3xwR6Xk5maYNKnbSsn9fYmsJx7VDE1OOmaDyeuvp2RSmmBWl6mUfO65ZSslt7bCaSfVKf4euHLA0OekYzYQbdoETzzRNbksW5a2QUoiU6fChz7EV2+ezu3PpnIwa57dA54FBtEowaOaxuGkY1Zvzz/f6Z7L0uvbGffy4rKVktuZubkczGOv78emtiYYpCtxeAZaY3LSMdtC550Hl11Wff8RrOdAlnZa46VcpeRVTOe2CpWSBxtXCrBiTjrW8Pp+um8wgRWdkksz7byDh9kmV0pezwiWMJXbOYZ2mjcnmEqVkgeLUaPgxRfrHYUNVE46Nmi0tsJZZ6X6kQPFLqzttIBYM+1MYzG78PLmPk8wkUVM52ectDnB9KZS8kDmUYz1WkQM6QcwA3gYWAY50HRLAAAN50lEQVRc3FP/Qw89NHrrmmsiJkyIkNLzNdds3T7ltpW2nXtux/vRo9Oj+DVENDWVf5bSsx/VP4azPqaxKE6lNf6Bi+IXHB8rGNep0wuMirt4b3yL82MO34sj+J/YiZfqHntfPKTq/l1b4wLaInr+TlbqOzRJagIeAY4BVgL3AadGxIPd7dPS0hJtbdXfmW1thTlzYN26jraRI2H+/O6nfVbaB7puGz48VRkZSP+FP3QF+7Cyy+jlAB5iBKlS8psM5yEO6LSA2CKm8zRjGYyXxrbfvvO/N7MtIWlhRLT02G+IJ50/Ar4QEcfl958DiIh/6G6f3iadiRPTQoelJkzoXBOx2n2g/DbrezvxMtNY3CXB7ErHLyKfZFyney6LmM4j7M9bjKhj5D3zzDCrtWqTzuC/qFzZWOCpovcrgcNLO0maA8wBGD9+fK9O8OSTvWvf0n1syzWxgf15pEtymcTyzX1eZifaaeZaZm4evbTTzEuM6v7ANeIb8zaUDPWkU+5aR5ehXUTMB+ZDGun05gTjx5cfmVTKXT3t45HOlgrexh86zRibziIOZCnbkSolb6CJh3kH93A4P+CTm5PLCiawtZfGfFPdrGdDPemsBMYVvd8H6NPJsfPmlb8/M2/elu/jezo9G8lrZS+N7U5HpeSn2Zt2mjdPS26nmaUcyJuUr5QM6e989dUuw2LWX4Z60rkPmCxpEvA0MBP48748QeHLae7cdHls/PiUPCp9aVWzT+m20rbjj4ebb07vd9stbX/hhY7Xzz+flj/ZuLHrs5TmJA0Gw9jIfjzWZfSyL48zrDBoLVRKbj4pleDP9cbGjh7NWNL0RTMbGIb0RAIASccD/ww0AVdERIUxSO8nElgfWr266/LHS5Z0rZRcKGJZSDAVKiWbWW14IkEWETcDN9c7DivSm0rJ55zTkVyKKiWb2eA05JOO1VGhUnLp6OXRRzsqJW+3Xbo09qEPdR697LFHfWM3s37hpGN9o1ApuTjBLF6clkaGdCNp331TUvn4xzuSy377pZtNZtYQnHSsd9avh6VLu45eiitmjh6dksrZZ3eMXqZOTTf8zayhOelYeRHpB0Olo5eHH05T4ABGjEj3WY4+uvPN/be9LY1szMxKOOkYrF1b/tLYyx2Vkpk4MSWUk07qSC6TJ6f1hc3MquRvjEby5ptppFKaYJ4qqhQ0alRKKqef3jF6mTYNdt65fnGb2ZDhpDMURaR6LIWkUnh+6CF4K1VKZvhwOOAA+JM/6bipP316WtHMl8bMrJ846Qx2L7+cLoWVjl7WdlRKZty4lFQK05Kbm+Ed70j3ZMzMashJZ7DYsCH9vqX0B5XF6yfstFNKKMVTkqdNg113rVvYZmbFnHQGmgj4wx86j1oWLUrTlNenSsk0NaWRyuGHwyc/2TF6mTDBl8bMbEBz0qmn115LtcVKRy/Pd1RKZu+9U0I5+uiO0csBB6Rf8puZDTJOOrWwcSM89ljX0cvjj3eUex45MiWU4inJzc3ph5ZmZkOEk05fq7ZS8sEHwxlnuFKymTUUJ52+8qUvwXe+A88+29G2xx4pqZxzTsfoxZWSzayBOen0lb33TiurFW7qNzen8vxmZraZk05fOfvs9DAzs275JoKZmdWMk46ZmdVMXZKOpC9IelrSA/lxfNG2z0laJulhSccVtc/IbcskXVzUPknSPZIelXSdpBG5fdv8flnePrGWn9HMzLqq50jn0og4KD9uBpA0BZgJTAVmAN+V1CSpCfgO8EFgCnBq7gvwtXysycCLQOHGytnAixHxduDS3M/MzOpooF1eOwG4NiLWR8QTwDLgsPxYFhGPR8SbwLXACZIEfAC4Ie+/ADix6FgL8usbgKNyfzMzq5N6Jp0LJC2SdIWkQkXKsUDR4i6szG3dtY8G1kbEhpL2TsfK21/K/buQNEdSm6S2NWvWbP0nMzOzsvot6Uj6paTFZR4nAJcB+wEHAauArxd2K3Oo2IL2Ssfq2hgxPyJaIqJlzJgxFT6VmZltjX77nU5EHF1NP0k/AH6R364ExhVt3gd4Jr8u1/4cMErSNnk0U9y/cKyVkrYBdgFe2IKPYmZmfaQuPw6VtFdErMpvTwIW59c3Af8q6RvA3sBk4F7SqGWypEnA06TJBn8eESHpTuBk0n2e2cCNRceaDfw2b/9VRJQd6RRbuHDhc5JW9MHHrGR3UsIcjAZz7DC44x/MsYPjr6daxD6hmk6q4nu4z0m6mnRpLYDlwKcKSUjSXOAsYAPw2Yi4JbcfD/wz0ARcERHzcvu+pISzG/A74LSIWC9pO+Bq4GDSCGdmRDxesw9ZgaS2iGipdxxbYjDHDoM7/sEcOzj+ehpIsddlpBMRp1fYNg+YV6b9ZuDmMu2Pk2a3lba/AZyydZGamVlfGmhTps3MbAhz0qmP+fUOYCsM5thhcMc/mGMHx19PAyb2utzTMTOzxuSRjpmZ1YyTjpmZ1YyTTh1I+lIuAfSApNsk7V3vmHpD0j9Jeih/hp9JGlXvmKol6RRJSyRtkjQgppBWo7sq64NBLnW1WtLinnsPLJLGSbpT0tL87+bCesfUG5K2k3SvpN/n+P++7jH5nk7tSdo5Il7Orz8DTImIc+ocVtUkHUv6se0GSV8DiIiL6hxWVSQdCGwCvg/8TUS01TmkHuUq648Ax5AqbdwHnBoRD9Y1sCpJei/wKnBVREyrdzy9IWkvYK+IuF/STsBC4MRB9LcXsENEvCppOPDfwIURcXe9YvJIpw4KCSfbgW5qwg1UEXFbUZHVu0nlhwaFiFgaEQ/XO45eKltlvc4xVS0ifs0gLUEVEasi4v78+hVgKR1FhQe8SF7Nb4fnR12/b5x06kTSPElPAbOAv6t3PFvhLOCWegcxxHVXZd1qKC8EeTBwT30j6Z28JtkDwGrg9oioa/xOOv2khyrbRMTciBgHtAIX1DfarnqKP/eZSypX1Fq/SLuqJvZBpuqK6dY/JO0I/IRUmuvlnvoPJBGxMSIOIl2ROExSXS9x1qUMTiOotso28K/AvwOX9GM4vdZT/JJmAx8GjqqmkGot9eJvP1hUqr5u/SzfC/kJ0BoRP613PFsqItZKuou0KnPdJnV4pFMHkiYXvf0I8FC9YtkSkmYAFwEfiYh19Y6nAdxHrrIuaQSpyvpNdY6pIeQb8ZcDSyPiG/WOp7ckjSnMLpW0PXA0df6+8ey1OpD0E+AdpFlUK4BzIuLp+kZVPUnLgG2B53PT3YNl9p2kk4BvAWOAtcADEXFcfaPqWXdV1gcDST8C3k8qr/8scElEXF7XoKok6Y+B/wLaSf9/BfjbXIB4wJM0HVhA+nczDLg+Ir5Y15icdMzMrFZ8ec3MzGrGScfMzGrGScfMzGrGScfMzGrGScfMzGrGSceGLEmjcyXvByT9QdLT+fVaSTUt2CjpoDztufD+I1taLVrSckm79110vTr3J4qrokv6f5Km1DsuGzycdGzIiojnI+KgXALke8Cl+fVBdPzmos9IqlTh4yBgc9KJiJsi4qt9HUMNfALYnHQi4i8GS8VlGxicdKxRNUn6QV5j5Lb8a20k7SfpPyQtlPRfkg7I7RMk3ZHXELpD0vjcfqWkb0i6E/iapB3y+jH3SfqdpBNyFYEvAh/PI62P5xHDt/Mx9lRal+j3+fHu3P7zHMcSSXN6+kCSzpT0iKT/zJ+tcPwrJZ1c1O/V/Lxj/iz3S2ov1KaTNFFp/ZhOf598jBagNX+O7SXdpTLrEkk6TWkdlwckfV+p6GRTjmVxPt9fbsX/fjZIOelYo5oMfCcippIqE3wst88HPh0RhwJ/A3w3t3+btB7MdFKB028WHWt/4OiI+GtgLmmtoXcBRwL/RCon/3fAdXnkdV1JLN8E/jMi3gkcAizJ7WflOFqAz0ga3d2HUVr35e+B95DW3ZlSxd/gDeCkiDgkx/r1XPal7N8nIm4A2oBZ+XO83k0sBwIfB96TR5YbSdXUDwLGRsS0iGgGflhFjDbEuOCnNaonIuKB/HohMDFXEn438OOO7162zc9/BHw0v74a+MeiY/04Ijbm18cCH5H0N/n9dsD4HmL5AHAGpIrAwEu5/TO5bA+kgp+T6Sg9VOpw4K6IWAMg6TpSMqxEwFeUFlnbRFouYc+8rcvfp4djFTsKOBS4L/8dtyeV1f83YF9J3yIVub2tF8e0IcJJxxrV+qLXG0lfjMOAtfm/zntSXD/qtaLXIo0KOi0UJ+nw3gQn6f2k4ox/FBHrcnXg7XoRU7EN5KsaeSQzIrfPItWgOzQi3pK0vOgc5f4+VYcPLIiIz3XZIL0TOA44H/gz0npM1kB8ec0sy+ukPCHpFEhf0PlLEuB/SNWdIX1Z/3c3h7kV+HThMpWkg3P7K8BO3exzB3Bu7t8kaWdgF+DFnHAOAI7oIfx7gPfnGXvDgVOKti0njTwgrTg6PL/eBVidE86RwIQeztHT5yj+PCdL2iN/pt3yPbHdgWER8RPg/5AuJVqDcdIx62wWcLak35PurRQWfvsMcKakRcDpwIXd7P8l0pf6IkmL83uAO4EphYkEJftcCBwpqZ10KWsq8B/ANvl8XyItC96tiFgFfAH4LfBL4P6izT8A3ifpXtJluMLIrBVokdSWP3c1Je+vBL5XmEjQTSwPAp8Hbsvx3w7sRbp8d5fSKpZXAl1GQjb0ucq02RAk6RNAS0QMuFVprbF5pGNmZjXjkY6ZmdWMRzpmZlYzTjpmZlYzTjpmZlYzTjpmZlYzTjpmZlYz/x8vLmBNNv5RTQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Parece que não né, vamos comparar graficamente.\n", + "sns.distplot(temp['salario'].fillna(0), fit=stats.norm);\n", + "\n", + "(mu, sigma) = stats.norm.fit(temp['salario'].fillna(0))\n", + "plt.legend([f'Normal dist. ($\\mu=$ {round(mu,0)} and $\\sigma=$ {round(sigma,0)} )'],loc='best')\n", + "plt.ylabel('Frequencia')\n", + "plt.title('Distribuição de Salarios')\n", + "\n", + "fig = plt.figure()\n", + "res = stats.probplot(temp['salario'], plot=plt)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para variáveis com valores \"explosivos\" ou com excesso de outliers (ou em casos mais complexos com excesso de [heterocedasticidade](https://pt.wikipedia.org/wiki/Heteroscedasticidade)) devemos [transformar](https://en.wikipedia.org/wiki/Data_transformation_(statistics) a amostra com a função log." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df['log_salario'] = np.log(df['salario']+2)\n", + "df['log_salario'].plot.hist(bins=50)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8103.083927575384" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.exp(9)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "temp = df[(df.log_salario > 2) & (df.salario<999999)]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Parece que não né, vamos comparar graficamente.\n", + "sns.distplot(temp['log_salario'].fillna(0), fit=stats.norm);\n", + "\n", + "(mu, sigma) = stats.norm.fit(temp['log_salario'].fillna(0))\n", + "plt.legend([f'Normal dist. ($\\mu=$ {round(mu,0)} and $\\sigma=$ {round(sigma,0)} )'],loc='best')\n", + "plt.ylabel('Frequencia')\n", + "plt.title('Distribuição do Log dos Salarios')\n", + "\n", + "fig = plt.figure()\n", + "res = stats.probplot(temp['log_salario'], plot=plt)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. Qual a relação entre educação e salario?" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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HsBJavkh8IbzWNWe6AJ8FXjAWedD4okt9LIPGcbWrVvHjBkzmDZtGnfe2f2v7D/+4z+YNWsWc+bM4ZJLLuGjjz7q+OzWW2/l9NNP5/TTT+fxxx8fqmp38cQTTzBr1ixmz57NF77whS6fNzQ0MG/evI7H2LFj+eY3v3lS+7j33nuZNm0axphOA5Fra2v567/+a+bMmcPChQt57733Oj47evQoK1asoLS0lJkzZ7J58+b+H6RIOrPW6mEtZ511lj3e+++/36UsE4TD4aRsNxKJDGjdkpIS++GHH9q2tjY7Z84cu3379i7LvfDCC7apqclaa+3PfvYz+7nPfc5aa+0zzzxjL730UhsOh21jY6M966yzbF1dXb/r0187d+608+bNszU1NdZaaw8fPnzCdc4880z70ksvndR+3nrrLbtnzx77iU98wlZVVXWUf/vb37Z33HGHtdbaHTt22Isvvrjjs+uvv97ef//91lpr29rabG1tbZftZurfvIsM6JyXAfp07Jq5ZRjbu3cvpaWl3HDDDcyZM4cVK1bQ3NwMwJtvvsmFF17IWWedxbJlyzh48CAA999/P2effTZz587lM5/5TMfyX/rSl/jWt77FRRddxK233spLL73U0eKYP38+DQ0NWGu55ZZbOP300znjjDM6Wk0bN25kyZIlHa2F6667DmvjeURTpkxh1apVnH/++fzP//xPv4/19ddfZ9q0aZSUlBAIBLjmmmt4+umuPdQXXXQROTk5ACxatIiKinhi7/vvv8+FF16Iz+djxIgRzJ07l3Xr1gFw++23s3bt2i7buuOOO/ibv/kbLr74YqZPn87999/f7/q3u//++/na175GQUF8qGlRUbcJxR127dpFZWUlF1xwAQBVVVV85jOf4eyzz+bss8/mz3/+c7frzZ8/nylTpnQpf//997nkkksAKC0tZe/evRw+fJj6+no2bdrEV77yFQACgQCjRo3q72GKpDUFvmHugw8+4KabbmLbtm3k5+fzs5/9jHA4zNe//nWefPJJ3nzzTb785S/zve99D4BPf/rTvPHGG7zzzjvMnDmTBx98sGNbO3fuZMOGDfz7v/87P/rRj/jP//xPtm7dyssvv0x2djZPPfUUW7du5Z133mHDhg3ccsstHQH17bff5ic/+Qnvv/8+5eXlnU7IwWCQV155hWuuuaZT3R955JFOXXrtjxUrVnQ5zv379zNp0rEcpuLiYvbv39/rz+bBBx/k8ssvB2Du3Lk8++yzNDc3c+TIEV588UX27YuPglm1ahVXXnllt9vYtm0bf/jDH9i8eTOrVq3iwIEDXZa54IILuj2ODRs2dFl2586d7Ny5k/POO49FixZ1BN+ePProo3z+85/vSCy5+eab+cd//EfeeOMNfvvb33LjjTf2uv7x5s6dy1NPPQXEv0x89NFHVFRUUF5eTmFhIX/7t3/L/PnzufHGG2lqajqpbYtkimSO45NBMGnSJM477zwAvvjFL7J69WqWL1/Oe++9x2WXXQZANBplwoQJALz33nv88z//M0ePHqWxsZFly5Z1bOuzn/0sXq8XgPPOO49vfetbXHfddXz605+muLiYV155hWuvvRav18u4ceO48MILeeONN8jPz2fhwoUUF8eTaOfNm8fevXs5//zzAfj85z/fbd2vu+46rrvuuj4dZ3sLMlFvWYa/+c1v2LJlCy+99BIAS5cu5Y033uCTn/wkhYWFnHvuufh8J/7zvuqqq8jOziY7O5uLLrqI119/nauvvrrTMi+//HKfjgEgEomwa9cuNm7cSEVFBRdccAHvvfdej62rxx57jF//+tcd7zds2MD777/f8b6+vp6Ghgby8vL6tP/bbruNm2++mXnz5nHGGWcwf/58fD4f4XCYt956i5/+9Kecc8453Hzzzdx555388Ic/7POxZaqNZZWs2VTOvtpmJhXksHJxCUtKe2+pZ4JYN/9zbqHAN8wdf/I3xmCtZfbs2d0mJ3zpS1/i97//PXPnzuVXv/oVGzdu7PhsxIgRHa9vu+02rrjiCv74xz+yaNEiNmzY0G3waZeVldXx2uv1EolEut1uokceeYS77767S/m0adN48sknO5UVFxd3tNAgPnnAKaec0u12N2zYwL/+67/y0ksvdarX9773vY6W7xe+8AWmT5/e4/G06+7ne7wLLriAhoaGLuU/+tGPuPTSS7scx6JFi/D7/UydOpUZM2awa9cuzj777C7rv/POO0QiEc4666yOslgsxubNm8nOzu607LJlyzh8+DALFizggQce6PF48vPz+a//+i8g/mVi6tSpTJ06lebmZoqLiznnnHMAWLFiRY8JRG6ysayS29dux+81jMr2U9nQyu1rt7MKMj747atpSXUVUkZdncPcxx9/3BHgHn30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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Novamente a viz não nos ajuda a ver alguma relação.\n", + "sns.jointplot(x=\"anos_estudo\", y=\"salario\", data=temp.sample(10000), kind='reg') # hue='estado_civil'" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaUAAAGoCAYAAADmTPpwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xl8VOW9P/DPc2afrJOVkAUIW8K+iigFXOperEjde7G2V9qf1atWq71W7UXvrVqqLVUr1o3eq7YVq8VdURFwBRQwQIAQlkzIvk4y+znP748zGRIyJ5k1c2bm+3695jXJk8mZ72Qm53uenXHOQQghhKiBEO8ACCGEkD6UlAghhKgGJSVCCCGqQUmJEEKIalBSIoQQohqUlAghhKgGJSVCCCGqQUmJEEKIalBSIoQQohraeAcQAlp6ghCS6Fi8A1A7qikRQghRjUSqKSW8l748HtLjr1lQFqNICCFEnaimRAghRDUoKRFCCFENSkqEEEJUg5ISIYQQ1aCkRAghRDUoKRFCCFENSkqEEEJUg5ISIYQQ1aDJs4SEgSZCExIbVFMihBCiGpSUCCGEqAYlJUIIIapBSYkQQohqUFIihBCiGpSUCCGEqAYlJUIIIapBSYkQQohqUFIihBCiGpSUCCGEqAYlJUIIIapBSYkQQohqUFIihBCiGpSUCCGEqAYlJUIIIapBSYkQQohqUFIihBCiGpSUCCGEqAYlJUIIIapBSYkQQohqaOMdQKrodnrQaXeDA0jTa6HX0vUAIYScipJSDHXa3fi/L47hw+pm7K7rhMTlco3AMCbHjMqiTMwfm0MJihBCfCgpxYDbK+H5T4/giY9rYHN5MaMkGz8/eyKs7XYAQIvNhZqWHrz1bQM2H2zB0kn5OL08FxqBxTlyQgiJL0pKUVbXbsfPX/4Gu+s6sXRyPu66oAKVRZkAgJe+PD7gscfaerFpfxPe+rYBe6yduGJeKXLTDfEIm0SJ0yOirsOObocXdrcXaXotssw69Li8SDfQvxshw2Gc83jHECzVB7r5QDNuefkbcA48smIGLpxeNODnpyalPrutnfjXrnpIEnD53BJML84CAFyzoCzmMZPw9H8vRYljj7UTXx/vwJHWXn8zbX96rYBFE/KwfE4xLpxWRLXi1EVv/DDo0i1KNuy04q5X92BSYQaeum4OxuSmBf27M0uyMTY3DS9/dRwvf3UcbVMKsWRSfgyjJdEgcY6dRzvw8cFmdNo9yEvXY9GEfEwsTIfFrIdZr0Gvy4v2XjcEgeHdqkb8/KVvUJ5/EP9xzkQsmzkajKXuOUrpIi0QukBLHZSUouDpLYfxP29X48wJuXjqurnIMOpCPkaWSYcfLxqHf35txfv7mtBic2HFvBIYtJoYREwiVddux8bdJ1Df6UBZjhnLZo7G5MKMQUnGqNMgN92AaxaU4Z6LKvHu3kb86aMa/MffduHFL4/jwe9Pw6TCjDi9CkLUh4Z9RehPHx7C/7xdjYtnFOG56+eHlZD66DQCrphXinMqC/BNXSeue+ZLtPe6oxgtiZTLK+Lhd6vx1CeH0e304Mr5pVi1uBwVozKHrfUIAsNF04vw1s2L8Nvl03Gg0YaL/rgVaz88BI8ojdArIETdKCmFiXOOxz44iN9/cBDLZxfjj1fOikqthjGGcyoKceX8Uuy2duH7T3yKQ022KERMIrW/oRuXPv4p/rz5MOaOseC2cydhZkl2yE1wgsBw9Wll+OgXS3Dh9CI8+sFBLH/yMxyk95kQGugQDs45Hnq3Gus+qcUP5pbgoctnBNVxHUobOgBUFmXgxv/dCYdbxJ+uno2zKgrCDXlEJVtfgVeU8PTWWjz2wUFkmfR4+PLpaOp2hXSMoV7nW3sacO+/qtDj9OL28ybh379TnhIDIZLtcxKk5H9jI0Q1pRBJEsdvNu7Fuk9qcd3pZXg4yIQUjtllFvzrpjNRlmPGj9dvxzNba5FAFxFJYX9DN5b/+TM88u4BfHdKId6/bTHOqSyM6nNcPKMI7926GGdV5OOhd6rxg6c+Q21LT1Sfg5BEQUkpBKLE8Z+vfYv1nx/DTxaNwwOXToMQ4yva0dkmbPjZQpw3ZRQefGs/7np1D5weMabPSeT5RmveO4Dv/Wkb6jsc+NPVs/HENXOQk6aPyfPlZxjw1HVz8YcrZ6GmuQcXrd2K57YdgRRofDkhSYySUpC8ooRf/GMX/ra9DjefPQH3XFw5YsN5zXotnrx2Dm4+ewL+scOKS/60DXtPdI3Ic6eizw+34eK1W/H4xzVYNms0Nt2+BN8bgeHbjDF8f3YxPrh9CRaW52L1m/tw9V++wPE2e0yflxA1oaQUhC6HBz96YTte33UCd54/Gb84b/KIzy8RBIZfnDcZ//vj09Dt8OD7T3yKR96tht3tHdE4kllVfReuf/4rXP2XL+D0SFh/w2l49IpZsMSodqSkMNOI566fj0dWzMC+E90497FP8NA71eh2ekY0DkLigeYpDeNIay9+sn47jrXZ8cjlM3DF/NK4xvOdifl479bFeOCtfXhy82G89k09/uOcibhsTrHq5jRJnMPtleAWJYgSh1Zg0GkEaAUGjcBUMXHU7ZXw8YFmPP/pEXxR244skw6/urACK88YC6Mufn9PxhiumFeK70zMw+/eO4CnPjmMv20/jpULx2LlGWNj1owYD5xz2FxeNHQ60WxzosPuRpfdA4dHgtsrgjGGf35tRU6aHkVZRozJTcOU0ZmYOjozoikYRJ1o9J3Sk3GODTutuH/jXui1Ap66bi5OL8+N6Jihjr4bbsTRzmPtWP3GPuy2dmFUphHXnV6GS2cVozTHHEmYQfGKEhq6nKjrsMPa7pDvOxyoa7fjYJMNdrcI7xD9IQyA2aBFqcWE/AzDyVu6fF+QYZTvMw3IMGj9CSwaI7ZabC58UduGrYda8N7eJnQ5PBidZcTKM8biqtPKkGUa/kQX7fdyuGPXdzrwUXUz9jd0Q6dhmDY6C3PHWjA2Nw3XnT4mpFjizStKqG604alPDuNYmx3H2nrR7TxZ4zfqBGSb9DDpNTBoBUicIzfNgPZeN050OWDzPVYjMMwuzcZ3JubjO5PyMKM4C1qN6ht/4n8lpnKUlAKoa7dj9Zv78MG+JpxenoPHrpyFoixTxMeNxYmMc45tNa348+bD+OxwGwBgZmk2Fk3IxYJxuagoykB+umFQrWS4WDyiBJvTiy6HB1NGZ6Cu3QFrhx11vgTU0OWE2C/pCAwoyjKhxGKCR+RIM2ig1wjQawV/7cgrcXhFCV6Jwy1K6HWJyDLp0NLjQqvNhRabC+4Ak0iNOsGfqJweERlGLcx6LYxaAQadfOLSawUwMPS9TAbg9PG5sDm9aOtxoaHLiWNtvTjQaMOJLicAIMOgxXenFOKSmUVYPDEf/9hhHfbvHa5Ik1Kfpm4nPjvchj3WTri8EjIMWn/888flIE+FC/p29Lqxp74Lu453Ysexdnx9rAO9bnmwTrZJhzG5ZpTmmFGUZUJhpgFm/eAGnP5/v2abE3tPdGPn0Q5sPdSCPfVd4BzINGpxdkUBzps6Cosn5at1AVxKSsOgpNRPa48Lz207gme3HYHAGG49dyJ+EsU5I6EmpVBcs6DMv/TNR9XN2FXX6U8aWSYdirKMKMw0wqTTQKcVYG23QyMwSJzD5ZXg9kpweSU4PCJsTg+cnsHJoSDDgNIcM0osJpRazCjNke9LLGYUZRuh812lhlub4Zyj2+FFs82JFpsLzb5E1Wxz+r8+1NyjGN9Q0g1alFhMmDwqA1OKMrGgPBfTRmcOuLKO9fsTrGDicHsl7Gvoxr6Gbhxp6fGf5EssJkwsSMcE3218fjoKM43ISzfApI9tc2Svy4ujbb042mrH0bZe7G/oxh5rF477tmxhDJhcmIH5Y3Mwb6wF9R0OZJuDa4Yc6u/X0evGp4dbsflACz7c34QOu8e/AO55UwpxTmUh8jNUk6wpKQ0j5ZOSJHHsPN6Bf35dj39+bYVblPC9GaPxq4sqolI76m8kT3o9Li/2WDtxoNGGmuYeNHW70GJzwumR4BEldNjdECUOxhgMWsF308CgE5Bh1CHTqEWmUYcMoxbXnj4GJRZT0H0ssZwU2Xfsvv4qp0f0J1UOAJz7PyjLZo1GukGLnDR9UH0PiZSU+lsxtwRVJ7rw1ZF27D3RjZrmHhxu6YHbOzBxpxu0MGgFmPQa6LUCDL6arF4r1zZ1GgECk/uzBAYIjGHuGAsEgUGSOFxe0X/xYneLaLe70d7jRnuvG229LrT2DFwSK9ukQ7HFhBKLfCFTnB38Z+hUwf79vKKEncc68P6+Jry3txHWDgcYkxc9Xjg+F6eX52LeGAvS4leLoqQ0DFXWb2PJ6RFR29KLqhNd+LK2HZ/WtKKx2wmDVsBls4vx74vLMT4/Pd5hRizdoMUZ4/Nwxvi8gD8P5cQ3oUB9fw+BMRh1miFPclNHZ41gRPGj1wqYU2bBnDKLv0yUOKwddtS29qLF5kJrj1zT3HG0Ay6vnMg73R55IIpXgkuU4OlL7P28u7dxwPeMQU5sOg0saXrkpukxJteMOWOy0dbjRm66AblpeuSm6+My8EarEbCgPBcLynPx64srUd1ow3t7G7H1UCv+sqUWf958GFqBYVpxFiqLMjCxIAOTCjMwsTAdBRmDm7nJyEvapOQRJax57wBae9xo7XHJV3I2N1p6XP5mrZw0PRaMy8EF00bhnMpCtbZBExIyjcAwJjdt0BYqw12MSJyD85P3l88thiQBGg2DXiNAp1EeNRnLmmY4GGOoLMpEZVEmbj13EuxuL3Ye68AXtW3YfrQD71Q14mV7nf/xeo2AvHQ98nwDbixpehh1cguCUSdAr9FAYHKTzZwyCxZNDHzBRyKTMM13jLF3AYz0pyAPQOsIP2eoKMboSYQ4KcboiUecrZzzC0b4ORNKwiSleGCM7eCcz4t3HEOhGKMnEeKkGKMnUeJMNaof1E8IISR1UFIihBCiGpSUhvZ0vAMIAsUYPYkQJ8UYPYkSZ0qhPiVCCCGqQTUlQgghqkFJiRBCiGpQUiKEEKIalJQIIYSoBiUlQgghqpEwSemCCy7gkJedohvd6Ea3RL0FJUnPd0FJmKTU2poIS2kRQkjkUvl8lzBJiRBCSPKjpEQIIUQ1KCkRQghRDdrVjowIj8cDq9UKp9MZ71AIiTmj0YiSkhLodLp4h5JwKCmREWG1WpGRkYGxY8fSltMkqXHO0dbWBqvVinHjxsU7nIRDzXdkRDidTuTm5lJCIkmPMYbc3FxqFQgTJSUyYighkVRBn/XwUVIihBCiGpSUCElC7777LiZPnowJEybgoYceCviYp556CtOnT8esWbOwaNEi7Nu3b8DPjx8/jvT0dKxZs2YkQlZ08803Iz09fcjHhBvrBx98gLlz52L69OmYO3cuPvroI//P3G43brzxRkyaNAkVFRV49dVXB/zuhg0bwBjDjh07QnpOMjQa6EBIBLxeL7Ta6P8biaIIjUYT9u/edNNN+OCDD1BSUoL58+dj2bJlmDJlyoDHXXPNNfjpT38KANi4cSNuv/12vPvuu/6f33bbbbjwwgvDfxFRsGPHDnR2dg77uHBjzcvLwxtvvIHRo0ejqqoK559/Purr6wEA//3f/42CggIcPHgQkiShvb3d/3s2mw1r167FggULQn5OMjSqKZGUcPToUVRUVGDlypWYMWMGVqxYAbvdDgDYuXMnlixZgrlz5+L8889HQ0MDAOAvf/kL5s+fj5kzZ+Lyyy/3P/7666/H7bffjrPOOgt33XUXPvnkE8yaNQuzZs3C7NmzYbPZwDnHnXfeiWnTpmH69On4+9//DgDYvHkzli5dihUrVqCiogLXXnst+nZ/Hjt2LFavXo1FixbhlVdeCfu1fvXVV5gwYQLKy8uh1+tx1VVX4V//+tegx2VmZvq/7u3tHdAP8vrrr6O8vBxTp04d8DsXXXQRTpw4MehYS5cuxa233oozzjgD06ZNw1dffRV2/H1EUcSdd96JRx55ZMjHKcX6f//3fzjttNMwa9YsrFq1CqIoDvrd2bNnY/To0QCAqVOnwul0wuVyAQCee+45/OpXvwIACIKAvLw8/+/de++9+OUvfwmj0RjRaySDUVIiKePAgQO48cYbsWfPHmRmZuLJJ5+Ex+PBzTffjA0bNmDnzp244YYbcM899wAAli9fju3bt2P37t2orKzEs88+6z/WwYMHsWnTJvz+97/HmjVr8MQTT2DXrl3YunUrTCYT/vnPf2LXrl3YvXs3Nm3ahDvvvNOf7L755hv84Q9/wL59+1BbW4tPP/3Uf1yj0Yht27bhqquuGhD7iy++6E98/W8rVqwY9Drr6+tRWlrq/76kpMR/9X+qJ554AuPHj8cvf/lLrF27FoCcoB5++GHcf//9gx7/9ttv+0/ip+rt7cVnn32GJ598EjfccEPAv3+g1zBr1qyAtaHHH38cy5YtQ1FRUcDnGyrW/fv34+9//zs+/fRT7Nq1CxqNBi+++KLicQDg1VdfxezZs2EwGPzx3HvvvZgzZw5+8IMfoKmpCYD8/tXV1eGSSy4Z8niRaO1xxezYakfNdyRllJaW4swzzwQAXHfddVi7di0uuOACVFVV4bvf/S4A+eq87yRYVVWFX//61+js7ERPTw/OP/98/7F+8IMf+JvXzjzzTNx+++249tprsXz5cpSUlGDbtm24+uqrodFoUFhYiCVLlmD79u3IzMzEaaedhpKSEgDArFmzcPToUSxatAgAcOWVVwaM/dprr8W1114b1Ovsq3n1pzQa7KabbsJNN92El156CQ8++CDWr1+P+++/H7fddtuw/TinuvrqqwEAixcvRnd3Nzo7O5Gdne3/+eTJk7Fr166gjnXixAm88sor2Lx585CPU4r1ww8/xM6dOzF//nwAgMPhQEFBgeJx9u7di7vuugvvv/8+ALlZ1mq14swzz8Sjjz6KRx99FHfccQfWr1+P2267DS+88EJQryNcDV2pO5yckhJJGaeemBlj4Jxj6tSp+Pzzzwc9/vrrr8frr7+OmTNn4oUXXhhwgkxLS/N/fffdd+Piiy/G22+/jdNPPx2bNm0KmBj6GAwG/9cajQZerzfgcft78cUX8bvf/W5Q+YQJE7Bhw4YBZSUlJairq/N/b7VaFWs3fa666ir87Gc/AwB8+eWX2LBhA375y1+is7MTgiDAaDTi5z//+ZDHCPT37e/AgQOKSXfz5s0DEtg333yDmpoaTJgwAQBgt9sxYcIE1NTUDPg9pVg551i5ciV++9vfDnj8a6+9hv/6r/8CADzzzDOYN28erFYrLrvsMvz1r3/F+PHjAQC5ubkwm8247LLLAMgXIc8++yxsNhuqqqqwdOlSAEBjYyOWLVuGjRs3Yt68eUP+fUiQOOcJcZs7dy4niWvfvn1xff4jR45wAPyzzz7jnHP+k5/8hK9Zs4a7XC4+fvx4f7nb7eZVVVWcc85zc3N5U1MTd7vd/Nxzz+UrV67knHO+cuVK/sorr/iPXVNT4//60ksv5a+99hp/9dVX+Xnnnce9Xi9vbm7mZWVlvKGhgX/88cf84osv9j/+pptu4s8//zznnPMxY8bwlpaWiF+rx+Ph48aN47W1tdzlcvEZM2b4X1N/Bw8e9H+9ceNGHuh/7P777+e/+93v/N+fffbZ3Gq1DnrckiVL+KpVqzjnnG/dupVPmzYt4tfRX1pa2rCP6R/r3r17+YQJE3hTUxPnnPO2tjZ+9OjRQb/T0dHBZ8yYwTds2DDoZ1deeSX/8MMPOeecP//883zFihWDHrNkyRK+ffv2gPEofOaDOt/pR00Y+sUmpqBeO9WUSMqorKzE+vXrsWrVKkycOBE/+9nPoNfrsWHDBtxyyy3o6uqC1+vFrbfeiqlTp+KBBx7AggULMGbMGEyfPh02my3gcf/whz/g448/hkajwZQpU3DhhRdCr9fj888/x8yZM8EYwyOPPIJRo0ahuro65q9Tq9Xi8ccfx/nnnw9RFHHDDTf4BwHcd999mDdvHpYtW4bHH38cmzZtgk6ng8Viwfr164c8riRJqKmpQU5OTsCfWywWnHHGGeju7sZzzz0X9dfVZ+PGjdixYwdWr16t+JgpU6bgwQcfxHnnnQdJkqDT6fDEE09gzJgxAx73+OOPo6amBg888AAeeOABAMD777+PgoICPPzww/jhD3+IW2+9Ffn5+Xj++edj9poCkSQOQUi9SbiMD9HMoCbz5s3jNB8gce3fvx+VlZVxe/6jR4/ikksuQVVVVdxiSHRVVVV47rnn8Oijjw762dKlS7FmzRpqwupH4TMfVJYxFE3kPdYD0GmSaixaUK89qV4xISR2pk2bFjAhkdgQpcSoMEQbNd+RlDB27FiqJcXQcKPkwmVzeNDS44LbK0GvFZCfbkCGKTW2g5ASpBUr2qimREZMojQVE3WwOTyo73LAI3JoBAaPyFHf5YDN4Yl3aMOKxmfdm6I1JUpKZEQYjUa0tbVRYiJBa+lxgYGhr69fYAADQ4vKJ5Zy335Kka72IKVoUqLmOzIiSkpKYLVa0dLSEu9QSIJo7HIi0OAziQOuVnUv79O382wkqE+JkBjS6XS0CycJyeqnv0CzzQmz/uRpyu72oiDDiJdvnB3HyEaGmKKtCpSUSMxsrm7Gui21qOuwo9RixqrF5VhaobzUCxlZan9/Vi0ux80vf41etwiJy813aXoN7r14yvC/nAQkKd4RxAf1KZGY2FzdjPs27kWzzYlskw7NNifu27gXm6ub4x0aQWK8P3usnf6EBMjNdr1uEXusw29lQRIXJSUSE+u21EKnYTDrtWBMvtdpGNZtqY13aASJ8f48s+0IGOsb4OC7Z3I5SV6UlEhM1HXYYdIN3KTOpNPA2mGPU0Skv0R4f3pcXogSwDkAJt+LklyeCjhSs0+JkhKJiVKLGQ7PwE3VHB4RJRZznCIi/SXC++NfZbxvBB47pZwkJUpKJCZWLS6HR+Swu73gXL73iByrFpfHOzSCxHh/TDo5+XB+8gYAZh0lpWRGSYnExNKKAqxeNhUFGUZ0OTwoyDBi9bKpqhrdlcoS4f2ZXmxBtkk7YPJstkmLacWW+AZGYoqGhJOYWVpRoKqTHBlI7e/PqsXluG/jXuSmG2DSaeDwiKqrzcWSV6Q+JUIIUY2lFQWYW5aFo212VJ3oxtE2O+aWZak6kUYTrX1HCCEqsnbTQby+q8G/3I4ocby+qwFrNx2Mc2QjwyOm5uxZSkqEEFV64uOaQYOiua88FVBSIoQQFXEp9KkolScbT4q8zlNRUiKEEBVK1ZoSjb4jhESF2hd4TTQeb2omJaopEUIilggLvCYaD42+I4SQ8CTCAq+JJlVrStR8R0iUpWIzVl2HHdkm3YCySBd4ZUDAJUlTZZEh6lMiMZOKJ6lU1deMpdOwAc1Yq4Gkfs9LLeZBu8RGusCrILCAW4ILgfZIT0LuFE1K1HwXY9TWnlrWbamF2yuiscuJA002NHY54faKSd+MFYsFXiWFPhWl8mRjd4vDPygJUVKKMWprTy0Hm7rR1uuGV+TQMAavyNHW68ahpu54hxZTibDAa6JptbniHUJcxLT5jjH2HIBLADRzzqf5yn4H4HsA3AAOA/gR5zxp9zeORVs7US+PyCFxDpFzcC7vlMoY4FbhRMhoNytHe4FXpb+Y+v6S0Scwhpae1ExKsa4pvQDgglPKPgAwjXM+A8BBAL+KcQxxVWoxo63XhdqWHlQ3dqO2pQdtvS5VbaZGokuUAInLJ0/Jt1uq2lCzsroJDGhJ0ZpSTJMS53wLgPZTyt7nnPftZ/wFgJJYxhBvC8tz0NTtQq9bXna/1y2iqduFheU58Q6NxIBLYRivUnm8ULOyumkERkkpTm4A8I7SDxljNzLGdjDGdrS0tIxgWNHzTlUj4GvGAXz33FdOkk6iJKW6DjtMOs2AMmpWjq/+5zvJ60nZ5ru4DQlnjN0DwAvgRaXHcM6fBvA0AMybNy8hm5JrW3uh1TBohJP5X5Qk1Lb2xjEqkupiMYSbpj5Epv/5LndsJW/upqQ0YhhjKyEPgDiHc56QySbeEuEEkAgxRluiTPhctbgcd2zYjfpOB0SJQyMwpBu0uPfiKWEdL1XnZ8WKwBgcHhEurwiDVjP8LySREW++Y4xdAOAuAMs450nfVjAu1wxR4nB6RDg8IpweEaLEMS43sitStXdSJ0KMsVCcZQipPJ4YAHCAc3lURiSJk/qooquvub/XlXpzlWKalBhjLwP4HMBkxpiVMfZjAI8DyADwAWNsF2PsqVjGEG8XTS+CyE9ePXMAIpfLw5UIJ4BEiDEWHrxsBjIMGvQtOiAwIMOgwYOXzYhvYKdYt6UWmSYdJhZmoLIoCxMLM5Bp0oX9/lAfVXQJvqzU6/IO88jkE9PmO8751QGKn43lc6rNP7YfVyy/5dxJYR0zEeY+JUKMsbC0ogB/unoO1m2phbXDjhKVNlvWddihYUBtSw/cogS9RkBeuj7s9ycWfVSprK+mZHNSUiJRVu/rrGT92kY4P1kejkQ4ASRCjLES7UmkQPT759L1GtS09ELDmH/lifpOJybkp4V1vFWLy3Hfxr2wu70w6TRweMSIlxlKZX01JZvTE+dIRl68h4Qnvb5hHJyfvPUvD0cs1hmLtkSIMVHEon+O+eco9Lv1Lw8RLTMUXX3vgt1DfUokygzawH9ipfJgJMIJIBFiTBSx6J+zubwozjZC61uJWyswFGcb0ROFPgwaThu5vmsDRwouykrNdzEmSYEnTSqVBysWTUTRlggxJoJo9/8AcvPq0baeAWVuUcLY3PSwjkdDwqOLpfBAB6opxZhHIfcolZPEt3bTQcz4zXsY/59vY8Zv3sPaTQcjOl66XoP6TueAlcfrO51I04c/f2VheQ6abW64RQkCkxNSs80d9vJXqTraMlb6akqpuH0F1ZQIiaK1mw7ijx/VQGCAVpAHd/zxoxoACHu0JWMMnHO4JQ4Oub9BYOH3/wDA57XtyDBo0O30wsPl42Uatfi8th23hHG8WNTmUpmGMTDG0NDljHcoI45qSoRE0TPbjkCUODwih8sr34sSxzPbjoR9zJYel3/VceDk6uORrI2cS6drAAAgAElEQVR2sKkbNpd3wMAbm8sb9r5PGQYtjrU7Biw8fKzdgXQDXfeGK9usw/H21FuOjD4xMZauF9DjHtxWl66n6wG1iOZw626FeSVK5cGwu0V/DalvHSOOyJp2HG4JojRg4B1ECbAH+KwGo07h5KlUToaXl27AkdbUq2nSmTHGAiWkocrJyEqE5ZDcXjn5cPimFZxSHg5P/02emEJ5COhzHn0FGQYcbumBmCLbv/ehmhKJmURYkLV/Bz0AmPVa2N1erNtSq5pYNYIAziV/UmJMziP9V54PlSAwaMHlZkHfMTVMLifqUJBpgNsroa7djrF54U1qTkRUUyIxkQg1ECAx1mwbl2sGYww6QYBBK0AnCGCMRbSo77hc88kJ3Tg5sTuSY5LoKsgwAgAONfcM88jkQkmJxMS6LbXocXpwpLUXVSe6caS1Fz1Oj+qGCJdazHCcMmtebcsh3X1hJbLNOjABEDkHE+RO8LsvrAz7mBdNL8KprUJShAsFk+jKzzCAMaCqviveoYwoSkokJvae6EK73SM3DUG+Cm+3e7D3hLr+wRJhOaSlFQVYs2ImZpdaMCrTiNmlFqxZMTOi5sXPa9uRbdYO2BE52ywPCQ+H0gIlESxckvKMOg1GZ5nwaU1rvEMZUfSRITHR6+7XOY+TnfO9KpsMuLSiACvmFKPF5sL+RhtabC6smFOsmv6kU0Wry/tQsw09ThE6jQCjToBOI6DHKeJQsy2s403ID7wShFI5Cc7EwnR8U9eJLnvqLMxKSYnEhNKIIbWNJNpc3YwNX9cjP8OAylEZyM8wYMPX9arq+4pF/5zbK48HFxgDA5NXpWa+8jBUFmWEVE6CM6UoE6LE8f6+xniHMmIoKSWozdXNuPrpL7Do4Y9w9dNfqOokCgAahVFcSuXxsm5LLTyiiMYuJw402dDY5YRHFFXV97VuSy3c3oExur2RxajTMHhEDodvR+S+rSb0mvDen427G0IqJ8EpzjahxGLC29+mzt+RhoQnoERY/FIrcASa8qIT1FVTOtRsQ5fdA0Fg0AgMXomj1eaGRwyvGSsWDjZ1o8Pu8Q9M8IhyEvGGOacIAEwKnT3GMDuBRIW3VamcBIcxhrMrCrBhpxVeUYJWk/z1iOR/hUkoERa/1LDAi4UKCuXxEu1mrFjocYkBR8rZXOH3zzXa3CGVk/hxeSTY3SKqG9VzoRRLlJQSUCLMrXEprDagVB4vOl9zlSRxcM4h+c7+4TZjxYJSgowkcXoV+vaUykn8lFhMAKC6kauxQs13CSgRthpXOrdFes6L9ioRkwozcaS1Bzan17+6dYZRh3F56hk1pvQno/SRGixpemgFhsMtqbGOINWUElAizK2JxYk0FqPQVi0uh16rwagsIyYXZmBUlhF6rUZVf0ulf1I1/fNWjlIYfadQToInMIaCTAO+taZGTUlNn2sSpFjNrYnmiD6lxq9IGsVi0ZeWCNu2J0JN6cJpowa9t8xXTiI3Pj8dO461p8ROtNR8l4D6z60p02ng8IjY8HU9ZpRkh30yjfqIPt8WC4OKI8hKdR12uDxeHGntheTbmC43TRfxoAS1b9sei6SkEwLvfqwL8zL1napG/9Ya/kVjuVwe7uaG5KRJhRnYeqgVq9/Yh4dXzIh3ODFFNaUEFIsaQ9SPqXDG5JGcSTlHS8/JodHyRnce8IgOqv45X7EQKCENVT6c2tZe/+rl/huTy0nkxuWlIS9dj601LRF/3tWOklICisXou0QY0XeiM/DW0ErlwUiU1czVTpQ4RI4BO9mKHP7RjCQyAmP4zoR8nOh0YvPBlniHE1OUlBJQLFa2jvYxY9HkpHQRH0njXSxWS0gESs2o4Tav9g2tP3WtQ62KhtYnutll2chN02P1G/tUN7UimigpJaBVi8vR7fDgUJMN+xu6cKjJhm6HJ6IRY6sWl6PL4cGhZhuqG7vllQ4iPGYiONjUjbZeN7wih4YxeEWOtl43DjV1xzu0mNIr/OcrlQ9Hq7B8lFI5CZ1WI+B7M0fjSGsv/pLEF0000CFBtfW4/TUEryTB3RP5THy3R4TbK0HicnOMW0jeq7E+HpHDI/a/tpe5k3x9HKXFIMJdJIIpVLGUykl4JhVmYOroTPzxw0NgYLjp7AnxDinqqKaUgH7+0s5BTVaSrzxcD72zH3aPBJ0gwOjb3dTukfDQO/sjijWajNrAJzil8mAoDbFNhaG30UR/x5FzsW8jxjeTdJFWSkoJqMcduBdFqTwYR9rsEBggCAyMMQgCg8DkcrVQWn80gnVJaSHRKKG/48jJNutx1uQC7G/oxh5rZ7zDiTpKSiRheBRGcimVE5KsTi/PhUErJOWAHEpKBABQnpcGiQMS5+DgkDiHxOVyQoi6GHUaLBiXg3e+bUBDlyPe4UQVJSUCALjrggqYdQI8ogSnR4JHlGDWCbjrgop4h0YICeC0cbmQOLBhhzXeoUQVJaUEFKtdXQ06DfQaAVoB0GsEGHTq2vuIEHJSTpoe5flp+Nv2OlXt/xUpSkoJaFJB+qA3TvCVh2vdllpoNfLuq4zJ91qVbRxICBlo8cR81Hc68NKXx+IdStRQUkpAd11Qgdx0PYxauVZj1ArITddH1NR2qNmGVpsbXokP2Bb8UHNq7HZJSCKaWJCOM8bnYu1HNei0J8euwZSUEtDSigIsmpALj8ThleTRZ4sm5Ea00nUibAuu1DpJiwaQVMUYwz0XV6Lb4cE9r1clxWKtlJQS0NpNB/HargaIvqHQosTx2q4GrN10MOxj6jQMosTh8Ij+myhxVW0LHqvdbAlJZFNHZ+G2707CW3sa8Pqu+niHEzFKSgno8Y9qQioPhkkrDDq5S1xuGiSEqNdLXx5HlkmHshwz7nmtKuHXxYvpGYcx9hxjrJkxVtWvLIcx9gFj7JDv3hLLGJKRW6FqoFQejGaFtfOUygkh6iEwhstmF8PpEfF2gi8/FOvL4BcAXHBK2d0APuScTwTwoe97EmdKC5Am+8KkhCSLwkwjvjMxH9/UdWJ/Q+Kuch/TpMQ53wKg/ZTiSwGs9329HsD3YxlDMlJ60yJ5M5V6jtTTo0QIGc7iifnQawWs++RwvEMJWzw6DAo55w0A4LtXHDLGGLuRMbaDMbajpSW5d1sMhU5h8IFSeTDSDYE/CkrlhJDo6n++s3Weei0fHJNeg9PG5uCNPQ043NIT5QhHhqrPOJzzpznn8zjn8/Lz8+MdjmrEYmFSkQdOaErlhJDo6n++y8jOCfs4iyflQysw3PzSN1GMbuTEIyk1McaKAMB33xyHGBJaLIZGOz2Bd3dTKk8WNPeJJJt0gxaLJ+VjX0M3PqtpjXc4IYtHUtoIYKXv65UA/hWHGMgp+nYIZezkrX95sqK5TyQZnTk+D7lpety5YQ+6nZ54hxOSWA8JfxnA5wAmM8asjLEfA3gIwHcZY4cAfNf3PYkzk05OPpyfvAGAWZfcSYmQWHF5RBxt7cWWg8148ctjWPPegRF7br1WwBXzStHY7cR9CbbSgzaWB+ecX63wo3Ni+bwkdCXZZlQ3De4YLc42xyEaQtTP7ZVQ32nH8TY76jocsHbYUd/hwIkuJxq6HGjudsF7SpX7jvMnj1h8pTlm3HL2RDy26SBOL8/FVaeVjdhzRyKmSYkkjlqFkTpK5YQkO49XRF2HA8fb7ahrt8Pa4YC104ETnQ40djnRbHP5l/oajsWsQ1GWKcYRD/bzsydgx7F23LdxL6aOzsL0kqwRjyFUlJQIAMCtsO6qUjkhic7tFWHtcOB4mx3HO+yoa3egvtOOE51yTafF5gq6b9Fi1mF0lglF2UaMzjahONuEUosZJTnyfaZJF/F+Z+H4+/Y6LJ6Yjz3WLlz9ly/w1i2LMCZX3btJU1IihCQlt1dCXXsvjrfLtR1rhx31vprOiU4nWnuCTzq5aXoUZRlRlGVEscWM4mwTSiwmjMk1ozTHjHSDVrWDgtIMWvzojLF4emstrnv2S2z46RkozDTGOyxFlJQIIQnJ6RFh7bDjeLvcr2PtcMDa4cCJLgcafEknmJzDAORlGFCUZcToLBOKs+XEU5pjQmmOGWUWM8yGxD5VFmQacf0ZY7H+s6NY/uRnWPfDuZhWrM6mvMT+SxNCUtLcBz9AW5CLBTMA+X1Jx1fDKbGYUZZjRqlFTjwGnSa2AatAicWMv924EKv+dwcu//Nn+O3y6Vg+pyTeYQ1CSYkQEhcOt4j6TjuOtdl9zWsDR7ANpX9CEhhQkGH0J51ii5x4ynLkxFNiMUNPW7AAAKaXZOGNmxfhppe+xu3/2I2PqpvxnxdVYnT2yA/CUEJJiRASUx/ub8KxNjvqfAmnr1+nwx7+pM7/uWwaSnPMGJNjxuhsE7QaSjrBeOnL4wCAi6ePRppei3erGvHe3kYsmZSPx6+ZA6MKaoyUlAghYelxef01m6H8eP2OIX+uFRhGZcq1nNHZRpTmmFFiMeGuV79V/J1rFowJK2Yi0wgM51QWYs4YC96pasSm/c045/ef4P+dNR6XzymJa3KipEQICajb6YG1XW5Sq2uXh01bO06OXutyBFfT0WlOJp3ibBNKcuQ+nTE5ZpTlmlGQYQw4XHqopESiw2LW45rTylDb0oPtR9txz2tVeOyDQ/jxonG49vQyZBp1Ix4TJSVCyADnP7YFJ7ocsDm9QT1erxHgFpUntB144EIItMKtqpXnp+Oeiyvx+eE2/PmTw3j43Wo8+XENfrhwDH505jjkZxhGLBZKSoQkIc45Ou0e/+CBuna5T6dv2PRQDjTZBnxv0Aonm9YsZhRb5AmhY3LlQQR56XqM+9XbisejhJQYGGM4Y0IezpiQh2+tXXhqy2H8+ZPDeGbbEVwxrwQ3fmc8ynJjv+wYJSVCEtjuuk7UdzrkpHPKUjh2d3jbjtx5/mR5uHSOPEk0L12v2omhJHr6BkH0OXN8HiYXZmDroVa8/FUdXvziOKaXZOHsyQUo6Df59poF0V1Tj5ISISrEOUdrjxvWDvuQj7v0iU+HPZZZr/H35xRbTBiTY8Zv36lWfPxNZ00IOV6SnPLSDbhsdjHOqSzAZzWt+PJIO/bWd+OsigIsmZQfk6WTKCkREgecc7T0uPzNaf4mtvaTQ6Zd3uAWHkw3aDE624gSizxqrdS3GkHf91km3aCazlBJiZBTZRp1uGBaERZNzMebe05g0/4m7DvRhcvnRn/yLSUlQkbIr17d4+/XaehyBp10hrL7/vOQZRr5EVIkNaUbtLhqfhmmF3fhX7tO4M+bD+PcykLMLM2O2nNQUiIkDKLE0dTtRH2nXMuxtjtQN0xT28vb6wKWZ5t0/pUIynxzdIqz5eVvii0mzPjN+4rHpIRE4mHq6CyMyU3Dk5tr8LP/24k3b/kOctL0UTk2JSVCFNR3OmBttw9sYutwoL7DjoYu56AN3IZzwbRRKLWcbFYr8Y1kS0/wxT5Jako3aHHtaWPwl221uO3vu/DCj+ZHZUAM/TeQlOQVJTQMs77amQ99FNSxctL0/trNO1WNio976rq5IcVIiNoVW0w4b0oh3tzTgLte/RazfM14kYzIo6REkpLbK6Gxyyk3rflqOVbf0On6Dgeaul0QeXA1nbx0vb85rcQ/T8dX08k2waQ/uSTL2LvfitVLIkSVTi/Pxa66Try15wQmFqQjLcKaPyUlkhTWvHfAP1/H2uFAU7czqL10hvLhL5agONukikUqCVErgTFcNrsYT24+jA07rfjhwsjWJaSkRFTJ6RFxotPhG0jgGHa+zuMf1wQsZwAKM43ydgb+2o7JvyrB0jWbFY85Pj89gldASOooyjLh4ulF2Lj7BLYeasV1p4efmCgpkbiQdw11+Leo7htMUNcuf99ic4V0vPljLSi1DEw4xRYTirJMtJcOISNgwbgc1Lb24oN9jdh+tB3zx+aEdRxKSmTEzXvwA7QGuWuoxretQYnFhC+PtCs+7pWfnhGt8AghYWCMYfnsYticHtz80jd465ZFyE0PfSFXSkokLL0u78k5Ov2GTFvb5bXXhtI/IWkFhlFZRhRnm/y7hPbtHFpiMWFUptG/gRsNIiBE3Yw6DZ64Zg6W//kz3P6P3Xj++vkhL8hLSYkM64VPj8hNa74EVN/pQGcEu4Y+esVMf/IZlRl4Lx1CSGKaVpyF+y6Zgl+/XoU/f3I45LUUKSmlqC6HB/UdJ2s6Q/nNG/sUf6bXCP511/qvt/Yff9ul+DvL50R/vSxCiHpcu6AMWw+14PfvH8D3ZxejONsU9O9SUkpCnHN0O7z99s+R5+b4azodDthcwW3gBgBjc83+UWv9VyMosZiQn24IWD0fKikRQpJfY7cLozKNyA1x+SFKSknmvMc+QX2HA71B7qVj1AoYbTGhtqVX8TGb7zwrWuERQpKYxDn++639+OZ4B3bXdeKRy2eEPM+PkpIKcc7R3usetK2BtXP4XUMPNvUM+N6k06DYtwRO2SlzdEosJuSkyRu40SACQkg4JM5xtLUXVSe6sLe+GzaXF1qBYXZpNpbPKQ75eCEnJcZYBgDOOe8Z9sFkSN8c7/DP0TneZvfP2anvdMDpCW9bg/+8qMKXcOSBBBbz4L10CCEkXJxzdNg9ON5ux5HWXuxr6EavywudhmFSYQamFWehojADBp3GP3I2FEEnJcbYdAB/BZAjf8taAKzknFeF/KxJTpI4WntcqBumVnPZk58Ne6x0g9a/Y2ipRV6R4MG39is+/sbF40OOlxBClLi9Eqyd8gaUx9vtON5uR6+vT1qvETBpVAamF2dhUmE6DNrIl+QKpaa0DsDtnPOPAYAxthTA0wBSbtaiJHE021z+kWvH2+2o8w0msHY40NjlhFsMrqaTadSiKPvkAp9l/hFsck0n0H45QyUlQgiJhM3pweGWHhxrk89rjV1O9O3Skpumx6SCdJTlmlFqMaMwBlM6QklKaX0JCQA455sZY2lRjUYl+m/gVue7MpC3qZab1xo6Q99LJ5Bvf3MeMoy0SRshJLaG2kpClDj2WDvx8YEWbD7QjD3WLgBAml6DmaXZWD67BHPGZGNWqSVqG/kNJZSkVMsYuxfA//q+vw7AkeiHFHteUUJjt9O/1trx9pOTQus7HGjsdkIMMulYzL5dQ7PlFQjKcswDtjiYdv97ir9LCYnEi0ZgAT/jNJE5NXTZPfjkUAs+rm7GJwdb0N7rhsCA2WUW3HHeJCydXIDKosy4fB5CSUo3APgvAP+EvPjyFgA/ikVQkfKI8l46de12HGu3+0avOXy1nND20slJ06E42+xPOqU5JpTlpqHE189j1tMARpJ4lC66gr0YI4nJ5RXx7LYjePyjGtjdInLS9FgyKR9LJ+dj8cR8WEagJjScoM+onPMOALfEMJag9W3gdry919e0Jg+Xru9w4ESnE822k22gw8lN05+s6eSYUGYxy7WdXDPtpUNIkHQCEGjAqI4WaFeNj6ubsfrNfTjS2otzKwvx/84aj5kl2aqrHQ+blBhjf+Cc38oYewMYvG8a53xZTCI7xfF2O77/xKc44dvWIJicwwDkZRhQlGVESbZvAEGOCWN8TWyjKekQEhU6jQCPNDgr6cIYEkyiS5Q4bv/HLvzz63qU56XhhR/Nx9LJBfEOS1EwNaW+PqQ1sQxkOF0OD3bVdQ4oExiQl25AUbYRJdlmjM42YkxuGkotchPb6GxjVIYoEkKGZleYV6dUTkaGV5Tw8vY67G/oxi1nT8DPz56o+v3Fhk1KnPOdjDENgH/nnF83AjEFlGXSYdWScpRZ5FrOmFwzbeBGCCEK3F4JH1Y3YX9DN1ZfOhX/tnBsvEMKSlB9SpxzkTGWzxjTc86D250tyspyzPjVhZXxeGpCCEkoTo+Iv35+FMfb7XhkxQxcMa803iEFLZShY0cBfMoY2wjAv3on5/zRcJ6YMXYbgJ9A7qf6FsCPOOfOcI5FCImvvHR9wN2E89LjP5or1TjcIp7/7AhOdDrwx6tm43szR8c7pJCE0vZ1AsCbvt/J6HcLGWOsGPJIvnmc82kANACuCudYhJD4W7NiJgynNKUbtALWrJgZp4hSE+ccr35tRUOnE9cuGJNwCQkIbUj4f8XguU2MMQ8AM+SkRwhJUHoNg0cEJC4PQtJr1DXUOBV8XtuGfQ3duGh6ESqLMuMdTlhCWZA1H8AvAUwFYOwr55yfHeqTcs7rGWNrABwH4ADwPuf8/QDPeSOAGwGgrEx5mQxCSHw99M5+ODwSdIIAxgDOAYdHwkPv7MfSCvUOP1aT/ue7vFGhb/lgc3rw/r4mnFNRgCeumZ2wuwOE0nz3IoBqAOMgr+xwFMD2cJ6UMWYBcKnvWKMBpDHGBo3s45w/zTmfxzmfl5+fH85TEUJGwJE2OwQGCAIDYwyCwCAwuZwEp//5LiM7J+Tf/6K2HR5Rwq8vmZKwCQkILSnlcs6fBeDhnH/COb8BwOlhPu+5AI5wzls45x7ISxel3GrjhBASDS6PiC+PtOHcykKMy0vsdbJDSUoe330DY+xixthsACVhPu9xAKczxsxMTunnAKD9GAgZIUrX0eFeX5fnpUGUOJxeEU6PCKdXhChxlCf4CTJRbKtphd0t4qazJsQ7lIiFkpQeZIxlAfgFgDsAPAPgtnCelHP+JYANAL6GPBxcgLw3EyFkBOQqDNVWKh/OhdNGQeRyXxKHfC9yuZzEVrfDg601rZg6OhOzSrPjHU7EQhl996bvyy4AZ0X6xJzz+wHcH+lxCCGhy0vTo73Hjf6LAAm+8nD89fOjiuW3nDsprGMKAAItUkRruMiuWVAGSeL4t+e+gsCAx6+ZE++QoiKYBVn/hAALsfbhnKti5XBCkhVD4H/ASLqye9wiSnNMaO1xwy1K0GsE5KXr0esWwzpea68npPJgjM4ywNrlClhOZH/ZWottNa347fLpCd+X1CeYmtKOmEdBCBlRpRYzmm1OlOen+8vsbi8KMoxD/NbIaukdnJAAoFWhPNU0djnx2KaDOG9KIa6anzjLCA0nmAVZ149EIISQwJSaKSLZjm/V4nLct3Ev7G4vTDoNHB4RHpFj1eLysI4Xi9qcyxu43KlQnmoe++AgRInj3gQfAn6qUCfP3gVgCiKcPEsiE4sTQN+Ex0DlJPksrSjAagDrttTC2mFHicWMVYvLw57ompumC9hUl5umizBSEkiPy4tXdtbh3xaORWmOOd7hRFUoC7K+CODvAC4G8FMAKwG0xCIoMrTvzyrCa7saApaHS2l3+CB3jScJaGlFQdRWW3B6A/dFuRTKSWSqG7ohceAH88KdlaNe8Zo8SyJw6awSGLUDqzBGLcOls5LvA0oSg8MT+OrFrlBOIrOvoRvF2SZMSdD17YYSSk1pwORZyAuo0lkwDtZtqYVRp4Fb9PoXvzTqNFi3pZbWGSNB21zdjHVbalHXYUdphM13khQ4+SiVk/C5vCJqmnvww4VjkqovqU8oSan/5Nk/AchEmJNnSWS+re9Aj+vkDA6JA50OL6rqO+IYFUkkm6ubcfPLX6PXLULiwIlOB6rqO/Gnq+eElZgEgUEMkIAEIflOmvF2qKkHXonjvCnJOTE56OY7zvmbnPMuznkV5/wszvlczvnGWAZHAuufkPqzKZQTcqpfv7YHNpeckAD5wsbmEvHr1/aEdTyTLnDyMSuUk/Dta+iGSafB/LGWeIcSE0EnJcbYI4yxTMaYjjH2IWOsNdDK3oQQ9Qs0KXWo8uFkGwOPsstSKCfhESWO6sZuVBZlQKtJzrUtQnlV53HOuwFcAsAKYBKAO2MSFSHET+mfVE2npOYAW6EPVU7C09jthNMj4fozx8U7lJgJ5XPdd8lzEYCXOeftMYiHEHKKSYXpIZXHg1sMPKBBqZyEp6HTAQCYXpwV50hiJ5Sk9AZjrBrAPAAf+ibTOmMTFiGkz90XViLDoEHfmAGBARkGDe6+sDLsYxoUtipXKh9O328xdvLWv5xER32nAwatgDFJNmG2v1AGOtwNYCGAeb6N+eyQd48FADDGvhv98EggidCcQ6LLLfIBgxIirYHotYE/LUrlwymxmOQveL9b/3ISFQ1dThRlGZN6VGNIn0DOeQfnXPR93cs5b+z344ejGhlRFIu10Ih63bFhN1zegSMrXV4Jd2zYHfYxGZO3KxeYXJvxfx3mvJcHLp2GLJM8w6Tvc5hl0uKBS6eFHWOGIfDpSak82bm9Ehq6HCjOTu5EH8o8peEkb+pWGUpK0SMwIND8TjVdiLYqDBZQKg+GTsOgERgEMP+6hxI49GE23y2tKMAfr5wdtbX0AEBpF40wd9dIeAWZBnhEnhS7yw4lmkmJzokjxKzXwB7gP9Os14R9zHS9gB734HlO6Xr1XJXqNSxgs1W4J1Igddf8m1SYif0NXeh2nlwVJNOoxcTC8JetieZaegAG1Q6HK092b+45gbx0PU4blxPvUGJKPWccErTzpwT+x1cqD4ZH4f9cqTweLp4eeAa7UnkwlFqr1LR6i1IokYS4sDwHnQ7vgH6qTocXC8vDP+Gt3XQQM37zHsb/59uY8Zv3sHbTwQgiJP25vCI+qm7GhdOKknZ+Up9ovrqjUTwWGcL2I4FH4yuVByMRrkqrG3sGfWAFX3kyU1r9PZJV4YfavjwcazcdxB8/qoHDI0IrAA6PiD9+VEOJKUqqG21weiRcMiP89zxRhLKf0vIAxV0AvuWcN3POA/2cxEB9tzzrvv/VPOcny5NVbWsvGJMTEee+oce+8nDFohYSbY9dNQeNXZ/h8yMn1zZcOM6Cx66aE/Yxo719+TPbjkBggFaQLxsEBnglCc9sO4Jbzp0U1jG1AoM3QIefTk0dfiOktqUXGUYt5o9N7qY7ILQ+pR9DHhL+se/7pQC+ADCJMbaac/6/UY6NKOjr7zi13yPZ+0FESUL/LqW+18uk8GtziTBoZHN1M+q7XBifn+bfJba+y4XN1c2qWRW+1y3XkPoTmFwergn5aTjU3AOJy+9H32Is6ZcAACAASURBVCjB8flpEcWaiGxOD2aVZif1UPA+oTTfSQAqOeeXc84vh7wDrQvAAsg70pIRYlCYS6JUniw0QuDXp1QeDKWdFdS048K6LbXwiCIau5w40GRDY5cTHlHEui218Q7NL02vGfQ3k7hcHq67L6yEJU0Pg06ATsNg0AmwpOkjmjSciFxeEQebbJhdlpwLsJ4qlP/msZzzpn7fNwOY5FtuKLw6PwmLKAauGSiVJwuvwutTKk8Wh5ptaLW54ZU4NL4mrVabG4eabfEOze8ni8ZB4nKTncQl371cHq6lFQVYs2ImZpdaMCrTiNmlFqxZMVM1tcORUt/hgMSB2WXZ8Q5lRITSfLeVMfYmgFd8368AsIUxlgagM+qREUVehat4pfJkoZR6kjslyZMmRc4hitzfl9ZXrhZ9/UbPbDuCXreINL0GP1k0Luz+pFMl+Ud7SHXtdgDArBJKSqe6CcByAIsgN++uB/Aq55wDOCsGsREygIYFTrwRTFNKCBKXBjSNnexTVE9SAuTEFK0kBMh9afdt3AudhiHbpEOzzYn7Nu7FaiClakvHOxwoz0uDJU0f71BGRNBJiXPOGWPbALghX7h85UtIJAkwBL4aVdP5PtusD7iKQbY5uf9ZJSnwuyAqlAfDrNPA7hEHvL/cVx6uaG6vDsh9aToNg1kvn6bMei3sbi/WbalNqaRkbbfju1MK4x3GiAllk78rAHwFudnuCgBfMsZWxCowomzhuMAdnkrlyaLX5Q2pPFl4fH1mDCeHwfcvD8dPl5RDYAPXTxWYXB6OvlpNs805oFazubo57BjrOuwwnZIkTToNrB32sI+ZaGxOD2wuL6Ym8VYVpwploMM9AOZzzldyzv8NwGkA7o1NWGQoL686Y1ACWjjOgpdXnRH2MRNhaLRb5NAKAxcR1QrJv2ePIDBoBV9fkq9PSSsgouHBt5w7CbeeMxGZRi00AkOmUYtbz5kYdvNb/1oNY/K9TsMiGiFYajHD4Rk4pNzhEVFiSd5tG07V5Jt7WDEqI86RjJxQ+pQEznn/y5420DJFcbNqyQSADWwqSXZpeg16TqkVSRxIN4Tf5JQIxuWaUdPSC51wcvFUkXOMy43s5BzNPqC6DjuyTQO3Po+0VrNqcTnu27gXdrfXPz/LI/KU+Kz36XbIA5tLUygRh5JU3mWMvccYu54xdj2AtwC8HZuwyFBi0VQSbbFYKeGcinxIHP7JlH1fn1ORH8FR1e/uCyuRbdaBCXIyYgKQbdapar5OLGo1SysKsHrZVBRkGNHl8KAgw4jVy6amVH+S3S1fhGWZdcM8MnmEssnfnQCeBjADwEwAT3POadJsHKzbUgu3d+BkSrdXXZMpY6Gx2z2oVpRu0KCxO/wtHJTmG6tpHnIizNdZtbgcHpHD7vaCc/k+mrWa5G6gVda39mS6IZobOqhbSK+Uc/4qgFdjFAsJ0sGmbnQ7vRDAoGEMXpGjrdcNr9gd79D8YtFHdajZBpdHgkEr+JuxXB4pokmkeq0GXrdvFJqvz4b7ytUk2ttCRNvSigKsBqK6n9Lm6mbcsWE3elxeiBJHa48Ld2zYrbqEHEsilydMa1JgeaE+wyYlxpgNyqOFOec8/A1YSFg8IococYg4ZTJlBB3+GgYE+nU1zQFyeyWAAYLvBTMGSIxHNInUrNfA5RHlJkEuf6g1LLK9qRJFtIdwRztxPvTOfnTaPdAw+eKLS0Cn3YOH3tmfMklJ8q3ikUqGbaTgnGdwzjMD3DIoIcUH5zxg30ok08YmFWYM6u9hvvJwmHSBP1pK5cHQ+TKkJHH5b+CbURrJJn8TCzJg0mv8V10cgEmvwcSC5B7tlAj9kkfa7PI27QKTt28X5C3cj7SlzpBwzgGNmjb3GgEqajknwWKMQXPK0GiNIJeH664LKpCXrodRK0ArAEatgLx0Pe66oCKs480qCTyvQqk8GJMKM5Gm18AjSXB6JXgkCWl6TUS7pY7K1KPHNbCDvsclYlSmuibkbq5uxtVPf4FFD3+Eq5/+IuLkEYsh3CT6JM6RYhUlSkqJSK8VIIBBpxF8KyjL3+sj6J1fWlGAH54+BnqtAO471g9PHxN2M8neBlvAmtfehvD7fxaW56DrlN1SuyLcLfXdvU0hlcdDqk5MLc9L87UCcHBwSL4WgvK81Nm6giOy+WiJiJJSAppYkIF0owYeUYLTI8EjSkg3RtbktLm6GRu+rkd+hgGVozKQn2HAhq/rwz7x9bi8gzoiua88XK/stAY85is7rWEf06Gw37tSeTzEamJqa48LtS09qG7sRm1LD1p7XKqamHrXBRWwmHVgkFeCZwAsZl3YtfdExDngTfLJ4aeipJSAFpbnoNPuHbDZX6c9shpDtE98St1bkayWaO1whFSeLOo67PCK0oAE4hWliGo1C8tz0NLjhluUIDDALUpo6XFH9BmKtqUVBZiQnwanV4JXApxeCRPy01JmkAMAcHCkWJcSJaVE9Pa3Df71yoCTa5e9/W1D2MeM9okvFkPCE2EppFhI12twrN2BXre8okGvW8SxdkdEG+h9XtuOggw99BoBEgf0GgEFGXp8Xtsexcgjc9vfvh6wBTwAfH6kA7f97es4RTTyJB5ZX3EiiltSYoxlM8Y2MMaqGWP7GWML4xVLojnY3BNSeTDS9RrUdzr/f3v3HlvnXd9x/P09F9ux49hu4jRpEmgMbcM62hLCVkaJQstWYKhQqZPasY0xRrNpajs0OsqQKoTYVAZagU3b2hUol65oyhirJhUG7UJW1hbS0BRC0gYSaFKa2rk78eXcvvvjPMfx7STuOc/j5zl+Pi/Jsv3k+Ph7bOd8z+/2/VIq+8TZpxeOjzX1xCfhGBoef1nX5+LAsRGWdrUz0L+YdSuWMNC/mKVd7YlaU3romUNAUITWzhx9qF1Pg9PjpaZ2rLaiOB/tZ4Fvuvs6qhUidscYS0uJooX3xKsxm/RG+l6lJdHR0dkbO9e7PhetUOy0XOcPut71hejo6QJLu9rjDmNexZKUzGwJsBH4PIC7F9xd3WtjNDxeYlVvB7mMUa44uYyxqrejqY0JYat3iHChHy6srcNNHzE0sz4XdVmgMKT1911TKFUYHB5n+RIlpfkwAAwBXzSzH5rZfUFb9SnM7GYz225m24eGhuY/yoSKotjpmr5OctnMlOmcXDaTqFfO9Q7JNnN4dnXP7P/h612PQ626hPuZt8nXG9EKxU6vu2wFMPNx164vNJOf74aPH2Wgv4tyxXn/VWvjDm1exZWUcsB64J/c/XXAaeCO6Tdy93vdfYO7b+jvX9iVoF+OVXWeMOtdn4tWeOXc2ZadODAMZw4ON7Pu9YnrL6O7PTtxQDFj0N2e5RPXX9bQ/UXx6v7aX5k9UdS7Pleb1i3nwZuv5H8/fDUP3nxlohISwN03ruf6K1ZO/OyyGeP6K1Zy943rY44sGpOf77p7z+N7PztMPmv82trk7IicD3GVnj0IHHT3J4PPtzBLUpLZfeL6y7jlwR2cLlRrttWemBt9IoVoCmqG7eLzl7Dn0AlOjJYmav71LMo1VdFh07rl/P1N60N73Bf0dHBgli3qF/R0NBzjoZMFOvMZRiadnerMZ5qqjt4q7r5xPXffGHcU8fjeTw+z/hV9E+3g0yKWR+vuh8zsgJld4u7PAtcAP4kjllYU9hPp5PsNKwnlDEqzrHnkmphjfOPAeXz/50fJZoy8VTd2nBwrN322JszHXa/+YDN1CZ976STFitOePVMdvVhx9r6UnKrwEq6KO7t+eZIPhtSEsZXEmYJvAR4wszZgH/C+GGNpOc8cPM6uX57gdKHMidEizxw8nqhRzcreRbOOGFb2Lmr4Ph/fd5T+xW0Mj5UolCu0ZTN0d+R4fN9Rbm0i1s995znue2w/pwtlutqy/PFVaxvuyDp0qkDWgrNjwWjOguuNKgYn+mvlZsyqRWkXeht4CL+SeasoVZycwyUpaoNeE1tScvengQ1xff9W9rnvPMdnH/0pGas2oxstlvnsoz8FCK29dbMcWL64jcOnCxNTjMu6mityeuDYCMsWt9PffWYqzN2bOlsTxc+y2v/mzHJtudJcyaK2XIbRQpmK+8RICaepWoetoFbzL5+1KTX/Pg4LPjGVK04OWNXEi7hWtbD/qheo+x7bHzyJZshYJnhfvZ4Ua/o6KU57Mi5WKk3t5ovibM19j+3HvdqfqlCqvnf3hn+Wa5d2VouITmqvUfHq9UZdtLybZd1tU7brL+tuW/DtNdJcybzWlqW/Ozm7QOeLklILOl0ozyhnn7Hq9aRYsaSNYyNTK3ofGyk11RJi88YBTowW2Ts4zJ5DJ9k7OMyJ0WJTOwSHx0qz9qYaHmvsfNYdb38NvZ15LFPtGmoZ6O3Mc8fbX9NwjJs3DpDPZlnR08El53ezoqeDfDabqJ2RUWiFSuZRqU3MpqkNek36HvEC0NWWZXishHMmCRnQ3ZGcX+cje4ZmXVt5ZE9z580Mqi3L3cGtqbNZUF2nKVemFr10b7xdwKZ1y/n0DZeHugmlFXZGRmFNXyf7D5+asYa4dtniuEOLXCX4m0xDB+TpkvMsJnN26cruGYUqPbjejDAXlU8XyuSyRsbODMYrXmlqNHfPtn0sWZRnRc+ZefaRQol7tu1rOM6utiwnx0ozqro2c/Yp7LbgUd1n0tV2W2aMKZXMf/fXFv65nQrVUVIay3xp+q4F7XpxeMYvLkNzDfTCbiTX1ZalVHbGS2XGimXGS2VKZW/qyT6K6ZxLL+jhvM58dQMB1RHdeZ15Lr2g8Q65Eo7H9x2lpyNHueKMB+t9PcFuy4XO3VM5SgKNlFrS6UKZfC78UUixXObIqTNTJUsW5RoehVyzrp//ePpMK43aMZ1r1jVemWNNXyeDw2NTDhM2u9Fh88YB7nxoF31dbSzKZxktlpuuZBHmFvOaNG6N3js4zPBYifyk81nDYyX2Djb+4quV5DLpHDOk81G3uK627IyK4BVvbspp7+Awh4cLlCpONmOUKs7h4ULDTwCHThbo68xNKd/T15lrqgpBFKWQwq4BV9tiPlosT9li/rnvPNdwjFG0Q28FhVIFDDJmGEYmWJgslJLTFTgyTuqa+9UoKbWgP75qLRWHUqVCxSvB++r1RhVKFcruFMsVxoMW62X3hp8ADhwbYVVvJ5de0MNrV/Vw6QU9rOrtbGqqbdO65dywfhVDw+PsPjTM0PA4N6xfFV41hhDuI4rt+mndGp0PCu1O3l4PzRXgbRVONRmnkZJSC7r1rRdz29WvZlE+S6lSXVe57epXNzVFVPHKrFuj3RtLSlGcKdq6Z5AtO16gv7ud16zopr+7nS07XmhqxBD2KCSK7fpRtENvBRefv4SlXW3kskbZnVzWWNrV1lStw1aS0pykpNSqbn3rxTzzsWv52d+8g2c+dm3TaxYZy5ANdjnVqm9nDcwa+xOJYqotihFD2PfZ1ZalVJm2waPS3AaPtHYF3rxxgFLFKQcLkmV3SpVkVa6PigMduYX9+61HSUmAasmajBn5bIb2fIZ8tvp5o6VsoujXE8Xuu7Dv85p1/ZQrU0ec5UpzGzzS3BV46rm05nqGtRJ3p7M9nUlJu+8EqJay+fmRU5wcnbT7rivPhUsbP6gY9tmaKHbfhX2fu18cxpi6PmXB9UbVugIfPlWY+N2sWNKeqK7AUYjiXFqrcE/nwVnQSEkCtem2yVMlSWvyF8WUYNj3uf/ICPmssSifnXjLZ439RxofzbVCV+AopLrMkJO6Pko1SkoyIelTJVHsvotimrE8bU2pPH3//svUCl2BoxDFZplWUUGHZyXlWmGqZOueQb78xC8olCsTZWe+/MQvuGx1b9OJKazH2L+4jYPHxyY+rx0aXrm48UK0aa19VzvYPFIohXawuVWkeaSUzkctMxw4NkLvovyUa81OlYRdheCuh3dzfKRI1oysGV6B4yNF7np494J/gk5j7bu0JmOozlZMn7pMCyUlAcJf8I+iQdv+IyPV4pyTOrB6xZtarwnbS8PjL+u6nF0akzFUN8q059O5upLORz2P2uq0QKh3PS5hr1vcs20fhVKZQyfGePalYQ6dGKNQKjddhSDs9ZqwlYIW5WZn3iZfF5mrfDadT88aKUXs/J4ODhwbnfV6M8KeGgt7quS5l05ycqxEBps48HnkdIFS+WTDMUaxXhO2Wt3A6TWLcgl7ESLJ177A293Xo6QUMQd6OnKcmNTJtKfJZnxRTI1BuFMlxWBkMHmqrVJxCk2MGLo78mRtbOJgaq3yRHdH/lxfOm9e3d/F3sFTU2LMGryqvyvu0KTF5FNQ42826UzF86i7Pcep8dJE51UzODVeaqrNcSsU6GzLZcCh4o7jVIJt5o1WiIDqIdLVfYvobMsGjz/L6r5FiTpEesfbX0NfV1tQFcNoz2fo62prqh26pJOm7yQSw6MFpgwOHMrB9UZFsVMubFFUiKhtxhjoP3MfI4USy7ubmwoNUxTt0CWdmnkB18qUlCI2dLpINuhq6kGPFAuuNyqKcjth27xxgA9t2RlqhYhWObeS1h1jEq60jpTS+ahbXKuc8A+7QkQU1RdEkkobHSQSaT3hH1WFCI1CJC3SOlJSUorYWHH25m71rs9V0p+cW2HdKyphb9eXdEprUkrno55HR+qsHdW7vlCktZhm2J1sJb3SutEhnY96HtU7lbPQz/e3yrpX2Fphu760Bp1TEglRWjclpLkHkIRLGx0kEtO7kE6+vtAlfd0rCq2wXV9ag9aUJBJWJ/vUuy6tLa3TlhK+tCYljZQi1pHLMjLLTruOXDp7pSRRmLvlWmG7vrSGtG50UFKK2HldeUaOz0xK53Ulp4homkVR3DaN05YSvraUjpTS+ajnkxn9i/PUOhdkDPoX5zHN3yWCdstJUuVSuvtOI6WI1Ra+V/ScWehOWhHRNEvzIV9JNkvFdqiZNFKKmBa+ky2th3xFkkpJKWJpPa/TKvSiQZIqrTP8mr6bB1r4Ti7tlhNJFiUlST29aJAkSulASdN3IiKSHLGOlMwsC2wHXnD3d8YZS5TUyiDZ9PuRRErpUCnu6bvbgN3AkpjjiMzWPYN8aMtOTo2XKFecw6fG+dCWnXz6hsv1xJcAURyeVZITaVxs03dmthr4beC+uGKYD3c9vJvjI0W8AlkzvALHR4rc9fDuuEMTwj88q35KEhadU5p/nwH+EqjUu4GZ3Wxm281s+9DQ0PxFFqL9R0bIGGQyhpmRyRgZq16X+IXdakIVIqRRk5/v4o4lTrEkJTN7JzDo7k+d7Xbufq+7b3D3Df39/fMUnaRJ2Idn1U9JGjX5+S7uWOIU10jpTcB1ZvZz4GvA1Wb21ZhiidTAsi4qDhV3HKfiTsWr1yV+YR+eVYUICUtaD8/GkpTc/SPuvtrdLwRuBB5199+LI5aoffht6+jrzGNAqVzBgL7OPB9+27q4QxPCr7ixeeMAJ0aL7B0cZs+hk+wdHObEaFEVIkTmKO7ddwvepnXL+dQNl6tiQIKFfXjWABzcHTyc5Wrt6EuflA6UMPfZmnUnz4YNG3z79lSv/0kLuOneJ2a0Q69VhX/w5isbus/J29YX5bOMFssUy64aiq1pTrmmfeVF/su9P2bp4vao45lPc3rsquggEqIoNjpoR186pbXnmpKSSIii2OigHX2SJkpK82DrnkFuuvcJrvrko9x07xM6SLmARdEKQzv60imd4yQlpcht3TPI7Vt28sPnj3HoxCg/fP4Yt2/ZmcjEpOTZvCj6Z6nnk6SJNjpE7O2f2cbewVNkM4YZuEO54ly0fDEP//nGuMOboMX0ZKvtvtMOzpY3540OL/1sF72dbVHHM5/m9Ni1JTxi+w6frpYZChYtzcDN2Xf4dMyRTTV5MR2gsy3HSKHEPdv26ckvAdTzSdJC03cCaDFdRJJBSSlia5d2Uio7Y8Uyo8UyY8UypbKzdmmyFqm1mC6SLKoSLpF4x2tXgkFt5c4BLLieIFpMF5EkUFKK2OP7jnL+kna62rLks0ZXW5bzl7Tz+L6jcYc2RRS7xkSkCekcKGmjQ9QOHBthaVc7yxZ3TFxz90Su1WgxXUTippFSxLRWIyKNSGmVISWlqGmtRkRk7pSUIqa1GhFpREoHSlpTmg9aqxERmRuNlEREEkitK0RERGKmpCQikkDpHCcpKYmISIIoKYmISGIoKYmIJFBK9zkoKYmISHIoKYmIJJBaV4iIiMRMSUlEJIG0piQiIhIzJSUREUkMJSUREUkMJSURkQTSmpKIiEjMlJRERBJI55RERERipqQkIiKJoaQkIpJA2uggIiISMyUlEZEESulASUlJRESSIxd3AGmwdc8g92zbx4FjI6zp62TzxgE2rVsed1gikmCW0kUljZQitnXPIHc+tIvB4TF6F+UZHB7jzod2sXXPYNyhiYgkTixJyczWmNn/mNluM9tlZrfFEcd8uGfbPvJZo7Mth1n1fT5r3LNtX9yhiUiCpXOcFN/0XQn4C3ffYWbdwFNm9m13/0lM8UTmwLERehflp1xblM9y8NhITBGJiCRXLCMld3/R3XcEHw8Du4FVccQStTV9nYwWy1OujRbLrO7rjCkiEWkFKV1Sin9NycwuBF4HPDnLv91sZtvNbPvQ0NB8hxaKzRsHKJadkUIJ9+r7YtnZvHEg7tBEJEEmP9/FHUuczN3j++Zmi4HvAn/t7l8/2203bNjg27e35u+qtvvu4LERVmv3nUiazWn8077yIh9/cW/Uscy3OT322LaEm1ke+HfggXMlpFa3ad1yJSERkTmIa/edAZ8Hdrv738URg4iIJE9ca0pvAn4fuNrMng7e3hFTLCIikhCxTN+5+2Okdxu+iIjUEfvuOxERkRolJRGRhOnvbo87hNgoKYmIJMyKJR1xhxAbJSUREUkMJSUREUkMJSUREUkMJSUREUkMJSUREUkMJSUREUkMJSUREUkMJSUREUkMJSUREUkMJSUREUkMJSUREUkMJSUREUkMc/e4Y5gTMxsCfjHP33YZcHiev+fLpRjD0wpxKsbwxBHnYXd/27luZGbfnMvtFqKWSUpxMLPt7r4h7jjORjGGpxXiVIzhaZU400bTdyIikhhKSiIikhhKSmd3b9wBzIFiDE8rxKkYw9MqcaaK1pRERCQxNFISEZHEUFISEZHEUFKqw8yyZvZDM/uvuGOpx8x6zWyLme0xs91m9sa4Y5rOzD5oZrvM7Mdm9qCZdcQdE4CZfcHMBs3sx5OunWdm3zazvcH7vgTG+Kng9/2Mmf2HmfUmLcZJ//YhM3MzWxZHbNNimTVOM7vFzJ4N/kb/Nq745AwlpfpuA3bHHcQ5fBb4pruvAy4nYfGa2SrgVmCDu/8qkAVujDeqCfcD0w8n3gE84u4XAY8En8fpfmbG+G3gV939MuA54CPzHdQ09zMzRsxsDfCbwPPzHVAd9zMtTjN7C/Au4DJ3vxT4dAxxyTRKSrMws9XAbwP3xR1LPWa2BNgIfB7A3QvufjzeqGaVAxaZWQ7oBH4ZczwAuPs24Oi0y+8CvhR8/CXg3fMa1DSzxeju/+3upeDTJ4DV8x7Y1Hhm+zkC3A38JZCInVR14vxT4C53Hw9uMzjvgckMSkqz+wzV/1CVuAM5iwFgCPhiMM14n5l1xR3UZO7+AtVXn88DLwIn3P2/443qrM539xcBgvfLY47nXP4IeDjuIKYzs+uAF9x9Z9yxnMPFwJvN7Ekz+66ZvSHugERJaQYzeycw6O5PxR3LOeSA9cA/ufvrgNPEP900RbAm8y5gLXAB0GVmvxdvVAuDmX0UKAEPxB3LZGbWCXwUuDPuWOYgB/QBVwK3A/9mZhZvSKKkNNObgOvM7OfA14Crzeyr8YY0q4PAQXd/Mvh8C9UklSRvBfa7+5C7F4GvA78Rc0xn85KZrQQI3idyOsfM3gu8E3iPJ++g4auovgjZGfwfWg3sMLMVsUY1u4PA173q+1RnRmLflJF2SkrTuPtH3H21u19IdVH+UXdP3Kt7dz8EHDCzS4JL1wA/iTGk2TwPXGlmncEr0GtI2GaMaR4C3ht8/F7gP2OMZVZm9jbgw8B17j4SdzzTufuP3H25u18Y/B86CKwP/l6T5hvA1QBmdjHQRmtUN1/QlJRa2y3AA2b2DHAF8DcxxzNFMIrbAuwAfkT17y0RpV3M7EHgceASMztoZu8H7gJ+08z2Ut05dlcCY/wHoBv4tpk9bWb/nMAYE6dOnF8ABoJt4l8D3pvAkWfqqMyQiIgkhkZKIiKSGEpKIiKSGEpKIiKSGEpKIiKSGEpKIiKSGEpKIiKSGEpKIi+Dmf1VA19z4WytHURkJiUlkZfnZSclEZk7JSVJHDP7hpk9FTReuzm4dsrM/trMdprZE2Z2fnD9lWb2SND07hEze0Vw/XeCxoI7zWzbWb5XNmic94PgPjYH11ea2bagasKPzezNZnYX1TYcT5vZA9NHQEFTu48FH78++N6PA3826TYdZvZFM/tRUN39LRH8CEValpKSJNEfufvrgQ3ArWa2FOgCnnD3y4FtwAeC2/4D8OWg6d0DwOeC63cC1wa3v+4s3+v9VFtqvAF4A/ABM1sL/C7wLXe/gmoDxafd/Q5g1N2vcPf3nOMxfBG41d2ndwP+MwB3fy1wE/AlS0g3XpEkUFKSJLrVzHZSbWK3BrgIKAC11vRPARcGH78R+Nfg468AVwUffw+438w+QLXjbT2/BfyBmT0NPAksDb7fD4D3BSOf17r78FyDN7MeoNfdvzsprpqrap+7+x7gF1T7+ogI1X4iIolhZpuotrx4o7uPmNlWoAMoTiqWWab+364DuPufmNmvU+0g/LSZXeHuR2b7lsAt7v6tWWLZGHz9V8zsU+7+5Wk3KTH1hV1txGPU77iqfj0iZ6GRkiRND3AsSEjrqDZgO5v/o9piBOA9wGMAZvYqd3/S3e+k2o5gTZ2v/xbwp2aWD77uYjPrMrNX+BjW+gAAAO1JREFUUm32+C9UW87XelUVa7cFXgKWm9lSM2un2uOIoC39CTOrjdomT/Vtq30etEt4BfDsOR6jSGpopCRJ803gT4J2HM9SncI7m1uBL5jZ7VTbw78vuP4pM7uI6sjkEaBea+77qE4F7gh6Pg0B7wY2AbebWRE4BfxBcPt7gWfMbIe7v8fMPk512m8/sGfS/b4viGuEauKr+Ufgn83sR1RHWn/o7uPneIwiqaHWFSIikhiavhMRkcTQ9J2kgpldC3xy2uX97n59HPGIyOw0fSciIomh6TsREUkMJSUREUkMJSUREUkMJSUREUmM/wevaKuDWJJmyAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.jointplot(x=\"anos_estudo\", y=\"log_salario\", data=temp.sample(10000), kind='reg') # hue='estado_civil'" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: salario R-squared: 0.086\n", + "Model: OLS Adj. R-squared: 0.086\n", + "Method: Least Squares F-statistic: 4171.\n", + "Date: Tue, 12 Feb 2019 Prob (F-statistic): 0.00\n", + "Time: 12:08:31 Log-Likelihood: -5.0184e+05\n", + "No. Observations: 44243 AIC: 1.004e+06\n", + "Df Residuals: 44241 BIC: 1.004e+06\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "===============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "-------------------------------------------------------------------------------\n", + "Intercept -3387.9726 271.150 -12.495 0.000 -3919.432 -2856.513\n", + "anos_estudo 1825.5288 28.265 64.586 0.000 1770.128 1880.929\n", + "==============================================================================\n", + "Omnibus: 67998.305 Durbin-Watson: 1.718\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 73767164.333\n", + "Skew: 9.420 Prob(JB): 0.00\n", + "Kurtosis: 202.150 Cond. No. 27.1\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" + ] + } + ], + "source": [ + "run_regression(temp,'salario ~ anos_estudo')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: log_salario R-squared: 0.124\n", + "Model: OLS Adj. R-squared: 0.124\n", + "Method: Least Squares F-statistic: 6243.\n", + "Date: Tue, 12 Feb 2019 Prob (F-statistic): 0.00\n", + "Time: 12:08:32 Log-Likelihood: -63290.\n", + "No. Observations: 44243 AIC: 1.266e+05\n", + "Df Residuals: 44241 BIC: 1.266e+05\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "===============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "-------------------------------------------------------------------------------\n", + "Intercept 7.9101 0.013 588.615 0.000 7.884 7.936\n", + "anos_estudo 0.1107 0.001 79.013 0.000 0.108 0.113\n", + "==============================================================================\n", + "Omnibus: 4262.018 Durbin-Watson: 1.727\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 9340.618\n", + "Skew: -0.609 Prob(JB): 0.00\n", + "Kurtosis: 4.893 Cond. No. 27.1\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" + ] + } + ], + "source": [ + "run_regression(temp,'log_salario ~ anos_estudo')" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: log_salario R-squared: 0.166\n", + "Model: OLS Adj. R-squared: 0.165\n", + "Method: Least Squares F-statistic: 4387.\n", + "Date: Tue, 12 Feb 2019 Prob (F-statistic): 0.00\n", + "Time: 12:08:34 Log-Likelihood: -62208.\n", + "No. Observations: 44243 AIC: 1.244e+05\n", + "Df Residuals: 44240 BIC: 1.244e+05\n", + "Df Model: 2 \n", + "Covariance Type: nonrobust \n", + "===============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "-------------------------------------------------------------------------------\n", + "Intercept 7.0103 0.023 302.528 0.000 6.965 7.056\n", + "anos_estudo 0.1239 0.001 88.805 0.000 0.121 0.127\n", + "idade 0.0210 0.000 47.102 0.000 0.020 0.022\n", + "==============================================================================\n", + "Omnibus: 5016.473 Durbin-Watson: 1.731\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 11232.252\n", + "Skew: -0.694 Prob(JB): 0.00\n", + "Kurtosis: 5.042 Cond. No. 196.\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" + ] + } + ], + "source": [ + "# Ao Adicionar idade na regressão de anos de estudo saimos da regressão simples e vamos\n", + "# para a regressão multipla, no output não muda quase nada, apenas uma linha a mais.\n", + "# Mas a interpretação muda muito! O parâmetro de anos de estudo deviam aumentar ou diminuir\n", + "# incluindo idade? Essa questão deixa de ser intuitiva ...\n", + "\n", + "run_regression(temp,'log_salario ~ anos_estudo + idade')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Investigando a relação entre salário e estado civil" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
salarioestado_civil
063600.0000001.0
1NaN1.0
24352.4003910.0
396600.0000001.0
4157800.0000001.0
588550.0000000.0
66734.4003910.0
714875.2006840.0
86734.4003910.0
954300.0000001.0
\n", + "
" + ], + "text/plain": [ + " salario estado_civil\n", + "0 63600.000000 1.0\n", + "1 NaN 1.0\n", + "2 4352.400391 0.0\n", + "3 96600.000000 1.0\n", + "4 157800.000000 1.0\n", + "5 88550.000000 0.0\n", + "6 6734.400391 0.0\n", + "7 14875.200684 0.0\n", + "8 6734.400391 0.0\n", + "9 54300.000000 1.0" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[['salario', 'estado_civil']].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAENCAYAAAD+CUlOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAGYJJREFUeJzt3X20XHV97/H3NycHPSgQkLRCHkywEUURg6eApbZ6feDBXkB8ShBFa6VWvW2vioWl5VYuXVrTB3WJFi5VfAziw8IUQ1Ovwr2uLqWESwUDBNMQzCEKEQmiRsnD9/6x94mTYeb8ZpLMnJM579daZ53Zv/ntvb979sl8svfs2b/ITCRJmsiMyS5AkjT1GRaSpCLDQpJUZFhIkooMC0lSkWEhSSoyLCRJRYaFJKnIsJAkFc2c7AL2xuGHH54LFiyY7DIkab9yyy23/DgzZ3czz34dFgsWLGD16tWTXYYk7Vci4t5u5/E0lCSpyLCQJBUZFpKkIsNCklRkWEiSigwLSVKRYSFJKupLWETEJyLigYj4XpvnIyI+EhHrIuK2iDi+H3VJkjrTry/lXQV8FPh0m+dPAxbVPycCH69/73MLLvxaLxY77Y0Mz+D4+bP4zvqH2JHJUAQnHXUoGx7cyqYtWzly1ggXnHI0Zy2e03YZ1956H8tWrd2tP7Cr7fHDM/jV9p3sbDFs/JwJlt9quc39GvvMOnCYTHh467aO6u5me/a0vj3pq8nVq33V6j1swwdettfLLYnMFv/yerGiiAXAdZn5rBbPXQ7cmJnL6+m1wAsy84cTLXN0dDS7+Qa3QTG5RoaHeP/Zx7Z9w7zoK7ezdduOXW3DMwICtu3o7G+01fJbLbe5X6s+ndbdTifr7aZft301uXq1ryZ6D+smMCLilswc7WbdU+UziznAxobpsbpNA2Trth0sW7W25XPLVq19zJv1tp3ZcVC0W36r5Tb3a9Wn07rb6WS93fTrtq8m1yDuq6kSFtGireW7REScHxGrI2L15s2be1yW9rVNW7Z21b63y+9kfZ2su9v6Ot3Obl6PXr922ncGcV9NlbAYA+Y1TM8FNrXqmJlXZOZoZo7Ont3VTRM1BRw5a6Sr9r1dfifr62Td3dbX6XZ283r0+rXTvjOI+2qqhMUK4PX1VVEnAQ+XPq/Q/mdkeGjXh9bNLjjlaEaGh3ZrG54RDA+1OujsfPmtltvcr1WfTutup5P1dtOv276aXIO4r/p16exy4NvA0RExFhFvioi3RMRb6i4rgfXAOuB/AW/tRR39uGJguhoZnsHJTz2Moaje3IciOPmphzFn1ghBdbXSRB/unbV4Du8/+9jd+i971XEse+Vxu9pGhmcwo012tFt+q+U292vuc+iBw8waGe6o7nY6WW83/brtq8nVq33V7j1soK6G6oVur4aSJO3fV0NJkqYww0KSVGRYSJKKDAtJUpFhIUkqMiwkSUWGhSSpyLCQJBUZFpKkIsNCklRkWEiSigwLSVKRYSFJKjIsJElFhoUkqciwkCQVGRaSpCLDQpJUZFhIkooMC0lSkWEhSSoyLCRJRYaFJKnIsJAkFRkWkqQiw0KSVGRYSJKKDAtJUpFhIUkqMiwkSUV9C4uIODUi1kbEuoi4sMXz8yPihoi4NSJui4jT+1WbJGlifQmLiBgCLgNOA44BlkbEMU3d3gtck5mLgSXAx/pRmySprF9HFicA6zJzfWY+ClwNnNnUJ4GD68eHAJv6VJskqaBfYTEH2NgwPVa3Nfor4NyIGANWAv+t1YIi4vyIWB0Rqzdv3tyLWiVJTfoVFtGiLZumlwJXZeZc4HTgMxHxmPoy84rMHM3M0dmzZ/egVElSs36FxRgwr2F6Lo89zfQm4BqAzPw28Hjg8L5UJ0maUL/C4mZgUUQsjIgDqD7AXtHU5wfAiwAi4hlUYeF5JkmaAvoSFpm5HXg7sAq4k+qqpzURcUlEnFF3eyfw5oj4LrAceENmNp+qkiRNgpn9WlFmrqT64Lqx7eKGx3cAJ/erHklS5/wGtySpyLCQJBUZFpKkIsNCklRkWEiSigwLSVKRYSFJKjIsJElFhoUkqciwkCQVGRaSpCLDQpJUZFhIkooMC0lSkWEhSSoyLCRJRYaFJKnIsJAkFRkWkqQiw0KSVGRYSJKKDAtJUpFhIUkqMiwkSUWGhSSpyLCQJBUZFpKkIsNCklRkWEiSivoWFhFxakSsjYh1EXFhmz6vjog7ImJNRHy+X7VJkiY2sx8riYgh4DLgJcAYcHNErMjMOxr6LAIuAk7OzIci4jf6UZskqaxfRxYnAOsyc31mPgpcDZzZ1OfNwGWZ+RBAZj7Qp9okSQX9Cos5wMaG6bG6rdHTgKdFxL9FxHci4tQ+1SZJKujqNFREzAPOAeZRvfkvz8wfdDJri7ZsUcsi4AXAXOBbEfGszNzSVMP5wPkA8+fP76Z8SdIe6vjIIiJ+F7iT6vTRIcAZwB0R8fwOZh+jCphxc4FNLfp8NTO3ZeY9wFqq8NhNZl6RmaOZOTp79uxOy5ck7YVuTkN9EPjTzPydzHxdZp4MvB1Y1sG8NwOLImJhRBwALAFWNPW5FnghQEQcTnVaan0X9UmSeqSbsHgGcFVT22eAo0szZuZ2qmBZRXV0ck1mromISyLijLrbKuDBiLgDuAG4IDMf7KI+SVKPdPOZxf3A8cDqhrbjgY6uWsrMlcDKpraLGx4n8I76R5I0hXQTFh8GVkbE5VSnhxYCfwy8rxeFSZKmjo7DIjM/HhFbgDcAr6C6GurPM3N5j2qTJE0RXV06WweD4SBJ08yEYRERT87MH9WPj2zXLzObL4OVJA2Q0pHF3cDB9eMxHvtFuqjbhvZxXZKkKaQUFs9seLywl4VIkqauCcMiMzcCRMRM4N3AOzPzl/0oTJI0dXT0pbz6S3VLgF/1thxJ0lTUzTe4v0p1yawkaZrp5tLZA4DPRsRbgA3AzvEnMvP8fVyXJGkK6SYstvHr71gM4RVQkjRtdPMN7jf2shBJ0tTV9RjcETECHE7DgEYdDoAkSdpPdRwWEXEU8FngxBZPe0pKkgZYN1dDfZTq5oHHAY8Az6YasOhNPahLkjSFdHMa6kRgQWY+EhHUgxf9MfB/eOygSJKkAdLNkcVOYGv9+GcRMQv4CTB/n1clSZpSujmyWAOcTHUkcRPwD8DPgXt6UJckaQrp5sjiT6mOJAAuAOYAo1Sj5UmSBlg337O4reHxeuClPalIkjTllAY/ajvgUSMHP5KkwVY6smg14FEjBz+SpGmgFBYOeCRJKg5+dG+/CpEkTV1d3RsqIp4OvACYze73hrpk35YlSZpKurk31FKqb2rfRnWrj9uobv3xf3tSmSRpyujmexbvAV6Xmb8N/KL+/Rbg//WkMknSlNFNWMwHvtjU9mngdfuuHEnSVNRNWGwBDqkf3x8RzwAOA56wz6uSJE0p3YTF/wZeXj++pp7+d+Bf9nVRkqSppZvbffxhw+T/AO4CDqI6FVUUEacCH6b6At+VmfmBNv1eSXW667czc3Wn9UmSeqfjI4uIuDQiTqgnXwxcCfwd8PwO5h0CLgNOA44BlkbEMS36HUR1w8KbOq1LktR73ZyGOo/qaALgL4G/AN4G/HUH854ArMvM9Zn5KHA1cGaLfv8T+CDwyy7qkiT1WDdhcXBm/jQinkD1/YqPZ+angN/qYN45VEOyjhur23aJiMXAvMy8bqIFRcT5EbE6IlZv3ry5i/IlSXuqm7B4sP4G92nATZm5PSJGOpw3WrTtukFhRMygGkzpnaUFZeYVmTmamaOzZ8/ucPWSpL3Rze0+PgTcUj9+bf3794A7O5h3DJjXMD0XaLyt+UHAs4AbIwLgycCKiDjDD7klafJ1czXURyLiemB7Zo4PpXoPcH4Hs98MLIqIhcB9wBLgnIZlPwwcPj4dETcC7zIoJGlq6OpGgpn5/abpuzucb3tEvB1YRXXp7Ccyc01EXAKszswV3dQhSeqvrsJib2TmSmBlU9vFbfq+oB81SZI6080H3JKkacqwkCQVGRaSpCLDQpJUZFhIkooMC0lSkWEhSSoyLCRJRYaFJKnIsJAkFRkWkqQiw0KSVGRYSJKKDAtJUpFhIUkqMiwkSUWGhSSpyLCQJBUZFpKkIsNCklRkWEiSigwLSVKRYSFJKjIsJElFhoUkqciwkCQVGRaSpCLDQpJUZFhIkor6FhYRcWpErI2IdRFxYYvn3xERd0TEbRHxjYh4Sr9qkyRNrC9hERFDwGXAacAxwNKIOKap263AaGY+G/gS8MF+1CZJKuvXkcUJwLrMXJ+ZjwJXA2c2dsjMGzLzF/Xkd4C5fapNklTQr7CYA2xsmB6r29p5E3B9TyuSJHVsZp/WEy3asmXHiHOBUeD32zx/PnA+wPz58/dVfZKkCfTryGIMmNcwPRfY1NwpIl4MvAc4IzN/1WpBmXlFZo5m5ujs2bN7UqwkaXf9CoubgUURsTAiDgCWACsaO0TEYuByqqB4oE91SZI60JewyMztwNuBVcCdwDWZuSYiLomIM+puy4AnAl+MiP+IiBVtFidJ6rN+fWZBZq4EVja1Xdzw+MX9qkWS1B2/wS1JKjIsJElFhoUkqciwkCQVGRaSpCLDQpJUZFhIkooMC0lSkWEhSSoyLCRJRYaFJKnIsJAkFRkWkqQiw0KSVGRYSJKKDAtJUpFhIUkqMiwkSUWGhSSpyLCQJBUZFpKkIsNCklRkWEiSigwLSVKRYSFJKjIsJElFhoUkqciwkCQVGRaSpCLDQpJUNLNfK4qIU4EPA0PAlZn5gabnHwd8Gngu8CDwmszcsK/rWHDh1/b1IvcLQwF/9+rnAPC+f17DQ7/YBsCskWH+6oxnctbiOQC899rbWX7TRnZkMiPgcTNn8MttOzly1ggvfPpsbrhrM5u2bOXIWSNccMrRnLV4Dtfeeh/LVq19THvJnszXWN9QBEtPnMelZx27l6/O5BrEbVLvtHoP2/CBl/V8vZGZvV9JxBBwN/ASYAy4GViamXc09Hkr8OzMfEtELAFenpmvmWi5o6OjuXr16o7rmK5B0WhGwM6mXT48I1j2quNYfe9P+Ox3ftDxskaGh3jFc+fw5VvuY+u2Hbu1v//sYyd847/21vu46Cu3dzXfe6+9vWV95540f799cx3EbVLvTPQe1k1gRMQtmTnazbr7dRrqBGBdZq7PzEeBq4Ezm/qcCXyqfvwl4EUREX2qb9poDgqAbTuTZavWsvymjV0ta+u2HSy/aeNub/jj7ctWrZ1w3mWr1nY9X7v6uq17KhnEbdJg6ldYzAEa//rH6raWfTJzO/Aw8KTmBUXE+RGxOiJWb968uUflTj+btmxlxx4cZbabZ9OWrcX1dTtfu3XtSd1TxSBukwZTv8Ki1RFC87+GTvqQmVdk5mhmjs6ePXufFCc4ctYIQ3twINduniNnjRTX1+187da1J3VPFYO4TRpM/QqLMWBew/RcYFO7PhExEzgE+ElfqptGZrR4DxqeEVxwytEsPXHeY5+cwMjwEEtPnMfI8NBj2i845egJ573glKO7nq9dfd3WPZUM4jZpMPUrLG4GFkXEwog4AFgCrGjqswI4r378SuCbuY8/fe/HFQNT1VDAh17zHP7+1c/h0AOHd7XPGhlm2auO46zFc7j0rGM596T5u/5XOyNgZHgGAcyZNcK5J81nzqyRXdPvP/tYLj3rWN5/9rGPaS9d1XTW4jldz9dc31DEfv9B8CBuk3qn3XvYwFwNBRARpwMforp09hOZ+dcRcQmwOjNXRMTjgc8Ai6mOKJZk5vqJltnt1VCSpD27Gqpv37PIzJXAyqa2ixse/xJ4Vb/qkSR1zm9wS5KKDAtJUpFhIUkqMiwkSUWGhSSpyLCQJBUZFpKkor59Ka8XImIzcO8ezn448ON9WM7+wG2eHtzm6WFvtvkpmdnVzfX267DYGxGxuttvMO7v3ObpwW2eHvq9zZ6GkiQVGRaSpKLpHBZXTHYBk8Btnh7c5umhr9s8bT+zkCR1bjofWUiSOjQtwyIiTo2ItRGxLiIunOx6SiJiXkTcEBF3RsSaiPizuv2wiPh6RHy//n1o3R4R8ZF6+26LiOMblnVe3f/7EXFeQ/tzI+L2ep6PRFSj8bRbRx+3fSgibo2I6+rphRFxU13PF+rBtIiIx9XT6+rnFzQs46K6fW1EnNLQ3vLvoN06+rS9syLiSxFxV72/nzfo+zki/nv9d/29iFgeEY8ftP0cEZ+IiAci4nsNbZO2XydaR1uZOa1+qAZf+k/gKOAA4LvAMZNdV6HmI4Dj68cHAXcDxwAfBC6s2y8E/qZ+fDpwPdW45icBN9XthwHr69+H1o8PrZ/7d+B59TzXA6fV7S3X0cdtfwfweeC6evoaqoGxAP4R+JP68VuBf6wfLwG+UD8+pt7HjwMW1vt+aKK/g3br6NP2fgr4o/rxAcCsQd7PwBzgHmCk4bV/w6DtZ+D3gOOB7zW0Tdp+bbeOCbehX/8IpspP/YKuapi+CLhosuvqchu+CrwEWAscUbcdAaytH18OLG3ov7Z+filweUP75XXbEcBdDe27+rVbR5+2cy7wDeC/ANfVf9g/BmY270tgFfC8+vHMul8079/xfu3+DiZaRx+292CqN85oah/Y/UwVFhvrN8CZ9X4+ZRD3M7CA3cNi0vZru3VMVP90PA01/sc5bqxu2y/Uh92LgZuA38zMHwLUv3+j7tZuGydqH2vRzgTr6IcPAe8GdtbTTwK2ZOb2FnXu2rb6+Yfr/t2+FhOto9eOAjYDn4zq1NuVEfEEBng/Z+Z9wN8CPwB+SLXfbmGw9/O4ydyvXb8PTsewiBZt+8UlYRHxRODLwJ9n5k8n6tqiLfegfdJExB8AD2TmLY3NLbpm4bn96bWYSXWq4uOZuRj4OdWpg3b2p21rqT6HfibVqaMjgScAp7XoOkj7uaQf29L1PNMxLMaAeQ3Tc4FNk1RLxyJimCooPpeZX6mb74+II+rnjwAeqNvbbeNE7XNbtE+0jl47GTgjIjYAV1OdivoQMCsixseOb6xz17bVzx8C/ITuX4sfT7COXhsDxjLzpnr6S1ThMcj7+cXAPZm5OTO3AV8BfofB3s/jJnO/dv0+OB3D4mZgUX0lxAFUH5KtmOSaJlRf2fBPwJ2Z+fcNT60Axq+IOI/qs4zx9tfXVzycBDxcH4KuAl4aEYfW/6N7KdV52h8Cj0TESfW6Xt+0rFbr6KnMvCgz52bmAqp99M3MfC1wA/DKFvU01vnKun/W7Uvqq2gWAouoPgxs+XdQz9NuHT2VmT8CNkbE0XXTi4A7GOD9THX66aSIOLCuaXybB3Y/N5jM/dpuHe3140OsqfZDdSXA3VRXSbxnsuvpoN7fpTpEvA34j/rndKrzrt8Avl//PqzuH8Bl9fbdDow2LOsPgXX1zxsb2keB79XzfJRff2Gz5Tr6vP0v4NdXQx1F9SawDvgi8Li6/fH19Lr6+aMa5n9PvV1rqa8SmejvoN06+rStzwFW1/v6WqqrXgZ6PwPvA+6q6/oM1RVNA7WfgeVUn8lso/pf/Zsmc79OtI52P36DW5JUNB1PQ0mSumRYSJKKDAtJUpFhIUkqMiwkSUWGhSSpyLCQ9lJEzI2IjIbbZfdoPWsi4jUd9n1tRHy3YfqqiLiyd9Vp0BkWmtYiYkNEnDvZdXQiM5+ZmV/osO/nMvO4Xtek6cOwkCQVGRYaCPW9hf42Iu6JiJ9ExL9ExG/Vzy2JatS5RyLi/oi4qm7/Z2A+cGVE/Cwi/rWh/3cj4qcR8cOIuLy+Vfj4up4cESsi4uGIuBs4tamWmRFxcUSsr2v5RkQ8q8PtWBARX6zXuyUi/i0inlQ/t+soKCJWRz1iYsO874uIb9aP3xAR6/bs1ZQey7DQoLgSeDrVqF9Pphrv47qIOITqfkNvy8yDqO4H9E8AmflfqW5k90eZ+cTMfGm9rIeBc6hGqXt+/fPehnV9DthBFTS/RzWyW6MLqG7mdjrVgDPfAr4eEQdPtAERcSDwTao7gz4dOBx4F/Boi+6fAN7YMO/4DeQ+OdE6pD1lWGi/FxGHU40O9tbMvD8zH6W6Od0RwHFUN297ekQclpk/z8xvTbS8zLw+M9dk5s7MXAd8jOpuqETEHKrbpb8rMx/O6k6x72taxBuphq+8KzN/BVxCFS4vK2zKHwAjwJ/Vy96emd/OzEda9F1eb9PievqFVKPNfbmwDmmPGBYaBAvr37fVp262UI1xMEw1+tfpVKeK/jMibomIcyZaWES8JCK+FRGbI+KnwN8As+unx8cNuLdhlnuaFjGPanxkADJzJ7CB3ccPaGUBsD5/PXpbW5n5ENVdacePLt4IXJ2ZvyjNK+0Jw0KDYPyNe1Fmzmr4OTAzl2fmjZl5BtVpnUuBz0bEU+t5djYuqB7z4FqqAZfmZ+bBwF/w65HF7qt/P6VhtoXsbmNjW0TMoAqCjUxsA7AwIoYK/cZ9EjinPrI6G09BqYcMC+33MvMB4PPAx+rTRETErIh4eUQ8JSJeERGHZOYOYEs9247694+oBsoZdwDVmAkPZebWiDgGeHvDusaAG4EPRsTBEfGbwF82lXQV8O6IeFodPu+hGjL1a4VN+RrV5xP/EBGHRMRQPaDNQW36fx3YCnwauDczv1NYvrTHDAsNijdTDXpzY0Q8QjWgy6uA7cDbgA11+2XAeZm5oZ7vUuDciHgoIq7PzJ8Bf0IVBj+r+3++aV3nUA3Qs5Hqw+tPNz2/jOozhX8F7qf6jOOlOfG46WTmz+u+86gGq3mwXtZwm/4763WfRvWBt9QzDn4kSSryyEKSVDRzsguQppOIWMPuH46Puzczn9nveqROeRpKklTkaShJUpFhIUkqMiwkSUWGhSSpyLCQJBX9fwhjGAVUgFocAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Não nos ajuda a ver o que precisamos.\n", + "fig, ax = plt.subplots()\n", + "ax.scatter(x = df['salario'], y = df['estado_civil'])\n", + "plt.ylabel('salario', fontsize=13)\n", + "plt.xlabel('estado_civil', fontsize=13)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "21893.607440356824" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df.estado_civil == 1]['salario'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "93935.88880512808" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df.estado_civil == 1]['salario'].std()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "16251.204448112616" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df.estado_civil == 0]['salario'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "79399.95692962855" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df.estado_civil == 0]['salario'].std()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mascara_salario_alto = df.salario<50000\n", + "mascara_casado = df.estado_civil == 1\n", + "df[(mascara_salario_alto) & (mascara_casado)]['salario'].plot.hist(bins=60)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "mascara_salario_baixo = df.salario > 50\n", + "mascara_casado = df.estado_civil == 1\n", + "mascara_nao_casado = df.estado_civil == 0" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[(mascara_salario_baixo) & (mascara_casado)]['salario'].plot.hist(bins=50)\n", + "df[(mascara_salario_baixo) & (mascara_nao_casado)]['salario'].plot.hist(bins=50)\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAD8CAYAAABgmUMCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAGgRJREFUeJzt3XuUVeWZ5/HvT2C6QLwGFENhl0kw7SUodinMmDHxEiVAi4zDeJkJLDWh14rEznSSCdptdLrbXmiiti4zRqI0kNYQo6IkkjaITbtwaaQwKCr2yCijRxgpQVFiENFn/ti7zJE6dTi7OPtcqn6ftWqds9/z7r2fXVD11HvZ71ZEYGZmVql96h2AmZk1FycOMzPLxInDzMwyceIwM7NMnDjMzCwTJw4zM8vEicPMzDJx4jAzs0ycOMzMLJOBeR1YUgvwKPBH6XnuiYirJB0BLAIOBp4CvhIROyX9EbAQ+FNgC3BeRGxIj3U5cAnwAXBZRDxU7tzDhg2Ltra2XK7LzKyvWr169RsRMXxP9XJLHMB7wGkRsV3SIGClpF8BfwncGBGLJP2IJCHcmr6+GRGfkXQ+cC1wnqSjgfOBY4BPAg9LOjIiPujpxG1tbXR0dOR4aWZmfY+k/1tJvdy6qiKxPd0clH4FcBpwT1q+ADgnfT8l3Sb9/HRJSssXRcR7EfEysB44Ka+4zcysvFzHOCQNkLQG2AwsA/4P8FZE7EqrFICR6fuRwKsA6efbgE8Ul5fYp/hcMyV1SOro7OzM43LMzIycE0dEfBARxwOtJK2Eo0pVS1/Vw2c9le9+rrkR0R4R7cOH77GLzszMeinPMY6PRMRbklYA44EDJQ1MWxWtwMa0WgEYBRQkDQQOALYWlXcp3sfM+qD333+fQqHAjh076h1Kn9TS0kJrayuDBg3q1f55zqoaDryfJo3BwBkkA97/AvxnkplVM4AH0l2WpNuPp58/EhEhaQlwl6QbSAbHRwNP5hW3mdVfoVBgv/32o62tjWSo06olItiyZQuFQoEjjjiiV8fIs8VxGLBA0gCSLrG7I+KXkp4HFkn6O+C3wB1p/TuAn0haT9LSOB8gIp6TdDfwPLALuLTcjCoza347duxw0siJJD7xiU+wN2PBuSWOiHgGGFui/CVKzIqKiB3AtB6OdQ1wTbVjNLPG5aSRn7393vrOcTMzy6Qmg+NmZnujbfaDVT3ehjmTqnq8/saJw2wv9fRLzb+cmtvQoUPZvn37nivmYP78+XR0dHDLLbdUvE9HRwcLFy7k5ptvzjGyhBOHmVmT27VrF+3t7bS3t9fkfB7jMDMrIyL4zne+w7HHHsvnPvc5fvaznwHw4Ycf8vWvf51jjjmGyZMnM3HiRO65554ejzN79myOPvpoxowZw7e//W0AfvGLXzBu3DjGjh3LGWecweuvv95tv57qXH311cycOZMzzzyT6dOns2LFCiZPngzA1q1bOeeccxgzZgzjx4/nmWeeqer3xC0OM7My7rvvPtasWcPTTz/NG2+8wYknnsgpp5zCY489xoYNG1i7di2bN2/mqKOO4uKLLy55jK1bt7J48WJeeOEFJPHWW28B8PnPf54nnngCSdx+++1cd911XH/99R/bt1yd1atXs3LlSgYPHsyKFSs+2ueqq65i7Nix3H///TzyyCNMnz6dNWvWVO174sRhZlbGypUrueCCCxgwYACHHnooX/jCF1i1ahUrV65k2rRp7LPPPowYMYJTTz21x2Psv//+tLS08NWvfpVJkyZ91DIoFAqcd955bNq0iZ07d5a8Ia9cnbPPPpvBgweXjPnee+8F4LTTTmPLli1s27aNAw44YG+/HYC7qszMyorotjRe2fJSBg4cyJNPPsm5557L/fffz4QJEwD4xje+waxZs1i7di233XZbySVWytXZd999K46tmvfFuMVhZg2vnjPUTjnlFG677TZmzJjB1q1befTRR/n+97/Pe++9x4IFC5gxYwadnZ2sWLGCCy+8sOQxtm/fzrvvvsvEiRMZP348n/nMZwDYtm0bI0cmi30vWLCg5L6V1CkV85133smVV17JihUrGDZsGPvvv3/WS++RE4eZWRlTp07l8ccf57jjjkMS1113HSNGjODcc89l+fLlHHvssRx55JGMGzeux66gd955hylTprBjxw4ightvvBFIBrinTZvGyJEjGT9+PC+//HK3fSupU2qfiy66iDFjxjBkyJCKE06llKW51Sza29vDTwC0WvF9HNW3bt06jjqq1FMYGsv27dsZOnQoW7Zs4aSTTuKxxx5jxIgR9Q6rIqW+x5JWR8Qe5/S6xWFm1kuTJ0/mrbfeYufOnVx55ZVNkzT2lhOHmVkvFU+B7TJ16tRu3UnXXnstZ511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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df[(mascara_salario_baixo) & (mascara_casado)]['log_salario'].plot.hist(bins=50)\n", + "df[(mascara_salario_baixo) & (mascara_nao_casado)]['log_salario'].plot.hist(bins=50)\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Adicionando mais variáveis." + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: log_salario R-squared: 0.247\n", + "Model: OLS Adj. R-squared: 0.247\n", + "Method: Least Squares F-statistic: 2892.\n", + "Date: Tue, 12 Feb 2019 Prob (F-statistic): 0.00\n", + "Time: 12:24:59 Log-Likelihood: -59759.\n", + "No. Observations: 44111 AIC: 1.195e+05\n", + "Df Residuals: 44105 BIC: 1.196e+05\n", + "Df Model: 5 \n", + "Covariance Type: nonrobust \n", + "==================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "----------------------------------------------------------------------------------\n", + "Intercept 6.5177 0.196 33.232 0.000 6.133 6.902\n", + "sexo[T.homem] 0.5286 0.196 2.700 0.007 0.145 0.912\n", + "sexo[T.mulher] -0.0513 0.196 -0.262 0.793 -0.435 0.333\n", + "idade 0.0192 0.000 43.958 0.000 0.018 0.020\n", + "anos_estudo 0.1390 0.001 103.249 0.000 0.136 0.142\n", + "estado_civil 0.2178 0.009 22.928 0.000 0.199 0.236\n", + "==============================================================================\n", + "Omnibus: 5081.388 Durbin-Watson: 1.650\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 12500.350\n", + "Skew: -0.675 Prob(JB): 0.00\n", + "Kurtosis: 5.232 Cond. No. 3.01e+03\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "[2] The condition number is large, 3.01e+03. This might indicate that there are\n", + "strong multicollinearity or other numerical problems.\n" + ] + } + ], + "source": [ + "function1 = '''log_salario ~ sexo + idade + anos_estudo + estado_civil'''\n", + "\n", + "model1 = smf.ols(function1, temp.dropna()).fit()\n", + "\n", + "print(model1.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0ididadeanos_estudosalarioestado_civillog_salariosexo_gestantesexo_homemsexo_mulhercor/raca_Amarelacor/raca_Brancacor/raca_Indigenacor/raca_Pardacor/raca_Pretaregiao_centro-oesteregiao_nordesteregiao_norteregiao_sudesteregiao_sul
001.100190e+10535.063600.0000001.011.0604000100001000100
111.100190e+10498.0NaN1.0NaN0011000000100
221.100190e+102211.04352.4003910.08.3789420010010001000
331.100190e+105515.096600.0000001.011.4783550101000000100
441.100190e+105615.0157800.0000001.011.9690960011000000100
551.100190e+103015.088550.0000000.011.3913450011000001000
661.100190e+10525.06734.4003910.08.8152810010100000100
771.100190e+10295.014875.2006840.09.6075850100001000100
881.100190e+102911.06734.4003910.08.8152810010001000100
991.100191e+104615.054300.0000001.010.9023160010100000100
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 id idade anos_estudo salario estado_civil \\\n", + "0 0 1.100190e+10 53 5.0 63600.000000 1.0 \n", + "1 1 1.100190e+10 49 8.0 NaN 1.0 \n", + "2 2 1.100190e+10 22 11.0 4352.400391 0.0 \n", + "3 3 1.100190e+10 55 15.0 96600.000000 1.0 \n", + "4 4 1.100190e+10 56 15.0 157800.000000 1.0 \n", + "5 5 1.100190e+10 30 15.0 88550.000000 0.0 \n", + "6 6 1.100190e+10 52 5.0 6734.400391 0.0 \n", + "7 7 1.100190e+10 29 5.0 14875.200684 0.0 \n", + "8 8 1.100190e+10 29 11.0 6734.400391 0.0 \n", + "9 9 1.100191e+10 46 15.0 54300.000000 1.0 \n", + "\n", + " log_salario sexo_gestante sexo_homem sexo_mulher cor/raca_Amarela \\\n", + "0 11.060400 0 1 0 0 \n", + "1 NaN 0 0 1 1 \n", + "2 8.378942 0 0 1 0 \n", + "3 11.478355 0 1 0 1 \n", + "4 11.969096 0 0 1 1 \n", + "5 11.391345 0 0 1 1 \n", + "6 8.815281 0 0 1 0 \n", + "7 9.607585 0 1 0 0 \n", + "8 8.815281 0 0 1 0 \n", + "9 10.902316 0 0 1 0 \n", + "\n", + " cor/raca_Branca cor/raca_Indigena cor/raca_Parda cor/raca_Preta \\\n", + "0 0 0 1 0 \n", + "1 0 0 0 0 \n", + "2 0 1 0 0 \n", + "3 0 0 0 0 \n", + "4 0 0 0 0 \n", + "5 0 0 0 0 \n", + "6 1 0 0 0 \n", + "7 0 0 1 0 \n", + "8 0 0 1 0 \n", + "9 1 0 0 0 \n", + "\n", + " regiao_centro-oeste regiao_nordeste regiao_norte regiao_sudeste \\\n", + "0 0 0 1 0 \n", + "1 0 0 1 0 \n", + "2 0 1 0 0 \n", + "3 0 0 1 0 \n", + "4 0 0 1 0 \n", + "5 0 1 0 0 \n", + "6 0 0 1 0 \n", + "7 0 0 1 0 \n", + "8 0 0 1 0 \n", + "9 0 0 1 0 \n", + "\n", + " regiao_sul \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 0 \n", + "7 0 \n", + "8 0 \n", + "9 0 " + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# O que o statsmodel fez foi criar uma dummy, ou seja, um valor categórico que assume 0 ou 1.\n", + "# Em outros algoritmos temos que fazer isso explicitamente.\n", + "\n", + "pd.get_dummies(df).head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Deep Dive nos pré-requisitos do modelo de regressão Linear" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 2.084027\n", + "2 -0.038713\n", + "3 1.073494\n", + "4 2.125600\n", + "5 2.264118\n", + "dtype: float64" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model1.resid[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pd.DataFrame(model1.resid, columns=['residuo']).plot.hist(bins=50)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 8.9763728 , 8.41765494, 10.40486053, 9.84349666, 9.12722772,\n", + " 8.15933231, 8.29848655, 8.55199436, 9.6515832 , 9.79124447])" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "yhat = model1.predict()\n", + "yhat[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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VPC2g1fnY1f20uSu1HAwBmoOwZs/htSJkBHol+1Ksh7bG6MXmxqVdG4ZpSLN0wLr/tmackAccOlacDitfcHJPWV89GJUo44md6UibfN/WIl94aehYDmkTTyzL74zuds7bYBS2iyjVCR1tML2x6HwUph3S/fEDmdq7m0jN7k7nU4WLFjAnDlzWLVqFS0tLYM+V/BEX+vXr+cHP/hBn2Xr6ur49a9/PeBr3H///fz4xz/udd0LL7yw2zav10tubi4VFRUDOles0OSuVCQdeNVqcpl5Zej9o6DNPTExkR07drB7927i4+P5z//8z277jTH4/f4Bn3flypWsXdtrEtoug03uoSxfvpyysjKOHDnSte21115jzpw5TJw4se8DY5gmd6Ui6egWiHND7tzQ+0dBcg92ySWXcPDgQY4cOcJ5553HF7/4RRYtWsTx48fZuHEjF154IYsWLWLVqlU0NTUB8Ne//pVzzz2Xiy++mGeffbbrXMGLc1RWVnLTTTcxf/585s+fz9tvv83atWs5dOgQCxYs4J577gHgwQcfZPHixcybN4/77ruv61z//u//zjnnnMMVV1xBcXFxr7gdDgerVq3qmqYYYN26daxevRqA3/zmNyxevJj58+dz8803h/x08pGPfITOgZnV1dUUFBQA4PP5uOeee7ri+q//+i8AKioqWL58edennjfffHPQ3/dQtM1dqUg69i7knHPmBmpP8TYm91fWwsldQz9PsAlz4Zq+m0aCeb1eXnnlFVasWAFAcXExv/vd7/j1r39NdXU13//+93nttddITk7mhz/8IT/96U/5t3/7N+688042bdrEjBkzuOWWW0Ke++677+bSSy/lueeew+fz0dTUxA9+8AN2797dNSfNxo0bKSkp4b333sMYw8qVK3njjTdITk5m3bp1fPDBB3i9XhYtWsQFF1zQ6xqrV69mzZo1fPOb36S9vZ0NGzZ0TYnw8Y9/nDvvvBOA73znOzz66KN86UtfCuv78uijj5Kens7WrVtpb2/noosu4qqrruLZZ5/l6quv5tvf/jY+n29IzVmhaHJXKlI8LdY8MnNX9V3GNfJvqLa2trJgwQLAqrnffvvtlJeXM3XqVJYtWwbAu+++y969e7noImuso8fj4cILL2T//v0UFhYyc+ZMAP7lX/6FRx55pNc1Nm3axB/+8AfAauNPT0+ntra2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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xt4nGWd//H3dyaZmZzTHHpMmxRbWkJbWiinBRGEIggWdekPEM8sXLsu4P50UVxdllX3ulhRd71W0O26iijCsir+UAooJ6UFpAVKaVpa0jZt0vSQ5tg058z9+2MyIYS0mSQzeWYmn9d19Wpm5skz32knn9xzP9/nfsw5h4iIpBef1wWIiEj8KdxFRNKQwl1EJA0p3EVE0pDCXUQkDSncRUTSkMJdRCQNKdxFRNKQwl1EJA1lePXEJSUlrqKiwqunFxFJSa+88soR51zpaNt5Fu4VFRVs2rTJq6cXEUlJZrY3lu00LSMikoYU7iIiaUjhLiKShjybcxeR+Ojt7aWuro6uri6vS5E4CoVClJWVkZmZOa7vV7iLpLi6ujry8vKoqKjAzLwuR+LAOUdjYyN1dXXMnz9/XPvQtIxIiuvq6qK4uFjBnkbMjOLi4gl9GlO4i6QBBXv6mej/qcJdRCQNKdxFPLKtvo0P/cd6zvyXp/j6b7exrb7N65LGze/3s3z5cpYsWcKaNWvo6OgY976ee+45rrzySgAeffRR7rrrruNu29LSwr333jt4u76+nquvvnrczz3UhRdeyKJFi1i+fDnLly+P234ni8JdZJI557jn2WpWf389tc0dlBdlc/+LNVz5H8/zem2L1+WNS1ZWFps3b2br1q0EAgF++MMfvuNx5xzhcHjM+129ejW33377cR8fHu6zZ8/ml7/85Zif53geeOABNm/ezObNm0fcb19f3wlvH0+s202Ewl1kkm2ubeHuJ3dwevk0vvWXy/jipYv4/sdOJ5Tp5ycb9nhd3oS9973vpbq6mpqaGk455RQ+97nPcfrpp1NbW8vvf/97zj33XE4//XTWrFlDe3s7AE888QSLFy/m/PPP59e//vXgvu677z5uvvlmAA4dOsRHPvIRTjvtNE477TReeOEFbr/9dnbt2sXy5cu57bbbqKmpYcmSJUDkQPNnPvMZli5dyooVK3j22WcH9/nRj36Uyy67jIULF/KlL31pTK/v05/+NF/4whe46KKL+PKXv8ydd97JTTfdxKWXXsonP/nJEz7vmjVr+NCHPsSll17KgQMHuOCCCwY/8Tz//PMT/rcfSq2QIpPssS0HyPAZN733JHKCkR/BgqxMLlhYyu+2HOAfrjiF6Xmhce37n39bFffpncrZ+fzTh06Nadu+vj4ef/xxLrvsMgB27NjBT37yE+69916OHDnCN7/5TZ566ilycnL413/9V7773e/ypS99iRtvvJFnnnmGBQsWcM0114y471tvvZX3ve99PPLII/T399Pe3s5dd93F1q1b2bx5MwA1NTWD299zzz0AvPHGG7z55ptceuml7Ny5E4DNmzfz2muvEQwGWbRoEbfccgtz585913Nef/31ZGVlAbBq1SruvvtuAHbu3MlTTz2F3+/nzjvv5JVXXmH9+vVkZWXxne9857jP++KLL7JlyxaKior4zne+wwc+8AG++tWv0t/fP6GprJEo3EUmUTjseOyNA5xWVjgY7FGXVs7giaqDPPjnWj5/yUKPKhyfzs5Oli9fDkRG7jfccAP19fWUl5dzzjnnAPDSSy+xbds2zjvvPAB6eno499xzefPNN5k/fz4LF0Ze88c//nHWrl37rud45plnuP/++4HIHH9BQQHNzc3HrWn9+vXccsstACxevJjy8vLBkL344ospKCgAoLKykr17944Y7g888AArV6581/1r1qzB7/cP3l69evXgL4ETPe+qVasoKioC4Mwzz+Szn/0svb29fPjDHx7894sXhbvIJHqttoUDrV18ZMWcdz02qzCL0+YW8PM/7+VvLnwPgYyxz5rGOsKOt+ic+3A5OTmDXzvnWLVqFQ8++OA7ttm8eXNCWjmdc8d9LBgMDn7t9/vHPAc+9HUNv32i5x263QUXXMCf/vQnHnvsMT7xiU9w22238clPfnJMdZyI5txFJtHvttST6TfOKJ824uMfqJxJw9Funqg6OMmVJd4555zDhg0bqK6uBqCjo4OdO3eyePFi9uzZw65duwDeFf5RF198MT/4wQ8A6O/vp62tjby8PI4ePTri9hdccAEPPPAAEJlG2bdvH4sWLYr3yxr38+7du5fp06dz4403csMNN/Dqq6/GtQ6Fu8gkCYcdj22JTMlkB0b+0Hza3EJKcgP87vX6Sa4u8UpLS7nvvvu47rrrWLZs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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.kdeplot(ytrue, shade=True, label='logsalario')\n", + "sns.kdeplot(yhat, shade=True, label='Predicted Values')\n", + "plt.show()\n", + "sns.kdeplot(model1.resid, shade=True, label='Prediction Errors');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As variáveis tem uma relação linear?" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5,1,'Linear Regression')" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "\n", + "fig, ax = plt.subplots()\n", + "fig = sm.graphics.plot_fit(model1, 4, ax=ax)\n", + "ax.set_ylabel(\"Log de Salario\")\n", + "ax.set_xlabel(\"Anos de Estudo\")\n", + "ax.set_title(\"Linear Regression\")" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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9ttvz2QMy5cv57777uPaa6/lP//zP6f9Xl9++WVWr17NypUr8fl8fOQjH+HnP//5lI6xcePGUW9fvnw599xzD1deeSVXXnklb7311rTjBDh79iyDg4Ns3rwZIQQf//jH+dnPfnZBx1QMZy4zqEeBm3NvFEIsAd4DnJrDWBSKouLIkSPccccdvPbaa1RUVPDtb38bwzD4i7/4C7Zv387evXv51Kc+xd/+7d8C8OEPf5hXXnmFAwcOsG7dOr773e9mjnX06FF27NjBP/3TP/GNb3yDBx98kP379/P8889TVlbGT37yE/bv38+BAwfYsWMHd999d0b4Xn31Vb75zW/y5ptv0traym9/+9vMcQOBAC+88AIf+chHhsX+gx/8ICOC2ZetW7eOeJ+nT59myZIlmX83NTVx+vTpUT+TH//4xxnBbmtry9y+f//+MT/HiooKXn75Zf78z/+cv/qrvxpx/3PPPTdqrO94xztGjbWpqWlSsSqmx5ztg5JS7hJCLB/lrvuBvwamdpqkUJQQS5Ys4ZprrgHgYx/7GA888AA333wzBw8e5D3veQ/gTI8tXLgQgIMHD/KlL32J/v5+otEoN910U+ZYf/iHf4iu6wBcc801fP7zn+f222/nwx/+ME1NTbzwwgvcdttt6LpOQ0MD119/Pa+88goVFRVceeWVmUF548aNnDhxgmuvvRZwptxG4/bbb+f222+f1PscbQ1ntCq4D3zgA9x22234/X6+853v8IlPfIJnn312wuPfdtttmevPfe5zI+5/17veNa7ATSfWC+VMf5xo0qTcX3rbVvP6joUQtwKnpZQHVCmmQjE2ud8PIQRSStavX8+LL7444vGf/OQn+dnPfsZll13Go48+ys6dOzP3hUKhzM9f/OIXed/73scvf/lLrr76anbs2DHuQr/f78/8rOv6sHWs7ONm84Mf/ICvf/3rI25fvXo127dvH3ZbU1PTsGyovb2dRYsWjXjuggULMj//6Z/+Kffcc8+YMWeT/TmONuY899xzowpXMBjkd7/73YhY29vbJ4z1QukZSpEwrJIUqLwVSQghgsDfAvdO8vF3CCH2CCH2dHV1zW5wCkWBcerUqYwQbdu2jWuvvZa1a9fS1dWVud0wDN544w0AIpEICxcuxDAMfvCDH4x53GPHjrFhwwbuueceNm3axOHDh7nuuut4/PHHsSyL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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.jointplot(model1.predict(), temp.dropna()['log_salario'], kind='reg')\n", + "plt.xlabel('Predicted Values ($\\hat y$)')\n", + "plt.ylabel('House Values ($y$)');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Os erros são independentes?" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Em uma cross-section precisamos entender como os dados foram construidos.\n", + "# Em uma série de tempo/espaço analisamos se o tempo atual tem relação com o tempo passado. \n", + "# ou no espaço, se a posição atual tem relação com as posições ao redor.\n", + "from pandas.plotting import lag_plot\n", + "lag_plot(temp.dropna()['log_salario']-model1.predict())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Os erros tem distribuição normal?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Plotar a distribuição/histograma e comparar com uma curva normal geralmente é suficiente\n", + "# para dizer que nossos erros/rezidos são normalmente distribuidos.\n", + "# do contrário podemos supor que existe alguma variável importante que não foi incluida no modelo\n", + "# e portanto tornando nossos parâmetros betas estimados enviesados.\n", + "# Com uma amostra de reduzidos normalmente distribuida, há mais indicios para dizer que ela é\n", + "# causada por alguma aleatoriedade. Mais uma palavra para nosso vocabulario é \"idiossincratico\"\n", + "# que sifnifica basicamente que o que explica a diferença dos valores previstos para os observados\n", + "# são causados por coisas muito particulares das observações que não devem ser consideradas no modelo,\n", + "# a essas caracteristicas particulares damos o nome de caracteristicas idiossincraticas." + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NormaltestResult(statistic=5081.388385178984, pvalue=0.0)" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from scipy.stats import normaltest\n", + "normaltest(temp.dropna()['log_salario']-model1.predict())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# A variância sigma2 das variaveis não dependem no nível da variável (são constantes)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/resumo.txt" "b/2-analise-explorat\303\263ria-inter/02-regress\303\265es2/resumo.txt" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/7pecados.ipynb" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/7pecados.ipynb" new file mode 100755 index 0000000..7d28b59 --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/7pecados.ipynb" @@ -0,0 +1,127 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sete pecados de regressão\n", + "\n", + "Essa lista dos sete pecados de regressões mostra todas as maneiras pelas quais os modelos de regressão podem estar errados. Todos os sete são discutidos abaixo, embora alguns merecem mais discussão do que outros. Veja também este folheto que lista cada problema, se causa viés, se afeta os erros padrão e possíveis soluções.\n", + "\n", + "## Viés Variável Omitido\n", + "Como detalhado acima, omitir uma variável de um modelo de regressão pode influenciar as estimativas de inclinação para as variáveis ​​incluídas no modelo. O viés ocorre apenas quando a variável omitida está correlacionada com a variável dependente e com uma das variáveis ​​independentes incluídas.\n", + "\n", + "\n", + "\n", + "\n", + "## Viés de heterogeneidade\n", + "O viés de heterogeneidade (também chamado de diferença de diferença de grupo) ocorre quando há estruturas de grupo naturais nos dados e há diferenças inatas nos grupos que estão correlacionados com a variável de estudo. Um grupo pode ser muitas pessoas em um ou mais períodos de tempo. Um “grupo” também pode ser um indivíduo medido ao longo do tempo.\n", + "\n", + "Neste exemplo (um estudo médico de pressão arterial), uma regressão mostra uma tendência ascendente na pressão sanguínea à medida que a dosagem aumenta.\n", + "\n", + "\n", + "\n", + "Mas quando o modelo considera as diferenças de grupo, vemos que o relacionamento é realmente invertido (isto é, agora vemos uma tendência de queda).\n", + "\n", + "\n", + "\n", + "\n", + "Essencialmente, este é apenas um caso especial de viés de variável omitido, no qual a variável omitida é grupos.\n", + "## Viés de seleção\n", + "O viés de seleção surge quando os indivíduos entram / saem de grupos de formas não aleatórias. Por exemplo, se você estiver avaliando o efeito de um programa de sexo somente para abstinência na gravidez na adolescência, se os indivíduos escolherem se participar, os resultados serão diferentes de um cenário no qual os indivíduos são aleatoriamente designados para participar ou não. grupos participantes.\n", + "\n", + "Essencialmente, este é apenas outro caso especial de viés de variável omitido no qual a variável omitida é propensão (para participar).\n", + "\n", + "### Seleção de entrada versus saída de seleção\n", + "\n", + "se a propensão a sair de um estudo estiver correlacionada com as variáveis ​​do estudo, então o atrito cria um viés\n", + "\n", + "se atrito é aleatório (não correlacionado), então não é um problema\n", + "\n", + "ver slides para micro-finanças exemplo de apenas pobre deixar o programa e produzir efeito de programa artificial\n", + "\n", + "## Multicolinearidade\n", + "Como discutido em Regressão Visual , a multicolinearidade ocorre quando as variáveis ​​independentes em um modelo de regressão estão fortemente correlacionadas entre si. Isso torna difícil dizer os efeitos independentes dessas variáveis ​​e também inflaciona os erros padrão de cada inclinação. Abaixo, vemos que quanto maior a multicolinearidade, menor será a área B, e maiores serão os erros padrões. Quando os erros padrão são maiores, os intervalos de confiança são maiores e é menos provável que a inclinação seja estatisticamente significativa.\n", + "\n", + "\n", + "\n", + "\n", + "## Erro de medição\n", + "Conforme discutido em Regressão Visual , o erro de medição pode influenciar as estimativas de inclinação e alterar os erros padrão na regressão.\n", + "\n", + "Lembre-se que o erro de medição é sempre erro aleatório, não erro sistemático. Erro sistemático sempre empurra os resultados na mesma direção. Um exemplo de erro sistemático seria se você estivesse medindo o peso de indivíduos com uma escala mal calibrada que adiciona cinco libras a cada leitura. Nesse caso, a média será diferente, mas a variação não será; o declive de regressão será idêntico, mas o intercepto será diferente. Assim, a inclinação não é influenciada pelo erro sistemático de medição.\n", + "\n", + "Os efeitos do erro de medição (aleatório) dependem de estar na variável dependente ou independente\n", + "### Na Variável Dependente\n", + "O erro de medição na variável dependente causa variação adicional em Y. A introdução do erro de medição na variável dependente inflará o erro padrão, mas a estimativa de inclinação será idêntica. O erro padrão inflado, por sua vez, tornará menos provável que a inclinação seja estatisticamente significativa.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "### Na variável independente\n", + "O erro de medição na variável independente causa uma variância adicional em X. A introdução do erro de medição na variável independente causará o encolhimento da estimativa do declive (chamada atenuação) e reduz o erro padrão. A atenuação sempre empurra a inclinação para zero, não importa se a relação é positiva ou negativa.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Viés de especificação incorreta\n", + "O viés pode ser introduzido se usarmos uma forma inadequada do modelo de regressão adequado para as variáveis ​​sob análise. Isso pode ser ilustrado pelo quarteto de Anscombe, um grupo de quatro conjuntos de dados muito diferentes que possuem algumas propriedades estatísticas idênticas (média, variância, correlação e resultados de regressão).\n", + "\n", + "\n", + "\n", + "\n", + "As diferenças são ainda mais impressionantes nos gráficos de dispersão dos quatro conjuntos de dados.\n", + "\n", + "\n", + "\n", + "## Simultaneidade\n", + "A simultaneidade ocorre quando a estrutura causal forma um ciclo de feedback. Quando este é o caso, é muito difícil separar os efeitos independentes. Tal modelo causal é retratado abaixo.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/aula.ipynb" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/aula.ipynb" new file mode 100755 index 0000000..0a37562 --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/aula.ipynb" @@ -0,0 +1,397 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "Exemplo (1) Modelando uma regressão multipla para entender como diferentes variáveis afetam os preços de casas nos EUA.\n", + "\n", + "Features:\n", + "- **price** - The last price the house was sold for\n", + "- **num_bed** - The number of bedrooms\n", + "- **num_bath** - The number of bathrooms (fractions mean the house has a toilet-only or shower/bathtub-only bathroom)\n", + "- **size_house** (includes basement) - The size of the house\n", + "- **size_lot** - The size of the lot\n", + "- **num_floors** - The number of floors\n", + "- **is_waterfront** - Whether or not the house is a waterfront house (0 means it is not a waterfront house whereas 1 means that it is a waterfront house)\n", + "- **condition** - How worn out the house is. Ranges from 1 (needs repairs all over the place) to 5 (the house is very well maintained)\n", + "- **size_basement** - The size of the basement\n", + "- **year_built** - The year the house was built\n", + "- **renovation_date** - The year the house was renovated for the last time. 0 means the house has never been renovated\n", + "- **zip** - The zip code\n", + "- **latitude** - Latitude\n", + "- **longitude** - Longitude\n", + "- **avg_size_neighbor_houses** - The average house size of the neighbors\n", + "- **avg_size_neighbor_lot** - The average lot size of the neighbors" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import statsmodels.formula.api as smf\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy import stats\n", + "from sklearn import linear_model\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "%matplotlib inline\n", + "%config InlineBackend.figure_formats=['svg']" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv(r'./data/house_sales.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pricenum_bednum_bathsize_housesize_lotnum_floorsis_waterfrontconditionsize_basementyear_builtrenovation_dateziplatitudelongitudeavg_size_neighbor_housesavg_size_neighbor_lot
count1.844800e+0418448.00000018448.00000018448.0000001.844800e+0418448.00000018448.00000018448.00000018448.00000018448.00000018448.00000018448.00000018448.00000018448.00000018448.00000018448.000000
mean5.423624e+053.3726152.1188882083.9409151.503602e+041.4946060.0076433.411698293.5714981971.00113885.14500298077.92145547.560030-122.2144191988.30648312571.596216
std3.720135e+050.9338920.772384921.4162184.181455e+040.5408060.0870920.652593443.60750329.361619403.37126353.4974400.1385570.139910686.17312426329.260211
min7.800000e+040.0000000.000000290.0000005.200000e+021.0000000.0000001.0000000.0000001900.0000000.00000098001.00000047.155933-122.518648399.000000651.000000
25%3.218375e+053.0000001.7500001430.0000005.050000e+031.0000000.0000003.0000000.0000001952.0000000.00000098033.00000047.471527-122.3280841490.0000005100.000000
50%4.500000e+053.0000002.2500001920.0000007.600500e+031.5000000.0000003.0000000.0000001975.0000000.00000098065.00000047.571599-122.2306881840.0000007611.000000
75%6.480000e+054.0000002.5000002560.0000001.062525e+042.0000000.0000004.000000570.0000001997.0000000.00000098118.00000047.677918-122.1257332370.00000010050.000000
max7.700000e+0633.0000008.00000013540.0000001.651359e+063.5000001.0000005.0000004820.0000002015.0000002015.00000098199.00000047.777624-121.3152546110.000000858132.000000
\n", + "
" + ], + "text/plain": [ + " price num_bed num_bath size_house size_lot \\\n", + "count 1.844800e+04 18448.000000 18448.000000 18448.000000 1.844800e+04 \n", + "mean 5.423624e+05 3.372615 2.118888 2083.940915 1.503602e+04 \n", + "std 3.720135e+05 0.933892 0.772384 921.416218 4.181455e+04 \n", + "min 7.800000e+04 0.000000 0.000000 290.000000 5.200000e+02 \n", + "25% 3.218375e+05 3.000000 1.750000 1430.000000 5.050000e+03 \n", + "50% 4.500000e+05 3.000000 2.250000 1920.000000 7.600500e+03 \n", + "75% 6.480000e+05 4.000000 2.500000 2560.000000 1.062525e+04 \n", + "max 7.700000e+06 33.000000 8.000000 13540.000000 1.651359e+06 \n", + "\n", + " num_floors is_waterfront condition size_basement year_built \\\n", + "count 18448.000000 18448.000000 18448.000000 18448.000000 18448.000000 \n", + "mean 1.494606 0.007643 3.411698 293.571498 1971.001138 \n", + "std 0.540806 0.087092 0.652593 443.607503 29.361619 \n", + "min 1.000000 0.000000 1.000000 0.000000 1900.000000 \n", + "25% 1.000000 0.000000 3.000000 0.000000 1952.000000 \n", + "50% 1.500000 0.000000 3.000000 0.000000 1975.000000 \n", + "75% 2.000000 0.000000 4.000000 570.000000 1997.000000 \n", + "max 3.500000 1.000000 5.000000 4820.000000 2015.000000 \n", + "\n", + " renovation_date zip latitude longitude \\\n", + "count 18448.000000 18448.000000 18448.000000 18448.000000 \n", + "mean 85.145002 98077.921455 47.560030 -122.214419 \n", + "std 403.371263 53.497440 0.138557 0.139910 \n", + "min 0.000000 98001.000000 47.155933 -122.518648 \n", + "25% 0.000000 98033.000000 47.471527 -122.328084 \n", + "50% 0.000000 98065.000000 47.571599 -122.230688 \n", + "75% 0.000000 98118.000000 47.677918 -122.125733 \n", + "max 2015.000000 98199.000000 47.777624 -121.315254 \n", + "\n", + " avg_size_neighbor_houses avg_size_neighbor_lot \n", + "count 18448.000000 18448.000000 \n", + "mean 1988.306483 12571.596216 \n", + "std 686.173124 26329.260211 \n", + "min 399.000000 651.000000 \n", + "25% 1490.000000 5100.000000 \n", + "50% 1840.000000 7611.000000 \n", + "75% 2370.000000 10050.000000 \n", + "max 6110.000000 858132.000000 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "corrmat = df[['price','size_house','num_bath','size_house','size_lot','num_floors','is_waterfront','year_built','latitude','longitude','avg_size_neighbor_houses','avg_size_neighbor_lot']].corr()\n", + "cols = corrmat.nlargest(10, 'price')['price'].index\n", + "cm = np.corrcoef(df[cols].values.T)\n", + "sns.set(font_scale=1.15)\n", + "f, ax = plt.subplots(figsize=(12, 9))\n", + "hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import Image\n", + "Image(filename=r'img\\houses_tableau.jpg')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "function1 = '''\n", + "price ~ \n", + " + size_house\n", + " + num_bath\n", + " + size_house\n", + " + size_lot\n", + " + num_floors\n", + " + is_waterfront\n", + " + year_built\n", + " + latitude\n", + " + longitude\n", + " + avg_size_neighbor_houses\n", + " + avg_size_neighbor_lot\n", + "'''\n", + "\n", + "model1 = smf.ols(function1, df).fit()\n", + "print(model1.summary2())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/endogeneidade.ipynb" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/endogeneidade.ipynb" new file mode 100755 index 0000000..cd00ba2 --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/endogeneidade.ipynb" @@ -0,0 +1,126 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Endogeneidade\n", + "\n", + "Qualquer variável explicativa (exógena/independente/X) que for correlacionada com o termo de erro será uma variável endógena. Ou seja, quase sempre.\n", + "\n", + "\n", + "Segundo Wooldridge (Econometric Analysis of Cross-Section and Panel Data, 2 ed, 2011, p. 54-55):\n", + "\n", + "**Variáveis omitidas**: se há uma variável omitida no modelo, ela acaba sendo incorporada ao erro. Caso esta variável omitida seja correlacionada com alguma das variáveis explicativas que já está no modelo (o que é bem comum), necessariamente haverá correlação entre variável explicativa e erro.\n", + "\n", + "\n", + "**Erro de mensuração**: se há apenas uma variável com erro de mensuração e não temos a variável sem erro que deveria estar no modelo, podemos ter correlação entre a variável que temos (com erro) e o erro (porque o erro contém uma parte daquilo que não foi mensurado corretamente). Isso depende da relação entre a variável que temos (com erro) e a que não temos mas gostaríamos de ter (sem erro).\n", + "\n", + "\n", + "**Simultaneidade**: quando uma das variáveis explicativas é determinada pela variável explicada no modelo. Ou seja, x influencia y, mas y também influencia x simultaneamente. Nesse caso, x e o erro geralmente possuem correlação entre si. \n", + "\n", + "Uma razão extra é a **má expecificação da forma funcional** (que sai da teoria).\n", + "\n", + "Com endogeneidade não temos E[e|x1,x2,...] = 0\n", + "\n", + "\n", + "E qual é o problema da endogeneidade? Além do **viés**, o grande problema que podemos ter é a **inconsistência** (além de ser **ineficiente**). Nesse caso, nossas estimativas não convergirão ao parâmetro populacional. Para que então rodar uma regressão? O importante de uma estimativa amostral é que, através dela, possamos dizer algo sobre a população.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Variaveis Instrumentais \n", + "Wooldridge, 2011 – Capítulo 15\n", + "\n", + "O uso das variáveis instrumentais (IV) nos auxiliará na\n", + "busca de estimadores consistentes, quando tivermos\n", + "regressores endógenos presentes no modelo de\n", + "regressão.\n", + "\n", + "\n", + "\n", + "Considere o modelo\n", + "salarioi = beta_0 + beta_1 * educ + e (1)\n", + "\n", + "com\n", + "\n", + "Cov(educ, e) != 0 (2)\n", + "\n", + "Pergunta: qual razão estaria nos levando à violação desta premissa?\n", + "Resposta: educ deve estar correlacionada com habilidade (que\n", + "certamente afeta salário e encontra-se no termo de erro e,\n", + "além de tudo, é não observável diretamente).\n", + "\n", + "suponha que tenha sido observada uma variável\n", + "explicativa z que satisfaça a duas suposições:\n", + "\n", + "**(a) z é não-correlacionada com e, isto é, Cov(z,e) = 0**\n", + "\n", + "z é exógena na regressão.\n", + "\n", + "\n", + "**(b) z é correlacionada com educ, isto é, Cov(z, educ) != 0**\n", + "\n", + "Como verificar a validade de (a) e (b)?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Estimador em dois estágios" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "http://hedibert.org/wp-content/uploads/2014/05/Econometria201401-Aula15a-ARLMXII-Endogeneidade.pdf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/7sins OVB.png" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/7sins OVB.png" new file mode 100755 index 0000000..2e7d67b Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/7sins OVB.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/anscombe data.png" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/anscombe data.png" new file mode 100755 index 0000000..6d43393 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/anscombe data.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/anscombe graphs.png" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/anscombe graphs.png" new file mode 100755 index 0000000..1683a30 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/anscombe graphs.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/dv measerror.png" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/dv measerror.png" new file mode 100755 index 0000000..3456cf6 Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/dv measerror.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/hetero1.png" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/hetero1.png" new file mode 100755 index 0000000..d25145f Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/hetero1.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/hetero2.png" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/hetero2.png" new file mode 100755 index 0000000..8f46d8d Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/hetero2.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/iv measerror.png" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/iv measerror.png" new file mode 100755 index 0000000..ef1782a Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/iv measerror.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/multicoll.png" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/multicoll.png" new file mode 100755 index 0000000..40b4a6b Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/multicoll.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/simult.png" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/simult.png" new file mode 100755 index 0000000..ae82bea Binary files /dev/null and "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/img/simult.png" differ diff --git "a/2-analise-explorat\303\263ria-inter/03-endogeneidade/resumo.txt" "b/2-analise-explorat\303\263ria-inter/03-endogeneidade/resumo.txt" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/04-causalidade/resumo.txt" "b/2-analise-explorat\303\263ria-inter/04-causalidade/resumo.txt" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/05-modelagem1/Untitled.ipynb" "b/2-analise-explorat\303\263ria-inter/05-modelagem1/Untitled.ipynb" new file mode 100755 index 0000000..09820bb --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/05-modelagem1/Untitled.ipynb" @@ -0,0 +1,57 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modelagem \n", + "\n", + "- Calculando ponto ótimo da parabola\n", + "- Interpretando semi elasticidade\n", + "- Interpretando elasticidade\n", + "- transformando variaveis em desvio e interpretando o modelo\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/05-modelagem1/resumo.txt" "b/2-analise-explorat\303\263ria-inter/05-modelagem1/resumo.txt" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/06-modelagem2/efeitos_aleat\303\263rios.ipynb" "b/2-analise-explorat\303\263ria-inter/06-modelagem2/efeitos_aleat\303\263rios.ipynb" new file mode 100755 index 0000000..2fd6442 --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/06-modelagem2/efeitos_aleat\303\263rios.ipynb" @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/06-modelagem2/efeitos_fixos.ipynb" "b/2-analise-explorat\303\263ria-inter/06-modelagem2/efeitos_fixos.ipynb" new file mode 100755 index 0000000..2fd6442 --- /dev/null +++ "b/2-analise-explorat\303\263ria-inter/06-modelagem2/efeitos_fixos.ipynb" @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/2-analise-explorat\303\263ria-inter/06-modelagem2/resumo.txt" "b/2-analise-explorat\303\263ria-inter/06-modelagem2/resumo.txt" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/07-avaliacao-politica/resumo.txt" "b/2-analise-explorat\303\263ria-inter/07-avaliacao-politica/resumo.txt" old mode 100644 new mode 100755 diff --git "a/2-analise-explorat\303\263ria-inter/08-regress\303\243o-logistica/resumo.txt" "b/2-analise-explorat\303\263ria-inter/08-regress\303\243o-logistica/resumo.txt" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 1 - Machine Learning - Introdu\303\247\303\243o/machine_learning_intro.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 1 - Machine Learning - Introdu\303\247\303\243o/machine_learning_intro.ipynb" old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/.ipynb_checkpoints/gradiente_descendente-checkpoint.ipynb b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/.ipynb_checkpoints/gradiente_descendente-checkpoint.ipynb old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/.ipynb_checkpoints/nao_supervisionado-checkpoint.ipynb b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/.ipynb_checkpoints/nao_supervisionado-checkpoint.ipynb old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/animation.gif b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/animation.gif old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/gradiente_descendente.ipynb b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/gradiente_descendente.ipynb old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/0_sFYJwQCCjOnXpSoD.png b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/0_sFYJwQCCjOnXpSoD.png old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/1_J-TbI94E1nXNHIubJc7VeQ.png b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/1_J-TbI94E1nXNHIubJc7VeQ.png old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/1_QEME_QUKOjntJpBBUdgTNA.png b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/1_QEME_QUKOjntJpBBUdgTNA.png old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/1_WGHn1L4NveQ85nn3o7Dd2g.png b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/1_WGHn1L4NveQ85nn3o7Dd2g.png old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/1_f9a162GhpMbiTVTAua_lLQ.png b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/1_f9a162GhpMbiTVTAua_lLQ.png old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/22ce7c18-984c-4a08-8b50-2bbe93f6ed34.jpg b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/22ce7c18-984c-4a08-8b50-2bbe93f6ed34.jpg old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/4hi5cD92Lw2AhFg5nWuvFFp7.gif b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/4hi5cD92Lw2AhFg5nWuvFFp7.gif old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/9946262.png b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/9946262.png old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/otimizacao1.mp4 b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/otimizacao1.mp4 old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/otimizacao2.mp4 b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/images/otimizacao2.mp4 old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/nao_supervisionado.ipynb b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/nao_supervisionado.ipynb old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/test.csv b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/test.csv old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/train.csv b/3-machine-learning-supervisionado-intro/Aula 2 - Gradiente Descendente/train.csv old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/exercicio.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/exercicio.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/img/overfit.png" "b/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/img/overfit.png" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/pratica_guiada_1.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/pratica_guiada_1.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/pratica_guiada_2.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/pratica_guiada_2.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/test.csv" "b/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/test.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/train.csv" "b/3-machine-learning-supervisionado-intro/Aula 3 - Valida\303\247\303\243o de modelos e Hiperparametros/train.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/exercicio_limpeza.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/exercicio_limpeza.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/handson_pricing_predict.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/handson_pricing_predict.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/house_pricing_test.csv" "b/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/house_pricing_test.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/house_pricing_train.csv" "b/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/house_pricing_train.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/limpeza_dados.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/limpeza_dados.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/pew-raw.csv" "b/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/pew-raw.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/sales.csv" "b/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/sales.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/tb-raw.csv" "b/3-machine-learning-supervisionado-intro/Aula 4 - Limpeza e prepara\303\247\303\243o dos dados/tb-raw.csv" old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 5 - Train-Test Split/train_test.pptx b/3-machine-learning-supervisionado-intro/Aula 5 - Train-Test Split/train_test.pptx deleted file mode 100644 index 9503d44..0000000 Binary files a/3-machine-learning-supervisionado-intro/Aula 5 - Train-Test Split/train_test.pptx and /dev/null differ diff --git "a/3-machine-learning-supervisionado-intro/Aula 6 - Regulariza\303\247\303\243o/handson_pricing_predict.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 6 - Regulariza\303\247\303\243o/handson_pricing_predict.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 6 - Regulariza\303\247\303\243o/house_pricing_test.csv" "b/3-machine-learning-supervisionado-intro/Aula 6 - Regulariza\303\247\303\243o/house_pricing_test.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 6 - Regulariza\303\247\303\243o/house_pricing_train.csv" "b/3-machine-learning-supervisionado-intro/Aula 6 - Regulariza\303\247\303\243o/house_pricing_train.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/agrupamento_alunos_pca_kmeans.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/agrupamento_alunos_pca_kmeans.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/dados_turma_ds.csv" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/dados_turma_ds.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/gender_submission.csv" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/gender_submission.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/1_EyPd0sQxEXtTDSJgu72JNQ.jpeg" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/1_EyPd0sQxEXtTDSJgu72JNQ.jpeg" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/maxmin.png" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/maxmin.png" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/mean.png" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/mean.png" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/stan.png" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/stan.png" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/unit.png" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/img/unit.png" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/kaggle_titanic_challenge.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/kaggle_titanic_challenge.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/random_forest_solution.csv" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/random_forest_solution.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/test.csv" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/test.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/train.csv" "b/3-machine-learning-supervisionado-intro/Aula 7 - Normaliza\303\247\303\243o/train.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 8 - Introdu\303\247\303\243o a Classificacao/.ipynb_checkpoints/classificacao_imagens-checkpoint.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 8 - Introdu\303\247\303\243o a Classificacao/.ipynb_checkpoints/classificacao_imagens-checkpoint.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 8 - Introdu\303\247\303\243o a Classificacao/classificacao_imagens.ipynb" "b/3-machine-learning-supervisionado-intro/Aula 8 - Introdu\303\247\303\243o a Classificacao/classificacao_imagens.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Aula 8 - Introdu\303\247\303\243o a Classificacao/workflow.jpeg" "b/3-machine-learning-supervisionado-intro/Aula 8 - Introdu\303\247\303\243o a Classificacao/workflow.jpeg" old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 9 - HandsOn/classifiers_difference.ipynb b/3-machine-learning-supervisionado-intro/Aula 9 - HandsOn/classifiers_difference.ipynb old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 9 - HandsOn/cm.png b/3-machine-learning-supervisionado-intro/Aula 9 - HandsOn/cm.png old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 9 - HandsOn/handson.ipynb b/3-machine-learning-supervisionado-intro/Aula 9 - HandsOn/handson.ipynb old mode 100644 new mode 100755 diff --git a/3-machine-learning-supervisionado-intro/Aula 9 - HandsOn/roc_auc_curve.png b/3-machine-learning-supervisionado-intro/Aula 9 - HandsOn/roc_auc_curve.png old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Miscel\303\242nia/births.csv" "b/3-machine-learning-supervisionado-intro/Miscel\303\242nia/births.csv" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Miscel\303\242nia/viz_seaborn_1.ipynb" "b/3-machine-learning-supervisionado-intro/Miscel\303\242nia/viz_seaborn_1.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Miscel\303\242nia/viz_seaborn_2.ipynb" "b/3-machine-learning-supervisionado-intro/Miscel\303\242nia/viz_seaborn_2.ipynb" old mode 100644 new mode 100755 diff --git "a/3-machine-learning-supervisionado-intro/Miscel\303\242nia/viz_seaborn_3.ipynb" "b/3-machine-learning-supervisionado-intro/Miscel\303\242nia/viz_seaborn_3.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/HR_comma_sep.csv" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/HR_comma_sep.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/KNN.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/KNN.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/exemplo_knn.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/exemplo_knn.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/0_RKKb0xdKkkjT4h2__.jpg" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/0_RKKb0xdKkkjT4h2__.jpg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/347a4b535ffd805ffdf332e51905bcdf4764f663.svg" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/347a4b535ffd805ffdf332e51905bcdf4764f663.svg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/derm-roc-v-rocch1.png" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/derm-roc-v-rocch1.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/fig-2-11.gif" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/fig-2-11.gif" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/fig-3-1.gif" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/fig-3-1.gif" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/fig-5-roc-curves-and-precision-recall-pr-curves-for-predicting-secretory-ppis-from.png" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/fig-5-roc-curves-and-precision-recall-pr-curves-for-predicting-secretory-ppis-from.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/fig5.gif" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/fig5.gif" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/image_from_ios.jpg" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/image_from_ios.jpg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/metrics.png" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/metrics.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/roc-auc.png" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/roc-auc.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/sagemaker-knn-1.gif" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/sagemaker-knn-1.gif" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/slide14.png" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/slide14.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/threshold2.png" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/threshold2.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/two-point-roc1.png" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/img/two-point-roc1.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/introducao_KNN_NBA.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/introducao_KNN_NBA.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/machine_learning_basic_step_by_step.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/machine_learning_basic_step_by_step.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/market.csv" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/market.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/nba_2013.csv" "b/4-machine-learning-supervisionado-inter/Aula 1 - Introdu\303\247\303\243o a Classifica\303\247\303\243o/nba_2013.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 10 - Parametriza\303\247\303\243o/GridSearch.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 10 - Parametriza\303\247\303\243o/GridSearch.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 10 - Parametriza\303\247\303\243o/RandomizedSearch.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 10 - Parametriza\303\247\303\243o/RandomizedSearch.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 10 - Parametriza\303\247\303\243o/deep_dive.txt" "b/4-machine-learning-supervisionado-inter/Aula 10 - Parametriza\303\247\303\243o/deep_dive.txt" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 10 - Parametriza\303\247\303\243o/optimizer.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 10 - Parametriza\303\247\303\243o/optimizer.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/USBankHolidays.csv" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/USBankHolidays.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/data/AirPassengers.csv" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/data/AirPassengers.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/data/Sample - Superstore.xls" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/data/Sample - Superstore.xls" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/data/tesla_search_terms.csv" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/data/tesla_search_terms.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/gm.csv" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/gm.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/0_4XXSSYy4nYDDgNex.jpg" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/0_4XXSSYy4nYDDgNex.jpg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_0rt_W8NzoFG_WQ0I9mncyg.png" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_0rt_W8NzoFG_WQ0I9mncyg.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_1I9G9ek3oXmuS2Fa9KVf9g.png" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_1I9G9ek3oXmuS2Fa9KVf9g.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_5OHpAvp_w5g7jccqJ8OYaA (1).png" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_5OHpAvp_w5g7jccqJ8OYaA (1).png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_5OHpAvp_w5g7jccqJ8OYaA.png" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_5OHpAvp_w5g7jccqJ8OYaA.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_jEFOLncknBJ8cPQSBQDktA.png" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_jEFOLncknBJ8cPQSBQDktA.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_wtXXjTJK2J9MQFFkyGyhwA.png" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/1_wtXXjTJK2J9MQFFkyGyhwA.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/crossvalidation.png" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/img/crossvalidation.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/kaggle_with_sarimax.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/kaggle_with_sarimax.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/possivel_m\303\241_solucao.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/possivel_m\303\241_solucao.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/tesla.csv" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/tesla.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/time_series.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/time_series.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/train.zip" "b/4-machine-learning-supervisionado-inter/Aula 11 - S\303\251ries de Tempo/train.zip" old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 2 - Logistica/binary.csv b/4-machine-learning-supervisionado-inter/Aula 2 - Logistica/binary.csv old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 2 - Logistica/regressa_logistica.ipynb b/4-machine-learning-supervisionado-inter/Aula 2 - Logistica/regressa_logistica.ipynb old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/arvore_decisao.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/arvore_decisao.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/arvore_decisao_CARTS.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/arvore_decisao_CARTS.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/arvores_decisao.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/arvores_decisao.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/decisionTree3.png" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/decisionTree3.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/decisionTree4.png" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/decisionTree4.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/decisionTree5.png" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/decisionTree5.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/deep_learning.pdf" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/deep_learning.pdf" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/entropia.png" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/entropia.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/entropia_shannon.jpg" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/entropia_shannon.jpg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/lr_boundary_linear.png" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/lr_boundary_linear.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/lr_boundary_radial.png" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/lr_boundary_radial.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/model_boundary_linear.png" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/model_boundary_linear.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/model_boundary_radial.png" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/model_boundary_radial.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/regularization.jpg" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/regularization.jpg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/under_and_overfiting.jpg" "b/4-machine-learning-supervisionado-inter/Aula 3 - Arvores de Decis\303\243o/img/under_and_overfiting.jpg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/RandomForests e Ensembles1.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/RandomForests e Ensembles1.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/RandomForests e Ensembles2.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/RandomForests e Ensembles2.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/__pycache__/utils.cpython-36.pyc" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/__pycache__/utils.cpython-36.pyc" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/arvores_aleat\303\263rias.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/arvores_aleat\303\263rias.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/cars.csv" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/cars.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/data_banknote_authentication.csv" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/data_banknote_authentication.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/default.csv" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/default.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/non-linear.p" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/non-linear.p" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/regression.p" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/data/regression.p" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/0_GHYCJIjkkrP5ZgPh.png" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/0_GHYCJIjkkrP5ZgPh.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/1_C7CrBG1VNaa1x491eZ3fnw.gif" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/1_C7CrBG1VNaa1x491eZ3fnw.gif" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/1_JORe4Wkhb-nOZhNbZXwhgA.png" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/1_JORe4Wkhb-nOZhNbZXwhgA.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/4188126722.pdf" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/4188126722.pdf" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/PbAVO.png" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/PbAVO.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/QBuDOjs.jpg" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/QBuDOjs.jpg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/RFfqb.png" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/RFfqb.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/bagging_example.png" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/bagging_example.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/bias-variance.png" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/bias-variance.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/main-qimg-b3e1d33876602eafcdcc9c309880a2ec.png" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/main-qimg-b3e1d33876602eafcdcc9c309880a2ec.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/main-qimg-b3e1d33876602eafcdcc9c309880a2ec.webp" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/main-qimg-b3e1d33876602eafcdcc9c309880a2ec.webp" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/skitch.png" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/img/skitch.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/utils.py" "b/4-machine-learning-supervisionado-inter/Aula 4 - Arvores aleat\303\263rias/utils.py" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/abrindo_a_caixa.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/abrindo_a_caixa.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/cars.csv" "b/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/cars.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/comparando_diferentes_modelos_feat_importance.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/comparando_diferentes_modelos_feat_importance.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/comparando_diferentes_modelos_metricas.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/comparando_diferentes_modelos_metricas.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/exercicios.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/exercicios.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/simple_gini_gain_decesion_tree.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/simple_gini_gain_decesion_tree.ipynb" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/winequality.csv" "b/4-machine-learning-supervisionado-inter/Aula 5 - Interpreta\303\247\303\243o dos Modelos BlackBox/winequality.csv" old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/Ensambles_Boosting.ipynb b/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/Ensambles_Boosting.ipynb old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/Ensembles.ipynb b/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/Ensembles.ipynb old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/PracticaGuiada_Ensable_Bagging_diabetes_pt_br.ipynb b/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/PracticaGuiada_Ensable_Bagging_diabetes_pt_br.ipynb old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/Solution_LAB_Ensamble_Bagging_pt_br.ipynb b/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/Solution_LAB_Ensamble_Bagging_pt_br.ipynb old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/__pycache__/utils.cpython-36.pyc b/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/__pycache__/utils.cpython-36.pyc old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/data/default.csv b/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/data/default.csv old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/data/non-linear.p b/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/data/non-linear.p old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/data/regression.p b/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/data/regression.p old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/utils.py b/4-machine-learning-supervisionado-inter/Aula 6 - Ensambles/utils.py old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/HR_comma_sep.csv" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/HR_comma_sep.csv" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/0_RKKb0xdKkkjT4h2__.jpg" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/0_RKKb0xdKkkjT4h2__.jpg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/347a4b535ffd805ffdf332e51905bcdf4764f663.svg" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/347a4b535ffd805ffdf332e51905bcdf4764f663.svg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/derm-roc-v-rocch1.png" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/derm-roc-v-rocch1.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/fig-2-11.gif" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/fig-2-11.gif" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/fig-3-1.gif" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/fig-3-1.gif" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/fig-5-roc-curves-and-precision-recall-pr-curves-for-predicting-secretory-ppis-from.png" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/fig-5-roc-curves-and-precision-recall-pr-curves-for-predicting-secretory-ppis-from.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/fig5.gif" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/fig5.gif" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/image_from_ios.jpg" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/image_from_ios.jpg" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/metrics.png" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/metrics.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/roc-auc.png" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/roc-auc.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/sagemaker-knn-1.gif" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/sagemaker-knn-1.gif" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/slide14.png" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/slide14.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/threshold2.png" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/threshold2.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/two-point-roc1.png" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/img/two-point-roc1.png" old mode 100644 new mode 100755 diff --git "a/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/m\303\251tricas.ipynb" "b/4-machine-learning-supervisionado-inter/Aula 7 - m\303\251tricas/m\303\251tricas.ipynb" old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/Skyserver_SQL2_27_2018 6_51_39 PM.csv b/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/Skyserver_SQL2_27_2018 6_51_39 PM.csv old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/exercicios.ipynb b/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/exercicios.ipynb old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/house_pricing_test.csv b/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/house_pricing_test.csv old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/house_pricing_train.csv b/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/house_pricing_train.csv old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/titanic.csv b/4-machine-learning-supervisionado-inter/Aula 8 - HandsOn/titanic.csv old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 9 - Desbalanceamento/Untitled.ipynb b/4-machine-learning-supervisionado-inter/Aula 9 - Desbalanceamento/Untitled.ipynb old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Aula 9 - Desbalanceamento/target_desbalanceado.ipynb b/4-machine-learning-supervisionado-inter/Aula 9 - Desbalanceamento/target_desbalanceado.ipynb old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Dimensionalidade/maldicao_da_dimensionalidade.ipynb b/4-machine-learning-supervisionado-inter/Dimensionalidade/maldicao_da_dimensionalidade.ipynb old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Naive Bayes e SVM/Naive_Bayes.ipynb b/4-machine-learning-supervisionado-inter/Naive Bayes e SVM/Naive_Bayes.ipynb old mode 100644 new mode 100755 diff --git a/4-machine-learning-supervisionado-inter/Naive Bayes e SVM/SVM.ipynb b/4-machine-learning-supervisionado-inter/Naive Bayes e SVM/SVM.ipynb old mode 100644 new mode 100755 diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Introducci\303\263n a clustering/Presentaci\303\263n/PRESENTACION_Intro_Clustering_pt_br.pptx" "b/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Introducci\303\263n a clustering/Presentaci\303\263n/PRESENTACION_Intro_Clustering_pt_br.pptx" new file mode 100755 index 0000000..c3439a5 Binary files /dev/null and "b/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Introducci\303\263n a clustering/Presentaci\303\263n/PRESENTACION_Intro_Clustering_pt_br.pptx" differ diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Introducci\303\263n a clustering/SCRIPT_Intro_Clustering_pt_br.docx" "b/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Introducci\303\263n a clustering/SCRIPT_Intro_Clustering_pt_br.docx" new file mode 100755 index 0000000..c8abad7 Binary files /dev/null and "b/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Introducci\303\263n a clustering/SCRIPT_Intro_Clustering_pt_br.docx" differ diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Notebooks/Pr\303\241ctica Guiada/PRACTICA_GUIADA_Intro_Clustering_pt_br.ipynb" "b/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Notebooks/Pr\303\241ctica Guiada/PRACTICA_GUIADA_Intro_Clustering_pt_br.ipynb" old mode 100644 new mode 100755 diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Tunning de cluster/Presentaci\303\263n/PRESENTACION_Tuning_Clusters_pt_br.pptx" "b/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Tunning de cluster/Presentaci\303\263n/PRESENTACION_Tuning_Clusters_pt_br.pptx" new file mode 100755 index 0000000..82aa00e Binary files /dev/null and "b/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Tunning de cluster/Presentaci\303\263n/PRESENTACION_Tuning_Clusters_pt_br.pptx" differ diff --git a/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Tunning de cluster/SCRIPT_Tunning_Clustering_pt_br.docx b/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Tunning de cluster/SCRIPT_Tunning_Clustering_pt_br.docx new file mode 100755 index 0000000..7283caa Binary files /dev/null and b/5-machine-learning-nao-supervisionado/agrupamentos/clustering/Tunning de cluster/SCRIPT_Tunning_Clustering_pt_br.docx differ diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introduccio\314\201n DBSCAN/Notebooks/Pra\314\201ctica Guiada Fran/Pra\314\201cticaGuiada_DBScan_pt_br.ipynb" "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introduccio\314\201n DBSCAN/Notebooks/Pra\314\201ctica Guiada Fran/Pra\314\201cticaGuiada_DBScan_pt_br.ipynb" old mode 100644 new mode 100755 diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introduccio\314\201n al Clustering Jera\314\201rquico/Notebooks/Pr\303\241ctica Guiada/PRACTICA_GUIADA_Intro_Clustering_Jera\314\201rquico_pt_br.ipynb" "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introduccio\314\201n al Clustering Jera\314\201rquico/Notebooks/Pr\303\241ctica Guiada/PRACTICA_GUIADA_Intro_Clustering_Jera\314\201rquico_pt_br.ipynb" old mode 100644 new mode 100755 diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n DBSCAN/Notebooks/Pr\303\241ctica Guiada Fran/Pr\303\241cticaGuiada_DBScan_pt_br.ipynb" "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n DBSCAN/Notebooks/Pr\303\241ctica Guiada Fran/Pr\303\241cticaGuiada_DBScan_pt_br.ipynb" new file mode 100755 index 0000000..dbe45ce --- /dev/null +++ "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n DBSCAN/Notebooks/Pr\303\241ctica Guiada Fran/Pr\303\241cticaGuiada_DBScan_pt_br.ipynb" @@ -0,0 +1,1506 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prática Guiada: DBScan com dados geográficos\n", + "\n", + "Nesta prática, aplicaremos a técnica de DBScan a dados geolocalizados para encontrar zonas de alta densidade comercial de um determinado tipo de comércio em uma cidade.
\n", + "Os dados vêm de um dataset aberto da cidade de Baltimore. É possível encontrar mais informação aqui .
\n", + "\n", + "Para este notebook é importante instalar as bibliotecas:\n", + "1. multiprocessing\n", + "2. geopandas\n", + "3. mplleaflet\n", + "\n", + "## 1- Carregamos bibliotecas e importamos os dados\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import requests\n", + "import json\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import mplleaflet\n", + "from multiprocessing import Pool" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df = pd.read_csv('Restaurants.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namezipCodeneighborhoodcouncilDistrictpoliceDistrictLocation 1
041021206Frankford2NORTHEASTERN4509 BELAIR ROAD\\nBaltimore, MD\\n
1191921231Fells Point1SOUTHEASTERN1919 FLEET ST\\nBaltimore, MD\\n
2SAUTE21224Canton1SOUTHEASTERN2844 HUDSON ST\\nBaltimore, MD\\n
3#1 CHINESE KITCHEN21211Hampden14NORTHERN3998 ROLAND AVE\\nBaltimore, MD\\n
4#1 chinese restaurant21223Millhill9SOUTHWESTERN2481 frederick ave\\nBaltimore, MD\\n
\n", + "
" + ], + "text/plain": [ + " name zipCode neighborhood councilDistrict \\\n", + "0 410 21206 Frankford 2 \n", + "1 1919 21231 Fells Point 1 \n", + "2 SAUTE 21224 Canton 1 \n", + "3 #1 CHINESE KITCHEN 21211 Hampden 14 \n", + "4 #1 chinese restaurant 21223 Millhill 9 \n", + "\n", + " policeDistrict Location 1 \n", + "0 NORTHEASTERN 4509 BELAIR ROAD\\nBaltimore, MD\\n \n", + "1 SOUTHEASTERN 1919 FLEET ST\\nBaltimore, MD\\n \n", + "2 SOUTHEASTERN 2844 HUDSON ST\\nBaltimore, MD\\n \n", + "3 NORTHERN 3998 ROLAND AVE\\nBaltimore, MD\\n \n", + "4 SOUTHWESTERN 2481 frederick ave\\nBaltimore, MD\\n " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Limpamos o endereço\n", + "df['address'] = df['Location 1'].str.replace('\\n',' ')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namezipCodeneighborhoodcouncilDistrictpoliceDistrictLocation 1address
041021206Frankford2NORTHEASTERN4509 BELAIR ROAD\\nBaltimore, MD\\n4509 BELAIR ROAD Baltimore, MD
1191921231Fells Point1SOUTHEASTERN1919 FLEET ST\\nBaltimore, MD\\n1919 FLEET ST Baltimore, MD
2SAUTE21224Canton1SOUTHEASTERN2844 HUDSON ST\\nBaltimore, MD\\n2844 HUDSON ST Baltimore, MD
3#1 CHINESE KITCHEN21211Hampden14NORTHERN3998 ROLAND AVE\\nBaltimore, MD\\n3998 ROLAND AVE Baltimore, MD
4#1 chinese restaurant21223Millhill9SOUTHWESTERN2481 frederick ave\\nBaltimore, MD\\n2481 frederick ave Baltimore, MD
\n", + "
" + ], + "text/plain": [ + " name zipCode neighborhood councilDistrict \\\n", + "0 410 21206 Frankford 2 \n", + "1 1919 21231 Fells Point 1 \n", + "2 SAUTE 21224 Canton 1 \n", + "3 #1 CHINESE KITCHEN 21211 Hampden 14 \n", + "4 #1 chinese restaurant 21223 Millhill 9 \n", + "\n", + " policeDistrict Location 1 \\\n", + "0 NORTHEASTERN 4509 BELAIR ROAD\\nBaltimore, MD\\n \n", + "1 SOUTHEASTERN 1919 FLEET ST\\nBaltimore, MD\\n \n", + "2 SOUTHEASTERN 2844 HUDSON ST\\nBaltimore, MD\\n \n", + "3 NORTHERN 3998 ROLAND AVE\\nBaltimore, MD\\n \n", + "4 SOUTHWESTERN 2481 frederick ave\\nBaltimore, MD\\n \n", + "\n", + " address \n", + "0 4509 BELAIR ROAD Baltimore, MD \n", + "1 1919 FLEET ST Baltimore, MD \n", + "2 2844 HUDSON ST Baltimore, MD \n", + "3 3998 ROLAND AVE Baltimore, MD \n", + "4 2481 frederick ave Baltimore, MD " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2 - Geolocalizar os dados\n", + "\n", + "Para poder aplicar DBScan precisamos da latitude e longitude de cada estabelecimento.
\n", + "O processo de obter esses dados a partir de um endereço se denomina geocoding. O Googlemaps tem um serviço freemium de geocoding através de sua API. A senha pode ser obtida aqui com sua identidade do google." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "my_key = 'AIzaSyA0UeUFFchUSdPA0uJR_IPeMmtPNmKplk4'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 - Paralelizar o consumo da API\n", + "\n", + "O Python permite paralelizar a execução de tarefas que consomem muito tempo. Para esto, usamos a classe Pool da biblioteca multiprocessing.\n", + "\n", + "Primeiro definimos as funções que serão utilizadas." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def geocodificar(my_id):\n", + " \"\"\"Retorna um dicionário com latitude e longitude a partir de um id do dataset de restaurantes\"\"\"\n", + " try:\n", + " addr = df.address[my_id]\n", + " url = \"https://maps.googleapis.com/maps/api/geocode/json?address=\" + addr + \"&key=AIzaSyBvBdD5U6nCzy-bnX6SVNy2VWj9aISOdz4\"\n", + " response = requests.get(url)\n", + " data = json.loads(response.text)\n", + " return{'lat':data[\"results\"][0].get(\"geometry\").get(\"location\")['lat'],'lon':data[\"results\"][0].get(\"geometry\").get(\"location\")['lng']}\n", + " except:\n", + " return{'lat':np.nan,'lon':np.nan}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para poder paralelizar, construímos uma função que trabalhe com um intervalo de ids do dataframe e geocodifique cada um para retornar uma lista de dicionários." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def processar_intervalo_ids(id_range):\n", + " \"\"\"processar um intervalo de ids e guardar los resultados em um dicionário\"\"\"\n", + " store = []\n", + " for my_id in id_range:\n", + " store.append(geocodificar(my_id))\n", + " return store" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vamos paralelizar a execução em 3 processos. Vejamos os intervalos de ids com que cada um deles deve trabalhar." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "442\n", + "884\n" + ] + } + ], + "source": [ + "cut = len(df)// 3\n", + "print(cut)\n", + "print(cut *2)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Criamos uma lista de intervalos\n", + "ranges = [range(0,442),range(442,884), range(884,len(df))]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "pool = Pool(processes=3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Executamos de forma paralela\n", + "results = pool.map(processar_intervalo_ids, ranges)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Unimos os resultados dos 3 processos em uma única lista\n", + "results_final = results[0] + results[1] + results[2]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Eliminamos os resultados que tiveram erros\n", + "results_final = [res for res in results_final if isinstance(res,dict)]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Guardamos um DataFrame com a latitude e a longitude de cada estabelecimento\n", + "bares = pd.DataFrame(results_final).dropna()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bares.to_csv('bares.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bares = pd.read_csv('bares.csv')[['lat','lon']]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
latlon
039.330489-76.562022
139.284518-76.589430
239.282420-76.575708
339.337072-76.633356
439.282212-76.656208
\n", + "
" + ], + "text/plain": [ + " lat lon\n", + "0 39.330489 -76.562022\n", + "1 39.284518 -76.589430\n", + "2 39.282420 -76.575708\n", + "3 39.337072 -76.633356\n", + "4 39.282212 -76.656208" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bares.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3- Visualizar os dados gerados\n", + "\n", + "Para visualizar os dados gerados, vamos criar um GeoDataFrame usando a biblioteca geopandas e vamos mostrá-lo em um mapa interativo usando mplleaflet." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from geopandas import GeoDataFrame\n", + "from shapely.geometry import Point\n", + "\n", + "geometry = [Point(xy) for xy in zip(bares.lon, bares.lat)]\n", + "crs = {'init': 'epsg:4326'}\n", + "gdf = GeoDataFrame(crs=crs, geometry=geometry)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "% matplotlib inline\n", + "import shapely\n", + "import matplotlib.pyplot as plt\n", + "ax1 = gdf.plot()\n", + "ax1.set_xlim([-76.75, -76.5])\n", + "ax1.set_ylim([39.2, 39.375])\n", + "fig = plt.gcf()\n", + "fig.set_size_inches(20, 20)\n", + "mplleaflet.display()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## 4 - Pré-processamento dos dados geográficos\n", + "\n", + "Até agora temos a posição relativa dos bares expressa em graus de latitude e longitude.\n", + "\n", + "Para que os parâmetros do clustering DBScan façam mais sentido é possível transformar as medidas de latitude e longitude para um aproximado dos metros que representam em relação ao centro dos dados. Enquanto um grau de latitude sempre representa a mesma distância, um grau de longitude só é equivalente a um de latitude, em metros, na zona do equador. Portanto, é necessário fazer um ajuste para nos adaptar à zona de estudo.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Primeiro, centralizamos os dados\n", + "bares['lat_center'] = bares['lat'] - np.mean(bares['lat']) \n", + "bares['lon_center'] = bares['lon'] - np.mean(bares['lon']) " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
latlonlat_centerlon_center
039.330489-76.5620220.0340820.044523
139.284518-76.589430-0.0118890.017115
239.282420-76.575708-0.0139880.030837
339.337072-76.6333560.040665-0.026812
439.282212-76.656208-0.014196-0.049663
\n", + "
" + ], + "text/plain": [ + " lat lon lat_center lon_center\n", + "0 39.330489 -76.562022 0.034082 0.044523\n", + "1 39.284518 -76.589430 -0.011889 0.017115\n", + "2 39.282420 -76.575708 -0.013988 0.030837\n", + "3 39.337072 -76.633356 0.040665 -0.026812\n", + "4 39.282212 -76.656208 -0.014196 -0.049663" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bares.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Agora, funções para passar aproximadamente de graus a metros" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def lat_a_metros(x):\n", + " \"\"\"Latitude: 1 deg = 110.54 km\"\"\"\n", + " return x*110540\n", + "\n", + "def lon_a_metros(x,cos_mean_lat):\n", + " \"\"\"Longitude: 1 deg = 111.320*cos(latitude) km\"\"\"\n", + " return x*111320*cos_mean_lat\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.773879922828\n" + ] + } + ], + "source": [ + "cos_m_lat = np.cos(np.deg2rad(np.mean(bares['lat'])))\n", + "print(cos_m_lat)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Na cidade de Baltimore, cada milésimo de grau de longitude equivale a uma distância de 0,77 milésimos de grau de latitude.\n", + "Usamos esta medida de ajuste para calcular uma medida que sirva para avaliar distâncias em metros." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bares['lat_metros'] = bares['lat_center'].apply(lambda x: round(lat_a_metros(x)))" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bares['lon_metros'] = bares['lon_center'].apply(lambda x: round(lon_a_metros(x,cos_m_lat)))" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
latlonlat_centerlon_centerlat_metroslon_metros
039.330489-76.5620220.0340820.04452337673836.0
139.284518-76.589430-0.0118890.017115-13141474.0
239.282420-76.575708-0.0139880.030837-15462657.0
339.337072-76.6333560.040665-0.0268124495-2310.0
439.282212-76.656208-0.014196-0.049663-1569-4278.0
\n", + "
" + ], + "text/plain": [ + " lat lon lat_center lon_center lat_metros lon_metros\n", + "0 39.330489 -76.562022 0.034082 0.044523 3767 3836.0\n", + "1 39.284518 -76.589430 -0.011889 0.017115 -1314 1474.0\n", + "2 39.282420 -76.575708 -0.013988 0.030837 -1546 2657.0\n", + "3 39.337072 -76.633356 0.040665 -0.026812 4495 -2310.0\n", + "4 39.282212 -76.656208 -0.014196 -0.049663 -1569 -4278.0" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bares.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5- DBScan\n", + "\n", + "Agora podemos pesquisar as zonas de alta densidade de restaurantes a partir de alguma definição de negócio. Por exemplo, podemos propor que há uma zona de alta densidade quando 5 restaurantes estão localizados em um raio de menos de 100 metros. " + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Zona de restaurantes: Pelo menos 5 restaurantes em um raio de 100 metros" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from sklearn.cluster import DBSCAN, KMeans\n", + "dbscn = DBSCAN(eps = 100, min_samples = 5).fit(bares[['lat_metros','lon_metros']])" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DBSCAN(algorithm='auto', eps=100, leaf_size=30, metric='euclidean',\n", + " metric_params=None, min_samples=5, n_jobs=1, p=None)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dbscn" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "labels = dbscn.labels_" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "46" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n_clusters_" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Com estes parâmetros encontramos 46 zonas de restaurantes na cidade para analisar. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.1 - Visualizar os resultados\n", + "\n", + "Agora vejamos as zonas obtidas no mapa." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "bares['labels'] = labels" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "clusters = bares.loc[bares['labels']!=-1].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
latlonlat_centerlon_centerlat_metroslon_metroslabels
139.284518-76.589430-0.0118890.017115-13141474.00
16239.285668-76.587383-0.0107390.019162-11871651.00
17539.285943-76.588645-0.0104650.017899-11571542.00
116839.284848-76.590342-0.0115590.016203-12781396.00
114339.283517-76.589438-0.0128910.017107-14251474.00
2439.284548-76.588882-0.0118600.017663-13111522.00
25439.285943-76.588645-0.0104650.017899-11571542.00
29739.285605-76.588610-0.0108030.017935-11941545.00
93539.283854-76.589788-0.0125540.016757-13881444.00
32239.284241-76.588832-0.0121670.017713-13451526.00
49539.284376-76.590224-0.0120310.016320-13301406.00
69139.284927-76.588861-0.0114810.017684-12691523.00
50139.286003-76.587806-0.0104050.018739-11501614.00
53539.284516-76.589310-0.0118910.017235-13141485.00
17639.287216-76.556723-0.0091920.049821-10164292.01
67639.286848-76.555499-0.0095600.051046-10574398.01
63639.286879-76.556205-0.0095290.050340-10534337.01
10839.286821-76.556097-0.0095870.050448-10604346.01
80039.286924-76.555162-0.0094830.051383-10484427.01
88739.286841-76.555603-0.0095670.050942-10574389.01
\n", + "
" + ], + "text/plain": [ + " lat lon lat_center lon_center lat_metros lon_metros \\\n", + "1 39.284518 -76.589430 -0.011889 0.017115 -1314 1474.0 \n", + "162 39.285668 -76.587383 -0.010739 0.019162 -1187 1651.0 \n", + "175 39.285943 -76.588645 -0.010465 0.017899 -1157 1542.0 \n", + "1168 39.284848 -76.590342 -0.011559 0.016203 -1278 1396.0 \n", + "1143 39.283517 -76.589438 -0.012891 0.017107 -1425 1474.0 \n", + "24 39.284548 -76.588882 -0.011860 0.017663 -1311 1522.0 \n", + "254 39.285943 -76.588645 -0.010465 0.017899 -1157 1542.0 \n", + "297 39.285605 -76.588610 -0.010803 0.017935 -1194 1545.0 \n", + "935 39.283854 -76.589788 -0.012554 0.016757 -1388 1444.0 \n", + "322 39.284241 -76.588832 -0.012167 0.017713 -1345 1526.0 \n", + "495 39.284376 -76.590224 -0.012031 0.016320 -1330 1406.0 \n", + "691 39.284927 -76.588861 -0.011481 0.017684 -1269 1523.0 \n", + "501 39.286003 -76.587806 -0.010405 0.018739 -1150 1614.0 \n", + "535 39.284516 -76.589310 -0.011891 0.017235 -1314 1485.0 \n", + "176 39.287216 -76.556723 -0.009192 0.049821 -1016 4292.0 \n", + "676 39.286848 -76.555499 -0.009560 0.051046 -1057 4398.0 \n", + "636 39.286879 -76.556205 -0.009529 0.050340 -1053 4337.0 \n", + "108 39.286821 -76.556097 -0.009587 0.050448 -1060 4346.0 \n", + "800 39.286924 -76.555162 -0.009483 0.051383 -1048 4427.0 \n", + "887 39.286841 -76.555603 -0.009567 0.050942 -1057 4389.0 \n", + "\n", + " labels \n", + "1 0 \n", + "162 0 \n", + "175 0 \n", + "1168 0 \n", + "1143 0 \n", + "24 0 \n", + "254 0 \n", + "297 0 \n", + "935 0 \n", + "322 0 \n", + "495 0 \n", + "691 0 \n", + "501 0 \n", + "535 0 \n", + "176 1 \n", + "676 1 \n", + "636 1 \n", + "108 1 \n", + "800 1 \n", + "887 1 " + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "clusters.sort_values('labels').head(20)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Depois, montamos outro GeoDataFrame que contenha as posições e labels dos restaurantes que foram atribuídos a algum cluster." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "geometry = [Point(xy) for xy in zip(clusters.lon, clusters.lat)]\n", + "crs = {'init': 'epsg:4326'}\n", + "gdf = GeoDataFrame(clusters[['labels']],crs=crs, geometry=geometry)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
labelsgeometry
10POINT (-76.58942990000001 39.284518)
1431POINT (-76.6116007 39.2894404)
171POINT (-76.5560291 39.287256)
1822POINT (-76.59478399999998 39.300073)
212POINT (-76.61544169999998 39.2993421)
\n", + "
" + ], + "text/plain": [ + " labels geometry\n", + "1 0 POINT (-76.58942990000001 39.284518)\n", + "14 31 POINT (-76.6116007 39.2894404)\n", + "17 1 POINT (-76.5560291 39.287256)\n", + "18 22 POINT (-76.59478399999998 39.300073)\n", + "21 2 POINT (-76.61544169999998 39.2993421)" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf.plot(column='labels', cmap='Paired');\n", + "fig = plt.gcf()\n", + "fig.set_size_inches(20, 20)\n", + "mplleaflet.display()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Conclusão: Nas zonas periféricas os clusters são bem definidos. Nas zonas centrais, os clusters se confundem um pouco. Lembrem-se que o DBScan é sensível à diferença geral de densidade entre as zonas. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n DBSCAN/PRESENTACION_Introduccion_DBSCAN_EDITABLE_pt_br.pptx" "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n DBSCAN/PRESENTACION_Introduccion_DBSCAN_EDITABLE_pt_br.pptx" new file mode 100755 index 0000000..e7b0992 Binary files /dev/null and "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n DBSCAN/PRESENTACION_Introduccion_DBSCAN_EDITABLE_pt_br.pptx" differ diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n DBSCAN/SCRIPT_Introducci\303\263n_DBSCAN_pt_br.docx" "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n DBSCAN/SCRIPT_Introducci\303\263n_DBSCAN_pt_br.docx" new file mode 100755 index 0000000..e00e499 Binary files /dev/null and "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n DBSCAN/SCRIPT_Introducci\303\263n_DBSCAN_pt_br.docx" differ diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n al Clustering Jer\303\241rquico/Notebooks/Pr\303\241ctica Guiada/PRACTICA_GUIADA_Intro_Clustering_Jer\303\241rquico_pt_br.ipynb" "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n al Clustering Jer\303\241rquico/Notebooks/Pr\303\241ctica Guiada/PRACTICA_GUIADA_Intro_Clustering_Jer\303\241rquico_pt_br.ipynb" new file mode 100755 index 0000000..7801e46 --- /dev/null +++ "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n al Clustering Jer\303\241rquico/Notebooks/Pr\303\241ctica Guiada/PRACTICA_GUIADA_Intro_Clustering_Jer\303\241rquico_pt_br.ipynb" @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"PRACTICA_GUIADA_Intro_Clustering_Jerárquico_pt_br.ipynb","version":"0.3.2","views":{},"default_view":{},"provenance":[]},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"cells":[{"metadata":{"id":"Kb35a1tZ3o7P","colab_type":"text"},"cell_type":"markdown","source":["# PRÁTICA GUIADA: Clustering hierárquico"]},{"metadata":{"id":"VHxs1LRw3o7R","colab_type":"text"},"cell_type":"markdown","source":["## 1. Introdução\n","\n","Implementar um clustering hierárquico em Python é tão simples quanto invocar uma função do pacote SciPy.\n","\n","```python\n","from scipy.cluster.hierarchy import linkage\n","Z = linkage(X, 'ward')\n","```\n","\n","Aqui, `X` é a matriz de dados com a que trabalhamos, e `'ward'` define o método para calcular a distância entre os clusters. Nesse caso, usamos a distância de Ward (minimiza a diferença da soma quadrática das distâncias entre os clusters). Ao calcular a métrica específica de distância, o método implementa por padrão a distância euclideana.\n","\n","Depois de estimar os clusters, teremos que calcular o dendrograma usando a função `dendrogram()` de SciPy e fazer a representação gráfica com base em `plt` de `matplotlib`."]},{"metadata":{"id":"-D-wDvFb3o7S","colab_type":"text"},"cell_type":"markdown","source":["Para avaliar o grau de eficiência do algoritmo que mediu a distância, podemos calcular o coeficiente de correlação de copehenic. Essa métrica quantifica a correlação entre as distâncias originais dos pontos e as distâncias entre os pontos (as alturas do dendrograma no ponto em que os dois ramos se unem), e também permite avaliar se o clustering funcionou bem.\n","\n","```python\n","c, coph_dists = cophenet(Z, pdist(X))\n","```\n","É possível invocar a função que calcula o coeficiente a partir de SciPy e aplicá-la ao conjunto clusterizado (`Z`) e à distância do conjunto original (`X`). "]},{"metadata":{"id":"vCnMI7uH3o7T","colab_type":"text"},"cell_type":"markdown","source":["### Outros recursos"]},{"metadata":{"id":"ul95CKXM3o7T","colab_type":"text"},"cell_type":"markdown","source":["* [Documentação de SciPy para análise de clustering](http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.cluster.hierarchy.linkage.html)\n","* [O que é uma análise de clustering hierárquico?](http://www.saedsayad.com/clustering_hierarchical.htm)"]},{"metadata":{"id":"KVhnEq4T3o7V","colab_type":"text"},"cell_type":"markdown","source":["## 2. Preparar a análise e trabalhar com os dados"]},{"metadata":{"id":"3RXm47jh3o7W","colab_type":"text"},"cell_type":"markdown","source":["Vamos trabalhar sobre um conjunto de dados que detalha as habilidades de idiomas de diferentes países europeus. Vamos fazer uma análise de cluster hierárquico nesse conjunto de dados."]},{"metadata":{"id":"q3WkpSjW3o7Y","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["from matplotlib import pyplot as plt\n","from scipy.cluster.hierarchy import dendrogram, linkage, cophenet\n","from scipy.spatial.distance import pdist\n","import numpy as np\n","import pandas as pd\n","import os\n","from scipy.cluster.hierarchy import fcluster, cophenet\n","import matplotlib\n","%matplotlib inline"],"execution_count":0,"outputs":[]},{"metadata":{"id":"ojODrkZ-3o7c","colab_type":"text"},"cell_type":"markdown","source":["Vamos usar SciPy para a análise. Já conhecemos bem o conjunto de dados, então podemos passar direto para a análise dos dados..."]},{"metadata":{"id":"Qyb5Lyd23o7e","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}},"outputId":"d5a5f0fd-286a-442c-d131-74ba8a45e3fa"},"cell_type":"code","source":["from sklearn import datasets\n","data = datasets.load_iris(return_X_y=False)\n","data.keys()"],"execution_count":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":["dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names'])"]},"metadata":{"tags":[]},"execution_count":2}]},{"metadata":{"id":"46S_iuac3o7k","colab_type":"text"},"cell_type":"markdown","source":["Extraímos os dados para uma matriz para poder passá-los ao algoritmo de clustering. Com o formato matriz (ou np.array), é mais fácil para o algoritmo calcular as distâncias."]},{"metadata":{"id":"ssMLlM8h3o7m","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}},"outputId":"2c6dd4c9-ff91-48d9-aa7c-7c693ce12fcd"},"cell_type":"code","source":["X = data.data\n","type(X)"],"execution_count":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":["numpy.ndarray"]},"metadata":{"tags":[]},"execution_count":3}]},{"metadata":{"id":"rMCQzItq3o7s","colab_type":"text"},"cell_type":"markdown","source":["## 3. Calcular clusters"]},{"metadata":{"id":"oaaHJG1W3o7t","colab_type":"text"},"cell_type":"markdown","source":["Implementamos o algoritmo de clustering hierárquico usando o método de `ward`"]},{"metadata":{"id":"VPqgmpIg3o7u","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["Z = linkage(X, 'ward')"],"execution_count":0,"outputs":[]},{"metadata":{"id":"JBV6qN653o7y","colab_type":"text"},"cell_type":"markdown","source":["Agora, calculamos o coeficiente de correlação de cophenetic para avaliar a eficiência do cálculo das medidas de distância entre os pontos."]},{"metadata":{"id":"Nz0k-hHV3o7z","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}},"outputId":"fd4607a7-0c59-4594-deee-bab37d03ef11"},"cell_type":"code","source":["c, coph_dists = cophenet(Z, pdist(X))\n","c"],"execution_count":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0.87260152506447042"]},"metadata":{"tags":[]},"execution_count":5}]},{"metadata":{"id":"yPFz4fig3o75","colab_type":"text"},"cell_type":"markdown","source":["O “C” deveria ser ao redor de 0.87, o que implica que as distâncias entre os clusters estão bastante correlacionadas às distâncias originais dos dados. Ou seja, o clustering parece preservar bastante a estrutura de distâncias dos dados originais.\n","\n","Vamos traçar um dendrograma. Para fazer isso, é necessário invocar o dendrograma a partir de `scipy.cluster.hierarchy`, passar os links como inputs e fazer uma rotação das tags para que possamos ver o gráfico de forma um pouco mais organizada. Podemos traçar o dendrograma com `pyplot` de `matplotlib`\n"]},{"metadata":{"id":"3fHiqist3o76","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}},"outputId":"972ee1fd-0936-4d69-e17b-500a5fdf77e1"},"cell_type":"code","source":["plt.figure(figsize=[7,7])\n","plt.title('Dendrogram')\n","plt.xlabel('Index Numbers')\n","plt.ylabel('Distance')\n","dendrogram(\n"," Z,\n"," leaf_rotation=90., \n"," leaf_font_size=5.,\n",")\n","plt.show()"],"execution_count":0,"outputs":[{"output_type":"display_data","data":{"image/png":"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\nSUVORK5CYII=\n","text/plain":[""]},"metadata":{"tags":[]}}]},{"metadata":{"id":"S0rOcLmr3o7_","colab_type":"text"},"cell_type":"markdown","source":["O próximo passo é definir os clusters. Existem muitas formas de automatizar esse processo, mas uma boa possibilidade é estimar os clusters (a quantidade) através de uma análise visual do dendrograma. Além disso, isso ajudará a entender a lógica e a estrutura por trás desse tipo de gráficos.\n","\n","Contudo, como geramos os clusters no fim das contas?\n","\n","1. definimos a quantidade de clusters que vamos usar (inspecionando o dendrograma)\n","2. usamos a função `fcluster` da biblioteca `scipy.cluster.hierarchy` que retorna um array com o pertencimento de cada observação a um cluster.\n","\n","Onde vocês definiriam o número ideal de clusters nesse dendrograma?"]},{"metadata":{"id":"M6SDkYs43o8A","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}},"outputId":"980d56db-d04a-433b-85eb-0c97d2a2cdb6"},"cell_type":"code","source":["max_dist = 7.5\n","clusters = fcluster(Z, max_dist, criterion='distance')\n","clusters"],"execution_count":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n"," 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n"," 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n"," 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n"," 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 3, 3,\n"," 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 2, 3, 3, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2,\n"," 3, 2, 2, 2, 3, 2, 2, 2, 3, 2, 2, 3], dtype=int32)"]},"metadata":{"tags":[]},"execution_count":7}]},{"metadata":{"id":"wu2tP0ZL3o8F","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}},"outputId":"3ad8ee03-648a-4a28-fc3c-4b00ed1a6db0"},"cell_type":"code","source":["plt.scatter(X[:,0], X[:,1], c=clusters)\n","plt.show"],"execution_count":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":8},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":[""]},"metadata":{"tags":[]}}]},{"metadata":{"id":"GgJet29a3o8M","colab_type":"text"},"cell_type":"markdown","source":["Contudo, neste caso, podemos ver que não existe um agrupamento a uma distância maior de aproximadamente 35. O que acontece se definimos a distância máxima nesse ponto?"]},{"metadata":{"id":"BgDRT5en3o8N","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}},"outputId":"97f9364d-d1fa-48e1-aba9-fe1afab64428"},"cell_type":"code","source":["max_dist = 35\n","clusters = fcluster(Z, max_dist, criterion='distance')\n","clusters"],"execution_count":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n"," 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n"," 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n"," 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n"," 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n"," 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n"," 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)"]},"metadata":{"tags":[]},"execution_count":9}]},{"metadata":{"id":"FxLW2Y2o3o8X","colab_type":"text"},"cell_type":"markdown","source":["Por último, vamos a realizar un gráfico de las clusters..."]},{"metadata":{"id":"ivG6FDos3o8Y","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}},"outputId":"359ae402-407d-4e1a-ccf1-3d0977d7990d"},"cell_type":"code","source":["plt.scatter(X[:,0], X[:,1], c=clusters)\n","plt.show"],"execution_count":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":10},{"output_type":"display_data","data":{"image/png":"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\nAAAAAElFTkSuQmCC\n","text/plain":[""]},"metadata":{"tags":[]}}]},{"metadata":{"id":"pe5NE9Eo3o8c","colab_type":"text"},"cell_type":"markdown","source":["Para terminar, vamos ver o que acontece se alteramos o método de geração dos clusters. Vamos testar os seguintes linkages:\n","\n","- ward\n","- average\n","- complete\n","- single"]},{"metadata":{"id":"VWEMEvn43o8d","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":["def eval_clusters_linkage(X, link_method):\n"," L = linkage(X, link_method)\n"," c, coph_dists = cophenet(L, pdist(X))\n"," print(link_method, c)\n"," plt.figure(figsize=[6,6])\n"," plt.title('Dendrogram - Method: ' + link_method.title())\n"," plt.xlabel('Index Numbers')\n"," plt.ylabel('Distance')\n"," dendrogram(L, leaf_rotation=90., leaf_font_size=5.)"],"execution_count":0,"outputs":[]},{"metadata":{"id":"V09GhJJD3o8i","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}},"outputId":"8a18c54c-94b4-476b-ee24-1bb81bd0851c"},"cell_type":"code","source":["for i in ['ward','single','average','complete']:\n"," eval_clusters_linkage(X, i)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["ward 0.872601525064\n","single 0.86357244036\n","average 0.876696652921\n","complete 0.727170309992\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\nRU5ErkJggg==\n","text/plain":[""]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"image/png":"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\nKzkomJlZ6f8DNDkJ91qAPkgAAAAASUVORK5CYII=\n","text/plain":[""]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":[""]},"metadata":{"tags":[]}},{"output_type":"display_data","data":{"image/png":"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\nFvAlbQ4cCBwNEBGrgFVVpWdmZp1V2aWzC7AC+K6k30r6D0mbVJiemZl1UGXAXw/4I+DfI2If4BHg\nI80zSZov6QpJV6xYsaLC7JiZ1VuVAX8psDQifpPf/5BUATxNRAxFxNyImDtr1qwKs2NmVm+VBfyI\nWA7cIekF+aNDgGuqSs/MzDqrepTO+4Dv5xE6NwPvqjg9MzNro9KAHxEjwNwq0zAzs3J8p62ZWU04\n4JuZ1YQDvplZTTjgm5nVhAO+mVlNOOCbmdWEA76ZWU044JuZ1YQDvplZTTjgm5nVhAO+mVlNOOCb\nmdWEA76ZWU044JuZ1YQDvplZTTjgm5nVhAO+mVlNOOCbmdWEA76ZWU044JuZ1YQDvplZTTjgm5nV\nhAO+mVlNOOCbmdWEA76ZWU044JuZ1YQDvplZTTjgm5nVhAO+mVlNOOCbmdWEA76ZWU044JuZ1YQD\nvplZTTjgm5nVhAO+mVlNrFflwiXdCjwErAFWR8TcKtMzM7P2Kg342asj4t5JSMfMzDpwl46ZWU1U\nHfADOE/SIknzK07LzMw6qLpL54CIWCZpW+DnkpZExIXFGXJFMB9gzpw5FWfHzKy+Km3hR8Sy/P8e\n4AxgvxbzDEXE3IiYO2vWrCqzY2ZWa5UFfEmbSNqs8Rp4HXB1VemZmVlnVXbpbAecIamRznBEnFth\nemZm1kFlAT8ibgb2rmr5ZmY2Nh6WaWZWEw74ZmY14YBvZlYTDvhmZjXhgG9mVhMO+GZmNeGAb2ZW\nEw74ZmY14YBvZlYTDvhmZjXhgG9mVhMO+GZmNeGAb2ZWEw74ZmY14YBvZlYTDvhmZjXhgG9mVhMO\n+GZmNeGAb2ZWEw74ZmY14YBvZlYTDvhmZjXhgG9mVhMO+GZmNeGAb2ZWEw74ZmY14YBvZlYTDvhm\nZjXhgG9mVhMO+GZmNeGAb2ZWE6UDvqTnSnpNfr2RpM2qy5aZmXVbqYAv6a+AHwLfyh89BzizqkyZ\nmVn3lW3h/x1wAPAgQETcAGxbVabMzKz7ygb8JyJiVeONpPWAqCZLZmZWhbIB/wJJxwEbSXotcDrw\n4zJflDRD0m8l/WS8mTQzs4krG/A/AqwAFgPHAD8FPl7yux8Arh171szMrJvWKznfRsB3IuLbkFrt\n+bNHO31J0nOANwInAB+cQD7N+s/QEAwP9zoXEzNyYvo/eGxv89EN8+bB/Pm9zkVfK9vC/yUpwDds\n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\n","text/plain":[""]},"metadata":{"tags":[]}}]},{"metadata":{"id":"E16Pj9nx3o8n","colab_type":"code","colab":{"autoexec":{"startup":false,"wait_interval":0}}},"cell_type":"code","source":[""],"execution_count":0,"outputs":[]}]} \ No newline at end of file diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n al Clustering Jer\303\241rquico/PRESENTACION_Introduccion_Clustering_Jer\303\241rquico_pt_br.pptx" "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n al Clustering Jer\303\241rquico/PRESENTACION_Introduccion_Clustering_Jer\303\241rquico_pt_br.pptx" new file mode 100755 index 0000000..1588779 Binary files /dev/null and "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n al Clustering Jer\303\241rquico/PRESENTACION_Introduccion_Clustering_Jer\303\241rquico_pt_br.pptx" differ diff --git "a/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n al Clustering Jer\303\241rquico/SCRIPT_Introducci\303\263n_Clustering_Jer\303\241rquico_pt_br.docx" "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n al Clustering Jer\303\241rquico/SCRIPT_Introducci\303\263n_Clustering_Jer\303\241rquico_pt_br.docx" new file mode 100755 index 0000000..04dd7ce Binary files /dev/null and "b/5-machine-learning-nao-supervisionado/agrupamentos/hierarquivo e dbscan/Introducci\303\263n al Clustering Jer\303\241rquico/SCRIPT_Introducci\303\263n_Clustering_Jer\303\241rquico_pt_br.docx" differ diff --git a/6-dados/api/consultando APIs/APIs.pptx b/6-dados/api/consultando APIs/APIs.pptx new file mode 100755 index 0000000..c9cfda3 Binary files /dev/null and b/6-dados/api/consultando APIs/APIs.pptx differ diff --git a/6-dados/api/consultando APIs/apis.ipynb b/6-dados/api/consultando APIs/apis.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/api/consultando APIs/imdb_list.csv b/6-dados/api/consultando APIs/imdb_list.csv old mode 100644 new mode 100755 diff --git a/6-dados/api/criando APIs/criando_modelo_ml.ipynb b/6-dados/api/criando APIs/criando_modelo_ml.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/api/criando APIs/log.log b/6-dados/api/criando APIs/log.log old mode 100644 new mode 100755 diff --git a/6-dados/api/criando APIs/model.pkl b/6-dados/api/criando APIs/model.pkl old mode 100644 new mode 100755 diff --git a/6-dados/api/criando APIs/requirements.txt b/6-dados/api/criando APIs/requirements.txt old mode 100644 new mode 100755 diff --git a/6-dados/api/criando APIs/train.csv b/6-dados/api/criando APIs/train.csv old mode 100644 new mode 100755 diff --git a/6-dados/api/criando APIs/webservice.ipynb b/6-dados/api/criando APIs/webservice.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/api/criando APIs/webservice.py b/6-dados/api/criando APIs/webservice.py old mode 100644 new mode 100755 diff --git a/6-dados/grafos/Airlines.csv b/6-dados/grafos/Airlines.csv old mode 100644 new mode 100755 diff --git a/6-dados/grafos/basic-network-analysis-tutorial.ipynb b/6-dados/grafos/basic-network-analysis-tutorial.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/grafos/facebook_combined.txt b/6-dados/grafos/facebook_combined.txt old mode 100644 new mode 100755 diff --git a/6-dados/grafos/grafos.ipynb b/6-dados/grafos/grafos.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/grafos/lanl_routes.edgelist b/6-dados/grafos/lanl_routes.edgelist old mode 100644 new mode 100755 diff --git a/6-dados/grafos/lesmiserables.csv b/6-dados/grafos/lesmiserables.csv old mode 100644 new mode 100755 diff --git a/6-dados/grafos/manhatten.graphml.zip b/6-dados/grafos/manhatten.graphml.zip old mode 100644 new mode 100755 diff --git a/6-dados/grafos/napoleao.ipynb b/6-dados/grafos/napoleao.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/grafos/networkx_plotly.ipynb b/6-dados/grafos/networkx_plotly.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/grafos/newyork.graphml.zip b/6-dados/grafos/newyork.graphml.zip old mode 100644 new mode 100755 diff --git a/6-dados/grafos/plot_football.ipynb b/6-dados/grafos/plot_football.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/grafos/plot_roget.ipynb b/6-dados/grafos/plot_roget.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/grafos/roget_dat.txt.gz b/6-dados/grafos/roget_dat.txt.gz old mode 100644 new mode 100755 diff --git a/6-dados/scraping/bs4.ipynb b/6-dados/scraping/bs4.ipynb old mode 100644 new mode 100755 diff --git a/6-dados/scraping/tabela_ex.csv b/6-dados/scraping/tabela_ex.csv old mode 100644 new mode 100755 diff --git a/6-dados/scraping/tabela_ex.xlsx b/6-dados/scraping/tabela_ex.xlsx old mode 100644 new mode 100755 diff --git a/6-dados/scraping/tabla.csv b/6-dados/scraping/tabla.csv old mode 100644 new mode 100755 diff --git a/7-nlp/Aula1/class_1.ipynb b/7-nlp/Aula1/class_1.ipynb old mode 100644 new mode 100755 diff --git a/7-nlp/Aula2/pizza_test.json b/7-nlp/Aula2/pizza_test.json old mode 100644 new mode 100755 diff --git a/7-nlp/Aula2/pizza_train.json b/7-nlp/Aula2/pizza_train.json old mode 100644 new mode 100755 diff --git a/7-nlp/Aula3/resumo.txt b/7-nlp/Aula3/resumo.txt old mode 100644 new mode 100755 diff --git a/7-nlp/readme.md b/7-nlp/readme.md old mode 100644 new mode 100755 diff --git a/8-redes-neurais/resumo.txt b/8-redes-neurais/resumo.txt new file mode 100755 index 0000000..0186c71 --- /dev/null +++ b/8-redes-neurais/resumo.txt @@ -0,0 +1 @@ +resumo \ No newline at end of file diff --git "a/9-sistemas-recomenda\303\247\303\243o/resumo.txt" "b/9-sistemas-recomenda\303\247\303\243o/resumo.txt" new file mode 100755 index 0000000..0186c71 --- /dev/null +++ "b/9-sistemas-recomenda\303\247\303\243o/resumo.txt" @@ -0,0 +1 @@ +resumo \ No newline at end of file diff --git "a/99-miscel\303\242nia/computacao_natural/ComputacaoNatural.pdf" "b/99-miscel\303\242nia/computacao_natural/ComputacaoNatural.pdf" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade1_GA_gabarito.ipynb" "b/99-miscel\303\242nia/computacao_natural/atividade1_GA_gabarito.ipynb" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade2_PSO - Particle Swarm Optimization.ipynb" "b/99-miscel\303\242nia/computacao_natural/atividade2_PSO - Particle Swarm Optimization.ipynb" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/Clonal.ipynb" "b/99-miscel\303\242nia/computacao_natural/atividade3/Clonal.ipynb" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/0.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/0.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/1.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/1.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/2.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/2.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/3.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/3.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/4.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/4.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/6.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/6.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/9.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/9.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/left.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/left.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/period.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/period.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/digits/right.png" "b/99-miscel\303\242nia/computacao_natural/atividade3/digits/right.png" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/h1_evaluation.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/h1_evaluation.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/h2_evaluation.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/h2_evaluation.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/helpers.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/helpers.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/helpers.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/helpers.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__init__.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__init__.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__init__.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__init__.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/__init__.cpython-36.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/__init__.cpython-36.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/affinity.cpython-36.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/affinity.cpython-36.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/antibody.cpython-36.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/antibody.cpython-36.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/antigen.cpython-36.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/antigen.cpython-36.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/clone.cpython-36.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/clone.cpython-36.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/main.cpython-36.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/main.cpython-36.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/mutate.cpython-36.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/__pycache__/mutate.cpython-36.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/affinity.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/affinity.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/affinity.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/affinity.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/antibody.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/antibody.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/antibody.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/antibody.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/antigen.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/antigen.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/antigen.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/antigen.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/clone.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/clone.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/clone.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/clone.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/main.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/main.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/main.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/main.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/mutate.py" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/mutate.py" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/computacao_natural/atividade3/kapa/mutate.pyc" "b/99-miscel\303\242nia/computacao_natural/atividade3/kapa/mutate.pyc" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/git/resumo.txt" "b/99-miscel\303\242nia/git/resumo.txt" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/produ\303\247\303\243o/resumo.txt" "b/99-miscel\303\242nia/produ\303\247\303\243o/resumo.txt" old mode 100644 new mode 100755 diff --git "a/99-miscel\303\242nia/viz/resumo.txt" "b/99-miscel\303\242nia/viz/resumo.txt" old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755