HOW TO PREDICT THE FUTURE WITH DATE VALUE


#region end with a loss.

Name: circleshot, 11, Revolver Delta: %-2 In Between: End 02/16/2021 20:04:37 85 Days Plays: 11 
Name: snipershot, 10, SR Delta: %-4.00 In Between: End 01/29/2021 06:48:07 66 Days Plays: 16 
Name: strafetrack, 12, Pistol Delta: %-1 In Between: End 03/02/2021 21:35:31 274 Days Plays: 238 
Name: microshot, 11, Pistol Delta: %-1 In Between: End 02/27/2021 20:37:15 238 Days Plays: 205 
Name: decisionshot, 11, Pistol Delta: %-2.00 In Between: End 07/04/2020 12:47:52 0 Days Plays: 10 
Name: motiontrack, 10, Pistol Delta: %-8 In Between: End 03/08/2021 07:34:28 197 Days Plays: 348 
Name: detection, 10, Pistol Delta: %-2.00 In Between: End 03/02/2021 21:19:18 256 Days Plays: 30 
Name: motionshot, 4, Pistol Delta: %-3 In Between: End 06/07/2020 11:44:27 0 Days Plays: 16 
Name: capacity, 10, Pistol Delta: %-2 In Between: End 02/14/2021 04:48:42 174 Days Plays: 13 

#region gain only

Name: reflexshot, 10, Pistol Delta: +%41 In Between: End 03/08/2021 06:28:34 276 Days Plays: 170 
Name: reflexshot, 11, Pistol Delta: +%25 In Between: End 02/25/2021 02:59:59 207 Days Plays: 96 
Name: rocketshot, 0, Pistol Delta: +%7 In Between: End 06/08/2020 09:42:08 0 Days Plays: 14 
Name: anglehold, 10, Pistol Delta: +%10 In Between: End 01/25/2021 11:44:43 13 Days Plays: 26 
Name: sixshot, 10, Pistol Delta: +%7 In Between: End 03/08/2021 07:24:40 106 Days Plays: 87 
Name: snipershot, 11, SR Delta: +%9 In Between: End 03/07/2021 11:50:28 49 Days Plays: 56 
Name: spheretrack, 10, Pistol Delta: +%9 In Between: End 03/06/2021 09:41:11 62 Days Plays: 428 
Name: spidershot, 11, Pistol Delta: +%4 In Between: End 03/08/2021 02:23:45 195 Days Plays: 1173 
Name: strafebot, 10, Revolver Delta: +%129 In Between: End 02/23/2021 01:01:43 86 Days Plays: 115 
Name: strafeshot, 11, Revolver Delta: +%22 In Between: End 02/28/2021 00:46:55 183 Days Plays: 10 
Name: strafetrack, 10, Pistol Delta: +%1 In Between: End 03/02/2021 21:20:32 241 Days Plays: 135 
Name: timingshot, 10, Pistol Delta: +%62 In Between: End 02/18/2021 04:43:53 36 Days Plays: 68 
Name: wallpeekbasic, 10, Pistol Delta: +%16 In Between: End 02/18/2021 04:53:08 79 Days Plays: 53 
Name: rocketshot, 10, Revolver Delta: +%35.00 In Between: End 01/15/2021 03:48:37 16 Days Plays: 54 
Name: pentakill, 10, Pistol Delta: +%19 In Between: End 03/02/2021 21:42:04 286 Days Plays: 33 
Name: motionshot, 11, Pistol Delta: +%8 In Between: End 02/28/2021 00:45:08 182 Days Plays: 48 
Name: multishot, 10, Pistol Delta: +%4 In Between: End 01/31/2021 12:32:47 153 Days Plays: 36 
Name: angleholdhorde, 10, Pistol Delta: +%12 In Between: End 01/25/2021 13:03:26 53 Days Plays: 85 
Name: audiodetection, 10, Pistol Delta: +%17.00 In Between: End 02/28/2021 03:32:00 253 Days Plays: 19 
Name: audiospatial, 11, Pistol Delta: +%505 In Between: End 01/02/2021 12:11:52 131 Days Plays: 24 
Name: blinkshot, 10, Revolver Delta: +%48 In Between: End 12/29/2020 12:07:23 2 Days Plays: 14 
Name: circleshot, 10, Revolver Delta: +%14 In Between: End 01/18/2021 00:16:20 39 Days Plays: 27 
Name: decisionshot, 12, Pistol Delta: +%8 In Between: End 08/28/2020 10:45:53 82 Days Plays: 12 
Name: freeplaytc, 0, Pistol Delta: +%6 In Between: End 03/07/2021 19:26:34 51 Days Plays: 13 
Name: gridshot, 10, Pistol Delta: +%6 In Between: End 03/08/2021 07:38:35 273 Days Plays: 593 
Name: ninjashot, 10, Revolver Delta: +%32 In Between: End 02/18/2021 04:38:55 73 Days Plays: 32 
Name: headshot, 10, Pistol Delta: +%6 In Between: End 02/27/2021 22:37:53 34 Days Plays: 163 
Name: headshot, 10, Revolver Delta: +%3 In Between: End 12/09/2020 11:55:09 0 Days Plays: 71 
Name: gridshot, 12, Pistol Delta: +%83 In Between: End 01/18/2021 00:40:36 223 Days Plays: 16 
Name: wallpeekintermediate, 10, Pistol Delta: +%8 In Between: End 03/08/2021 03:16:03 54 Days Plays: 249 
Name: hordeshot, 10, Pistol Delta: +%12 In Between: End 01/25/2021 05:05:03 53 Days Plays: 84 
Name: multishot, 0, Pistol Delta: +%4 In Between: End 06/08/2020 09:59:50 0 Days Plays: 10 
Name: multilinetrace, 10, Pistol Delta: +%14.00 In Between: End 01/11/2021 23:55:33 93 Days Plays: 28 
Name: microflex, 10, Pistol Delta: +%24 In Between: End 03/08/2021 03:18:16 272 Days Plays: 182 
Name: motionshot, 12, Pistol Delta: +%5 In Between: End 02/24/2021 03:20:46 260 Days Plays: 21 
Name: microflex, 11, Pistol Delta: +%6 In Between: End 03/07/2021 06:06:07 181 Days Plays: 151 
Name: headshotreflex, 10, Pistol Delta: +%6 In Between: End 02/05/2021 05:14:22 11 Days Plays: 68 
Name: motionshot, 10, Pistol Delta: +%9 In Between: End 02/23/2021 01:08:01 256 Days Plays: 593

