{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loading required package: daltoolbox\n", "\n", "Registered S3 method overwritten by 'quantmod':\n", " method from\n", " as.zoo.data.frame zoo \n", "\n", "\n", "Attaching package: ‘daltoolbox’\n", "\n", "\n", "The following object is masked from ‘package:base’:\n", "\n", " transform\n", "\n", "\n", "Loading required package: ggplot2\n", "\n", "Loading required package: dplyr\n", "\n", "\n", "Attaching package: ‘dplyr’\n", "\n", "\n", "The following objects are masked from ‘package:stats’:\n", "\n", " filter, lag\n", "\n", "\n", "The following objects are masked from ‘package:base’:\n", "\n", " intersect, setdiff, setequal, union\n", "\n", "\n" ] } ], "source": [ "# DAL ToolBox\n", "# version 1.0.777\n", "\n", "source(\"https://raw.githubusercontent.com/cefet-rj-dal/daltoolbox/main/jupyter.R\")\n", "\n", "#loading DAL\n", "load_library(\"daltoolbox\") \n", "\n", "#for ploting\n", "load_library(\"ggplot2\")\n", "load_library(\"dplyr\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 14
X1X14.23X1.71X2.43X15.6X127X2.8X3.06X.28X2.29X5.64X1.04X3.92X1065
<int><dbl><dbl><dbl><dbl><int><dbl><dbl><dbl><dbl><dbl><dbl><dbl><int>
1113.201.782.1411.21002.652.760.261.284.381.053.401050
2113.162.362.6718.61012.803.240.302.815.681.033.171185
3114.371.952.5016.81133.853.490.242.187.800.863.451480
4113.242.592.8721.01182.802.690.391.824.321.042.93 735
5114.201.762.4515.21123.273.390.341.976.751.052.851450
6114.391.872.4514.6 962.502.520.301.985.251.023.581290
\n" ], "text/latex": [ "A data.frame: 6 × 14\n", "\\begin{tabular}{r|llllllllllllll}\n", " & X1 & X14.23 & X1.71 & X2.43 & X15.6 & X127 & X2.8 & X3.06 & X.28 & X2.29 & X5.64 & X1.04 & X3.92 & X1065\\\\\n", " & & & & & & & & & & & & & & \\\\\n", "\\hline\n", "\t1 & 1 & 13.20 & 1.78 & 2.14 & 11.2 & 100 & 2.65 & 2.76 & 0.26 & 1.28 & 4.38 & 1.05 & 3.40 & 1050\\\\\n", "\t2 & 1 & 13.16 & 2.36 & 2.67 & 18.6 & 101 & 2.80 & 3.24 & 0.30 & 2.81 & 5.68 & 1.03 & 3.17 & 1185\\\\\n", "\t3 & 1 & 14.37 & 1.95 & 2.50 & 16.8 & 113 & 3.85 & 3.49 & 0.24 & 2.18 & 7.80 & 0.86 & 3.45 & 1480\\\\\n", "\t4 & 1 & 13.24 & 2.59 & 2.87 & 21.0 & 118 & 2.80 & 2.69 & 0.39 & 1.82 & 4.32 & 1.04 & 2.93 & 735\\\\\n", "\t5 & 1 & 14.20 & 1.76 & 2.45 & 15.2 & 112 & 3.27 & 3.39 & 0.34 & 1.97 & 6.75 & 1.05 & 2.85 & 1450\\\\\n", "\t6 & 1 & 14.39 & 1.87 & 2.45 & 14.6 & 96 & 2.50 & 2.52 & 0.30 & 1.98 & 5.25 & 1.02 & 3.58 & 1290\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 14\n", "\n", "| | X1 <int> | X14.23 <dbl> | X1.71 <dbl> | X2.43 <dbl> | X15.6 <dbl> | X127 <int> | X2.8 <dbl> | X3.06 <dbl> | X.28 <dbl> | X2.29 <dbl> | X5.64 <dbl> | X1.04 <dbl> | X3.92 <dbl> | X1065 <int> |\n", "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", "| 1 | 1 | 13.20 | 1.78 | 2.14 | 11.2 | 100 | 2.65 | 2.76 | 0.26 | 1.28 | 4.38 | 1.05 | 3.40 | 1050 |\n", "| 2 | 1 | 13.16 | 2.36 | 2.67 | 18.6 | 101 | 2.80 | 3.24 | 0.30 | 2.81 | 5.68 | 1.03 | 3.17 | 1185 |\n", "| 3 | 1 | 14.37 | 1.95 | 2.50 | 16.8 | 113 | 3.85 | 3.49 | 0.24 | 2.18 | 7.80 | 0.86 | 3.45 | 1480 |\n", "| 4 | 1 | 13.24 | 2.59 | 2.87 | 21.0 | 118 | 2.80 | 2.69 | 0.39 | 1.82 | 4.32 | 1.04 | 2.93 | 735 |\n", "| 5 | 1 | 14.20 | 1.76 | 2.45 | 15.2 | 112 | 3.27 | 3.39 | 0.34 | 1.97 | 6.75 | 1.05 | 2.85 | 1450 |\n", "| 6 | 1 | 14.39 | 1.87 | 2.45 | 14.6 | 96 | 2.50 | 2.52 | 0.30 | 1.98 | 5.25 | 1.02 | 3.58 | 1290 |\n", "\n" ], "text/plain": [ " X1 X14.23 X1.71 X2.43 X15.6 X127 X2.8 X3.06 X.28 X2.29 X5.64 X1.04 X3.92\n", "1 1 13.20 1.78 2.14 11.2 100 2.65 2.76 0.26 1.28 4.38 1.05 3.40 \n", "2 1 13.16 2.36 2.67 18.6 101 2.80 3.24 0.30 2.81 5.68 1.03 3.17 \n", "3 1 14.37 1.95 2.50 16.8 113 3.85 3.49 0.24 2.18 7.80 0.86 3.45 \n", "4 1 13.24 2.59 2.87 21.0 118 2.80 2.69 0.39 1.82 4.32 1.04 2.93 \n", "5 1 14.20 1.76 2.45 15.2 112 3.27 3.39 0.34 1.97 6.75 1.05 2.85 \n", "6 1 14.39 1.87 2.45 14.6 96 2.50 2.52 0.30 1.98 5.25 1.02 3.58 \n", " X1065\n", "1 1050 \n", "2 1185 \n", "3 1480 \n", "4 735 \n", "5 1450 \n", "6 1290 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "wine <- get(load(url(\"https://raw.githubusercontent.com/cefet-rj-dal/daltoolbox/main/wine.RData\")))\n", "head(wine)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Example: PCA components\n", "Cummulative variance of PCA: First dimensions have high variance. However, adding more dimensions does not bring much benefit in terms of cummulative variance. \n", "The goal is to establish a trade-off." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "pca_res = prcomp(wine[,2:ncol(wine)], center=TRUE, scale.=TRUE)\n", "y <- cumsum(pca_res$sdev^2/sum(pca_res$sdev^2))\n", "x <- 1:length(y)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 3
xvaluevariable
<int><dbl><fct>
110.3598307PCA
220.5522435PCA
330.6640381PCA
440.7351492PCA
550.8014366PCA
660.8510403PCA
\n" ], "text/latex": [ "A data.frame: 6 × 3\n", "\\begin{tabular}{r|lll}\n", " & x & value & variable\\\\\n", " & & & \\\\\n", "\\hline\n", "\t1 & 1 & 0.3598307 & PCA\\\\\n", "\t2 & 2 & 0.5522435 & PCA\\\\\n", "\t3 & 3 & 0.6640381 & PCA\\\\\n", "\t4 & 4 & 0.7351492 & PCA\\\\\n", "\t5 & 5 & 0.8014366 & PCA\\\\\n", "\t6 & 6 & 0.8510403 & PCA\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 3\n", "\n", "| | x <int> | value <dbl> | variable <fct> |\n", "|---|---|---|---|\n", "| 1 | 1 | 0.3598307 | PCA |\n", "| 2 | 2 | 0.5522435 | PCA |\n", "| 3 | 3 | 0.6640381 | PCA |\n", "| 4 | 4 | 0.7351492 | PCA |\n", "| 5 | 5 | 0.8014366 | PCA |\n", "| 6 | 6 | 0.8510403 | PCA |\n", "\n" ], "text/plain": [ " x value variable\n", "1 1 0.3598307 PCA \n", "2 2 0.5522435 PCA \n", "3 3 0.6640381 PCA \n", "4 4 0.7351492 PCA \n", "5 5 0.8014366 PCA \n", "6 6 0.8510403 PCA " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dat <- data.frame(x, value = y, variable = \"PCA\")\n", "dat$variable <- as.factor(dat$variable)\n", "head(dat)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWm\npqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnK\nysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc\n3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u\n7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////i\nsF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3deWAU9d348U8QJBAs1hMf8PpV\n6wWK4qO2PlWsWqs+Q4KpgjRGrAfQ8ggRUPRRQCmKiI+AR2nr1RbK44NQSltsRYSqIOABeOAR\n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\ngg==", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "grf <- plot_scatter(dat, label_x = \"dimensions\", label_y = \"cumulative variance\", colors=\"black\") + \n", " theme(text = element_text(size=16))\n", "plot(grf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Minimum curvature\n", "If the curve is increasing, use minimum curvature analysis. \n", "It brings a trade-off between having lower x values (with not so high y values) and having higher x values (not having to much increase in y values). " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\n", "
A data.frame: 1 × 3
xyyfit
<int><dbl><dbl>
160.8510403-1.819591e-08
\n" ], "text/latex": [ "A data.frame: 1 × 3\n", "\\begin{tabular}{r|lll}\n", " & x & y & yfit\\\\\n", " & & & \\\\\n", "\\hline\n", "\t1 & 6 & 0.8510403 & -1.819591e-08\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 1 × 3\n", "\n", "| | x <int> | y <dbl> | yfit <dbl> |\n", "|---|---|---|---|\n", "| 1 | 6 | 0.8510403 | -1.819591e-08 |\n", "\n" ], "text/plain": [ " x y yfit \n", "1 6 0.8510403 -1.819591e-08" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "myfit <- fit_curvature_min()\n", "res <- transform(myfit, y)\n", "head(res)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Warning message:\n", "“\u001b[1m\u001b[22mUsing `size` aesthetic for lines was deprecated in ggplot2 3.4.0.\n", "\u001b[36mℹ\u001b[39m Please use `linewidth` instead.”\n" ] }, { "data": { "image/png": "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\nCADQBoodAOe2aZOkpakdAgC0gWIHAACgExQ7AAAAnaDYAQAA6ATFDgAAQCcodgAAADrhoXYA\nAKhVcrL4+akdAgC0gWIHwLlNnqx2AgDQDC7FAgAA6ATFDgAAQCcodgAAADpBsQMAANAJih0A\nAIBOUOwAOLdVq+TLL9UOAQDawHYnAJxbYqIYjfLii2rnAAANYMYOAABAJyh2AAAAOkGxAwAA\n0AmKHQAAgE5Q7AAAAHSCVbEAnFtsrDRponYIANAGih0A52YyqZ0AADSDS7EAAAA6QbEDAADQ\nCYodAACATlDsAAAAdIJiBwAAoBMqr4o9duyYyWQ6ceKEj49P+/btx44dGxgYWPtHqqqq0tLS\n/va3v124cKFBgwZhYWHDhg17/PHHH05gAA9bZqbUqyft26udAwA0QM1i9+233y5ZssRsNkdE\nRBQXF+/cufPw4cPJycktW7as6SNms/m99947dOhQw4YNIyIiysrKMjMzf/jhh9/85jcDBw58\nmOEBPCR9+ojRKMeOqZ0DADRAtWJXWlq6fPlyLy+v999/PywsTES2bdu2bNmylJSUlJQUg8Fw\nz0999913hw4devzxx99+++0GDRqIyIULF37729+uXLmyV69ejRo1epi/AqBFN2/eXLBgwZ49\ne4KCgiZPntypUye1EwEA7Ea1e+zS0tJKS0uHDx9uaXUiMmDAgCeeeCI3N/fkyZM1fSo7O1tE\nBg8ebGl1ItKiRYsnn3yysrKylk8BsHr55Zd/97vfbdu2be3atb169TrGTBgA6IhqxW7Pnj0i\n0qNHj+qDMTExInL48OGaPuXh4SEiRUVF1QeLi4tFxM2NhSDAffz73//+6quvrIc3b9784x//\nqGIeAIB9qXMp1mw2nz9/3sPDIzQ0tPq45e668+fP1/TB5557bteuXZ999pm/v/8TTzxRXl7+\n7bfffv/9948++miXLl2qn3nlypUff/zR8rqoqMjf398BvwegMYWFhXeM/PTTT6okAQA4gjrF\nrqysrLy8/O5b4ho2bCh3TchV17Jly3nz5v3P//zPe++9Zx2MioqaPn26ZTLPat26dZ9//rnl\ndadOnQYMGGC39IBmtWnTpmXLlufOnbOOPP300yrmAQDYlzrFrqKiQkS8vb3vGPfx8RGRsrKy\nmj5469at1atXX79+PTg4ODw8/NatW9nZ2UePHv3mm2+GDx9e/cy4uDjr3Xu1TAECLsXd3T01\n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\nbGwiIiLU54SEBGNPs59gv/32m4jUr19/8ODBapOtra1xkAULFvz9739XmcnG5n9/0E6aNMm0\ngIKCgnnz5pl2MJozZ05RUZHZ4by8vFatWmWs09jZ0dExMTHRdOR33nmnxJ/AI0eOND394j+W\n09PTX3nlleI7Ojo6rlmzxrTn0ygJQI1DsANQLdy5c8fd3V1E9Hr90qVLjx8/HhcXt3LlSkdH\nR2NAeWywU0JCQpKTkwsKCk6cOOHn56cijk6n692795kzZwoKCs6dO9exY0cR0el0N27cMA6y\naNEi1ThhwoSff/45LS0tJiamf//+atgVK1aYHc7e3t7Ozs7X13fv3r1ZWVn37t3bsGGDg4OD\niAQFBRk7b9u2TY0QFhYWHx+fnp6ekJAwduxY1bhr167STspgMKhUZ2NjM2fOnKNHj6akpERF\nRXXo0EH13Ldv31MtCUCNQ7ADUC3MnDlT5ZK4uDjT9n//+992dnZlD3avvfaa6e779u1T7a1b\nt87Pzze2JyYmqvaDBw+qlvT0dGdnZxFZvXq1WW1vv/22iDg5Od26dcvscN7e3nfv3jXtvGDB\nAhGpV6+esWX06NEi0r9/f7Nhn3/+eRGZOXNmaSf1448/qpatW7ea7pibm9ujRw8RadOmjfE6\n4tMoCUCNwzN2AKqF9evXi8jkyZPbtm1r2t6hQ4eRI0eWfZwZM2aYftm+fXv1ISwsTK2Zovj7\n+zs5OYnI3bt3VcuaNWuysrJat249ZcoUszGXL19ub2+fnZ0dExNjtmnOnDkuLi6mLd27dzcd\n1vg5Ozvb8H8fXzt8+HB6evr8+fNLO5d169aJSNeuXYcNG2babm9vv3TpUhFJSEg4ceJEVZYE\noJoj2AGwvOvXr9+7d09Ehg8fXnzriBEjyj5Us2bNTL90dHRUH/z9/c166vV60y/PnTsnIoGB\ngcWnL7i4uKjdi6eozp07P3pYEVG3Uw8cONC9e/eNGzempKSodjc3twYNGri6upZ2LklJSSIy\nYMCA4psCAgLq1asnIsnJyVVZEoBqjmAHwPKMczybN29efGuTJk3KPlSJUx9EpHbt2o/eUaWo\n8PBwXUni4+NF5NatW2Z7NWzY8LElTZgwYd68eQ4ODr/88svo0aMbN25cv379IUOGfPnll1lZ\nWaXtZfjv3dXSTr9x48YiYvpw4dMuCUD1R7ADYHn29vbqQ/GrZSKiJlU8bRkZGSLyzDPPPF+6\n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\nVpaTk5Obm1tubq7BYOjdu7eIbNu2rbKKB/BoBDsA5dCsWTMRmTx5sll7RESEiDg7O6tUVFhY\n2KpVKxXXvvrqq99++y09Pf3kyZNTpkxRqSgyMtK4rwp2Xl5eHTt2bNWq1Y8//mjMW8WDXblG\nVsHOwcFBRAICAnbs2HHx4sXvv/9+8ODBqvPQoUONnUsMdosWLRIRnU43YcKEn3/+OS0tLSYm\npn///qrnihUrKvW7+/9Nnz7dNEEuWLCgcscvLdjdvHkzMDBQRHr27KlamjdvLiKnTp0q++Df\nfPONiIwbN059uXbtWrPvM4CnimAHoBzmz5+vQpjphTGDwaDmVxp/nScnJ6tQcvjwYbMRevXq\npS53GVtUsFNZLScnx7Rz8WBXrpFVsBORvn37Pnz40LTz+++/rzYdPXpUtRQPdunp6c7OziKy\nevVqs2O9/fbbIuLk5HTr1q1Hfb8qRN2VNmrZsmXljq+CnZ2dXaCJ9u3bOzo6qnSelJSkerq6\nuopIRkZG2QdXqffQoUPqS3UpV6/X379/v3LPAkCJeMYOQDmoe3Pp6em//PKLsTE1NfXIkSMi\nYly0zM3NLSoqKioqynRBDcXLy0tEsrKyig8+e/ZsvV7/6AIqMLKNjc3HH39stuLGX//6V9X/\nq6++Ku1Ya9asycrKat26tfFyoNHy5cvt7e2zs7NjYmIeXXAFmD1TWOEXbzxafn5+jIlTp07V\nq1cvODj4zJkz6kKdiKiHKUu8E12izMzM6OjoZ599tkePHqrF09OzV69eDx482LVr19M4CwBm\nWMcOQDn4+fm1bds2Pj5++/bt3bt3V42bN282GAwtWrTo0qWLavHw8Bg4cKDpjjk5OcnJybGx\nsd99911pg7dr1+6xBVRgZF9fX3X31pSjo+OAAQPWrVtnvARYnLqUGBgYWDxaubi4+Pv7x8fH\nnzhxIjg4+LFll8vrr7/+8ccfG78cPnx45Y6veHh43Lp169F9PD09s7KyLl26VNo/zYMHD/Ly\n8vR6vcrNO3bsyMvLs7GxUX8AKNevXxeRzZs3mzYCeEoIdgDK54033oiPj9+xY8enn36qEo9a\njVatbWEqJibmX//6V1xcXHJy8mMzhIg0atSojDWUa+QmTZqU2K6eF0xKSiptR7UpPDw8PDy8\ntD5lOa/yWrx4sa2t7datW21sbEJDQ+fOnVvphyijdu3aXblyJTExsbRg179///379+/evTso\nKEj++z8hNTU1NTXVrGd0dHRmZqabm9vTrhmwcgQ7AOUTHBw8e/bsq1evHj16NCAg4MKFCwkJ\nCbVq1Ro5cqSxT05OzrBhw3744QcRcXFxadu2bYsWLZo2bdqxY8cNGzZ8/fXXJY782PuwFRu5\ntFuZdnZ2IuLk5FTasTIyMkTkmWeeqVu3bml9jNN4K5G9vf2yZcuWLVtW6SOXV1BQ0I4dO8LD\nw0NDQ4t/G7Oyso4dO2Zra9utWzcRSU9PP3TokLu7+40bN2rV+j+/XF5++eWYmJidO3eOHj26\n6qoHrBLBDkD5NGzYsHv37j/99NP27dsDAgLURZqgoCD1yJqyePHiH374Qa/Xr1+/Pjg4WK2E\nonz55ZdPcvQKjHz58uUS29UFOV9f39KO5evre/Xq1bCwsPfee+9Jaq65QkJCPvjgg/j4+M8/\n/3zcuHFmWxctWpSdnd2zZ0+1cPG2bdsKCwsHDRpklupEZPDgwTExMVu2bCHYAU8bkycAlJt6\nWGr79u0Gg0EFO7N3vasrapMnTx4xYoRp9hIRNSWzwiow8sWLFy9cuGDWmJub+/3334tIy5Yt\nSzuWn5+fiBw9erT4pqKiolWrVn3yySdq4TetcnBwWLdunU6nGz9+/OzZs43f4YcPH37wwQcr\nVqywt7dXK93If+/DDh06tPg4r732mk6n279/Py8UAZ42gh2Achs6dKidnV1aWtqaNWuSk5Pr\n16+vHrEyUpGr+M27+Pj4ffv2PcmhKzByUVHRrFmzzN6O8Le//S0tLa127doTJ04s7VihoaEi\nEhUVtXPnTrNNERER06ZNW7hwoaenZwXOogbp37//pk2b3N3dV6xY4e7u3qJFi86dOzdo0OCj\njz5ycnJau3bt888/LyIpKSlHjx51c3NTKxKb8fb27ty5c0FBwY4dO6r8DADrQrADUG716tXr\n06ePiKjV4EaNGqWeVzNS02PXrl0bGRmZl5dXWFiYnJw8b968gICA7OxsEUlMTCzxvWSPVbGR\nd+/e3bt37+++++7KlSt79+59/fXXly5dKiJTpkzx8fEp7VgBAQGhoaEGg2HIkCEzZ86MjY29\nefPmmTNnZsyYoVbImzVrllroTttCQkLOnz8fFhbWvXv3O3fuJCUltWzZctKkSRcuXHjrrbdU\nny1btojIgAEDzP4nGKlFoXlvLPDUWXgdPQA1k+k0hcTERLOtf/zxh3GKq06nM/6yDwoKUu9y\nEBFXV1e1yLBxgeLbt2+bjVN8geJyjaziV3BwcInpbezYsQ8ePDCOXOKbJzIyMoYNG1biD8+J\nEydW+ncVAJ4QV+wAVMTAgQPViwo6derk7+9vttXd3T0hIWHWrFmtW7fW6/UuLi59+/aNjIzc\nvXv39OnT+/Xr5+DgYGdnZ7ZocFlUYOTOnTufOXNmzpw5fn5+er3e1dW1W7du33777YYNG9Tb\nxh6hbt26W7du3bJlS3BwcMuWLR0dHf38/IYNG3bkyBH1siwAqFZ0BoPB0jUAAACgEnDFDgAA\nQCMIdgAAABpBsAMAANAIgh0AAIBGEOwAAAA0gmAHAACgEQQ7AAAAjSDYAQAAaATBDgAAQCMI\ndgAAABpBsAMAANAIgh0AAIBGEOwAAAA0gmAHAACgEQQ7AAAAjSDYAQAAaATBDgAAQCMIdgAA\nABpBsAMAANAIgh0AAIBG/D97ylL9IIBK8QAAAABJRU5ErkJggg==", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "plot(grf + geom_vline(xintercept = res$x, linetype=\"dashed\", color = \"red\", size=0.5))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "4.3.3" } }, "nbformat": 4, "nbformat_minor": 4 }