/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġjet brains . datal ore . plot Demo . model . plot Assembler Ċ Ċ import Ġjet brains . datal ore . base . geometry . Double Vector Ċ import Ġjet brains . datal ore . base . random . Random Gaussian Ċ import Ġjet brains . datal ore . base . values . Color Ċ import Ġjet brains . datal ore . plot . base . Aes Ċ import Ġjet brains . datal ore . plot . base . DataFrame Ċ import Ġjet brains . datal ore . plot . base . pos . Position Adjust ments Ċ import Ġjet brains . datal ore . plot . base . render . lin etype . Named Line Type Ċ import Ġjet brains . datal ore . plot . base . scale . Sca les Ċ import Ġjet brains . datal ore . plot . base . stat . Stats Ċ import Ġjet brains . datal ore . plot . builder . Var Binding Ċ import Ġjet brains . datal ore . plot . builder . assemble . Geom Layer Builder Ċ import Ġjet brains . datal ore . plot . builder . assemble . Plot Assembler Ċ import Ġjet brains . datal ore . plot . builder . assemble . Pos Provider Ċ import Ġjet brains . datal ore . plot . builder . assemble . Typed Scale Map Ċ import Ġjet brains . datal ore . plot . builder . assemble . geom . Geom Provider Ċ import Ġjet brains . datal ore . plot . builder . coord . Coord Providers Ċ import Ġjet brains . datal ore . plot . builder . theme . Default Theme Ċ import Ġjet brains . datal ore . plot Demo . model . Simple Demo Base Ċ import Ġkotlin . random . Random Ċ Ċ // ĠUses Ġserver - side Ġstat Ġmethods Ġ Ċ open Ġclass ĠLinear Regression Plot Demo Ġ: ĠSimple Demo Base () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġpadding : ĠDouble Vector ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠDouble Vector . ZERO ĊĊĊĠĠĠ Ġfun Ġcreate P lots (): ĠList < jetbrains . datal ore . plot . builder . Plot > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Plot () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Plot (): Ġjet brains . datal ore . plot . builder . Plot Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġ 1 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġscatter ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġvar Ġlists XY Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Ob servations ( count ) ĊĠĠĠĠĠĠĠ Ġvar Ġvalues X Ġ= Ġlists XY [ 0 ] ĊĠĠĠĠĠĠĠ Ġvar Ġvalues Y Ġ= Ġlists XY [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar Orig X Ġ= ĠDataFrame . Variable (" A ") ĊĠĠĠĠĠĠĠ Ġval Ġvar Orig Y Ġ= ĠDataFrame . Variable (" B ") ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠDataFrame . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Numeric ( var Orig X , Ġvalues X ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Numeric ( var Orig Y , Ġvalues Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġscale By Aes Ġ= ĠTyped Scale Map ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . X Ġto ĠSca les . continuous Domain Numeric Range (" A "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . Y Ġto ĠSca les . continuous Domain Numeric Range (" B ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscatter Layer Ġ= ĠGe om Layer Builder . demo And Test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. stat ( Stats . IDENTITY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. geom ( Geom Provider . point ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. pos ( Pos Provider . wrap ( Position Adjust ments . identity ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Orig X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Orig Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( data , Ġscale By Aes ) ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġtrue Ġline ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġlists XY Ġ= Ġtrue Line Model () ĊĠĠĠĠĠĠĠ Ġvalues X Ġ= Ġlists XY [ 0 ] ĊĠĠĠĠĠĠĠ Ġvalues Y Ġ= Ġlists XY [ 1 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġvar TL X Ġ= ĠDataFrame . Variable (" true ĠX ") ĊĠĠĠĠĠĠĠ Ġval Ġvar TL Y Ġ= ĠDataFrame . Variable (" true ĠY ") ĊĠĠĠĠĠĠĠ Ġval Ġline Ġ= ĠDataFrame . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Numeric ( var TL X , Ġvalues X ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Numeric ( var TL Y , Ġvalues Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġtrue Line Layer Ġ= ĠGe om Layer Builder . demo And Test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. stat ( Stats . IDENTITY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. geom ( Geom Provider . line ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. pos ( Pos Provider . wrap ( Position Adjust ments . identity ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar TL X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar TL Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Constant Aes ( Aes . LIN ET YPE , ĠNamed Line Type . DASH ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( line , Ġscale By Aes ) ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠSm ooth Ġstat Ġ( regression ) ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġval Ġregression Line Layer Ġ= ĠGe om Layer Builder . demo And Test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. stat ( Stats . smooth ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. geom ( Geom Provider . smooth ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. pos ( Pos Provider . wrap ( Position Adjust ments . identity ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Orig X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Orig Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( data , Ġscale By Aes ) ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠSm ooth Ġstat Ġ- Ġstandard Ġerror ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġval Ġse Line Layer Ġ= ĠGe om Layer Builder . demo And Test () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. stat ( Stats . smooth ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. geom ( Geom Provider . point ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. pos ( Pos Provider . wrap ( Position Adjust ments . identity ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Orig X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar Binding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Orig Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA es . Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Binding ( Var Binding ( Stats . SE , ĠA es . Y )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Constant Aes ( Aes . COLOR , ĠColor . RED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( data , Ġscale By Aes ) ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// ĠPlot ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġval Ġassembler Ġ= ĠPlot Assembler . single Tile ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale By Aes , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscatter Layer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Line Layer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregression Line Layer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġse Line Layer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĠCoord Providers . cart esian (), ĠDefault Theme () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassembler . setTitle (" Linear ĠRegression ") ĊĠĠĠĠĠĠĠ Ġassembler . disable Interactions () ĊĠĠĠĠĠĠĠ Ġreturn Ġassembler . create Plot () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSE ED : ĠLong Ġ= Ġ 2 7 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINTER CEPT Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS LO PE Ġ= Ġ 0 . 5 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠX MIN Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠX MAX Ġ= Ġ 1 0 . 0 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġgen Ob servations ( n : ĠInt ): ĠList < List < Double >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues X Ġ= ĠArrayList < Double >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Y Ġ= ĠArrayList < Double >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom X Ġ= ĠRandom ( SEED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom Y Ġ= ĠRandom Gaussian ( Random ( SEED )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= ĠX MIN Ġ+ Ġrandom X . next Double () Ġ* Ġ( X MAX Ġ- ĠX MIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= ĠINTER CEPT Ġ+ ĠS LO PE Ġ* Ġx Ġ+ Ġrandom Y . next Gaussian () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues X . add ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Y . add ( y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( values X , Ġvalues Y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtrue Line Model (): ĠList < List < Double >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 0 Ġ= ĠX MIN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 0 Ġ= ĠINTER CEPT Ġ+ ĠS LO PE Ġ* Ġx 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 1 Ġ= ĠX MAX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy 1 Ġ= ĠINTER CEPT Ġ+ ĠS LO PE Ġ* Ġx 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues X Ġ= ĠlistOf ( x 0 , Ġx 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Y Ġ= ĠlistOf ( y 0 , Ġy 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( values X , Ġvalues Y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