#region initial check gains, however end with a loss. 

Name: switchtrack, 10, Pistol Delta Start: +%12 Delta End: -%-2 In Between: End 03/07/2021 12:01:03 51 Days Plays: 526 
Name: audiospatial, 12, Pistol Delta Start: +%105 Delta End: -%-3 In Between: End 02/18/2021 04:14:35 195 Days Plays: 34 
Name: wallpeekexpert, 10, Pistol Delta Start: +%21 Delta End: -%-2 In Between: End 01/19/2021 13:55:27 44 Days Plays: 38 
Name: strafetrack, 11, Pistol Delta Start: +%3 Delta End: -%-5 In Between: End 02/28/2021 00:38:11 181 Days Plays: 23 
Name: decisionshot, 10, Pistol Delta Start: +%3 Delta End: -%-2 In Between: End 03/02/2021 21:24:03 241 Days Plays: 21 
Name: microshot, 12, Pistol Delta Start: +%0.00 Delta End: -%-2.00 In Between: End 06/07/2020 11:55:27 18 Days Plays: 14 
Name: strafeshot, 10, Revolver Delta Start: +%21 Delta End: -%-5 In Between: End 02/27/2021 04:10:00 79 Days Plays: 125 
Name: microshot, 10, Pistol Delta Start: +%1.00 Delta End: -%-2.00 In Between: End 01/21/2021 18:50:08 216 Days Plays: 127 
Name: gridshot, 11, Pistol Delta Start: +%17 Delta End: -%0.00 In Between: End 01/29/2021 06:45:12 31 Days Plays: 37 
Name: spidershot, 12, Pistol Delta Start: +%23 Delta End: -%-10 In Between: End 02/24/2021 02:13:59 174 Days Plays: 31 
Name: spidershot, 10, Pistol Delta Start: +%3 Delta End: -%-2 In Between: End 03/07/2021 05:59:44 271 Days Plays: 374 
Name: linetrace, 10, Pistol Delta Start: +%6 Delta End: -%-3 In Between: End 03/05/2021 07:43:09 243 Days Plays: 75 
Name: strafetrack, 0, Pistol Delta Start: +%1 Delta End: -%-3 In Between: End 06/08/2020 00:15:50 0 Days Plays: 28 
Name: headshot, 11, Pistol Delta Start: +%8 Delta End: -%-6 In Between: End 02/27/2021 04:14:06 43 Days Plays: 33 

$data = @()
foreach ($i in (Get-ChildItem )) {
    if ($i.FullName -like "*.json") {
        $data += Get-Content $i.FullName | ConvertFrom-Json
    }
}
$data.count
$data_unique = ($data | Sort-Object -Unique create_date)
$data_unique.count
$all = @()
$ErrorActionPreference = "inquire"
foreach ($i in $data_unique | Group-Object taskname, mode, weapontype | Sort-Object name) {
    if ($i.group.count -ge 3) {
        $half = [math]::floor(($i.group.count)/3)
        $start = $i.group[0..$half]
        $mid = $i.group[($half)..($half*2)]
        $end = $i.group[($half*2)..($half*3)]
        $start_date = [datetime]$i.group[$half].create_date
        $mid_date = [datetime]$i.group[$half*2].create_date
        $end_date = [datetime]$i.group[($half*3)-1].create_date
    } elseif ($half.count -ge 2) {
        $half = 1
        $start = $i.group[0..0]
        $mid = $i.group[(1)..(1)]
        $end = $i.group[(2)..(2)]
        $start_date = [datetime]$i.group[0].create_date
        $mid_date = [datetime]$i.group[1].create_date
        $end_date = [datetime]$i.group[2].create_date
    } else {
        $half = 0
        $start = $i.group[0..0]
        $mid = $i.group[0..($half)]
        $end = $i.group[0..($half)]
        $start_date = [datetime]$i.group[$half].create_date
        $mid_date = [datetime]$i.group[$half].create_date
        $end_date = [datetime]$i.group[$half].create_date
    }
    $start_avg = 0
    $mid_avg = 0
    $end_avg = 0
    $high =  $($i.group | Sort-Object score | Select-Object -Last 1).score
    if ([int][array]::IndexOf($i.group.score,$high) -gt $half*2) {
        $highscoretime = "end"
    } elseif ([int]([array]::IndexOf($i.group.score,$high)) -gt ($half)) {
        $highscoretime = "mid"
    } else {
        $highscoretime = "start"
    }
    foreach ($st in $start) {$start_avg += [int]$st.score}
    foreach ($mi in $mid) {$mid_avg += [int]$mi.score}
    foreach ($en in $end) {$end_avg += [int]$en.score}
    foreach ($i2 in $i.group) {$avg +=$i2.score}
    $obj= [pscustomobject]@{
        name = $i.Name
        weapontype = $i.group.weapontype[0]
        highscore = $high
        highscore_time = $highscoretime
        avg_start = $([math]::Round($start_avg/$start.count))
        avg_start_date = $start_date
        avg_mid = $([math]::Round($mid_avg/$mid.count))
        avg_mid_date = $mid_date
        avg_end = $([math]::Round($end_avg/$end.count))
        avg_end_date = $end_date
        plays = $($i.group.score.count)
        array = $i.group
    }
    $all += $obj
}
$all | Add-Member -NotePropertyName "progress" -NotePropertyValue $null -Force
foreach ($i in $all) {
    if ($i.plays -ge 10) {
        if (($i.avg_start -gt $i.avg_mid) -and($i.avg_start -gt $i.avg_end)) {
            $i.progress = "progress decreased over time"
        }
        if (($i.avg_mid -gt $i.avg_start) -and($i.avg_mid -gt $i.avg_end)) {
            $i.progress = "progress peaked in mid"
        }
        if (($i.avg_end -gt $i.avg_start) -and($i.avg_end -gt $i.avg_mid)) {
            $i.progress = "progress increased overtime"
        }
    } else {
        $i.progress = "not enough data"
    }
}    
$all | Group-Object progress | Export-Csv "$((Get-Date).ToString('yyyyMMdd'))_aim_lab.csv"
$all | Add-Member -NotePropertyName "increased %" -NotePropertyValue $null -Force
$all | Add-Member -NotePropertyName "decreased %" -NotePropertyValue $null -Force
foreach ($i in $all |Sort-Object progress) {
    if ($i.progress -eq "progress increased overtime") {
        $i.'increased %' = [math]::round(($i.avg_end/$i.avg_start)-1,2)*100
        write-host -NoNewline "Name: "
        write-host -NoNewline "$($i.name) " -ForegroundColor green
        write-host -NoNewline "Delta: "
        write-host -NoNewline "+%$($i.'increased %') " -ForegroundColor green
        write-host -NoNewline "In Between: "
        write-host -NoNewline "End $($i.avg_end_date) $(($i.avg_end_date-$i.avg_start_date).Days) Days " -ForegroundColor green
        write-host -NoNewline "Plays: "
        write-host "$($i.Plays) " -ForegroundColor green
    } elseif ($i.progress -eq "progress peaked in mid") {
        $i.'increased %' = [math]::round(($i.avg_mid/$i.avg_start)-1,2)*100
        $i.'decreased %' = [math]::round(($i.avg_end/$i.avg_mid)-1,2)*100
        write-host -NoNewline "Name: "
        write-host -NoNewline "$($i.name) " -ForegroundColor yellow
        write-host -NoNewline "Delta Start: "
        write-host -NoNewline "+%$($i.'increased %') " -ForegroundColor yellow
        write-host -NoNewline "Delta End: "
        write-host -NoNewline "-%$($i.'decreased %') " -ForegroundColor yellow
        write-host -NoNewline "In Between: "
        write-host -NoNewline "End $($i.avg_end_date) $(($i.avg_end_date-$i.avg_start_date).Days) Days " -ForegroundColor yellow
        write-host -NoNewline "Plays: "
        write-host "$($i.plays) " -ForegroundColor yellow
    } elseif ($i.progress -eq "progress decreased over time") {
        $i.'increased %' = [math]::round(($i.avg_end/$i.avg_start)-1,2)*100
        write-host -NoNewline "Name: "
        write-host -NoNewline "$($i.name) " -ForegroundColor red
        write-host -NoNewline "Delta: "
        write-host -NoNewline "%$($i.'increased %') " -ForegroundColor red
        write-host -NoNewline "In Between: "
        write-host -NoNewline "End $($i.avg_end_date) $(($i.avg_end_date-$i.avg_start_date).Days) Days " -ForegroundColor red
        write-host -NoNewline "Plays: "
        write-host  "$($i.plays) " -ForegroundColor red

    }
}