Last active
January 30, 2016 07:19
-
-
Save benjaminhallock/3a69012d5dec960f2e85 to your computer and use it in GitHub Desktop.
Swift Stats Conversion Playground
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//: Playground - noun: a place where people can play | |
import UIKit | |
let a : Double = 1.0 / 81.0 | |
var b : Double = 0.0 | |
for var i = 0; i < 729; i++ | |
{ | |
b = a + b | |
} | |
print(b) | |
let c : Float = 1.0 / 81.0 | |
var d : Float = 0.0 | |
for var i = 0; i < 729; i++ | |
{ | |
d = c + d | |
} | |
print(d) | |
//START | |
var xArray = [7,5,8,3,6,10,12,4,9,16,18]; | |
var yArray = [21,15,24,9,18,30,36,12,27,45,54]; | |
//xArray = [1,1,3,4,7,7,9,12] | |
//yArray = xArray | |
let xArraySorted = xArray.sort() | |
let yArraySorted = yArray.sort() | |
var Q1: Float | |
var Q2: Float | |
var Q3: Float | |
var x1 = 1.0 * (Float(xArray.count) + 1.0) / 4.0 | |
var x2 = 2.0 * (Float(xArray.count) + 1.0) / 4.0 | |
var x3 = 3.0 * (Float(xArray.count) + 1.0) / 4.0 | |
//Weird rule if it is .5, you have to average the two numbers in that index. Otherwise round. | |
if (x1 % 0.5 == 0 && x1 % 1 != 0) | |
{ | |
let x11 : Int = Int(x1) | |
let x22 : Int = Int(round(x1)) | |
Q1 = Float(xArraySorted[x11-1] + xArraySorted[x22-1])/2.0 | |
} | |
else | |
{ | |
let x11 : Int = Int(round(x1)) | |
Q1 = Float(xArraySorted[x11-1]) | |
} | |
if (x2 % 0.5 == 0 && x2 % 1 != 0) | |
{ | |
let x11 :Int = Int(x2) | |
let x22 :Int = Int(round(x2)) | |
Q2 = Float(xArraySorted[x11-1] + xArraySorted[x22-1])/2.0 | |
} | |
else | |
{ | |
let x11 : Int = Int(round(x2)) | |
Q2 = Float(xArraySorted[x11-1]) | |
} | |
if (x3 % 0.5 == 0 && x3 % 1 != 0) | |
{ | |
let x11 :Int = Int(x3) | |
let x22 :Int = Int(round(x3)) | |
Q3 = Float(xArraySorted[x11-1] + xArraySorted[x22-1])/2.0 | |
} | |
else | |
{ | |
let x11 : Int = Int(round(x3)) | |
Q3 = Float(xArraySorted[x11-1]) | |
} | |
let fiveNumberSumary = [xArray.first!, Q1, Q2, Q3, xArray.last!] | |
if (xArray.count != yArray.count) | |
{ | |
print("NOT EQUAL AMOUNT OF NUMBERS") | |
exit(0) | |
} | |
var xAverage : Float = 0; | |
var yAverage : Float = 0; | |
for x in xArray { xAverage = Float(x) + xAverage } | |
for y in yArray { yAverage = Float(y) + yAverage } | |
print("AVERAGES_________________________") | |
xAverage/Float(xArray.count) | |
xAverage = xAverage/Float(xArray.count) | |
yAverage = yAverage/Float(yArray.count) | |
var XMinusAvg = [Float]() | |
var YMinusAvg = [Float]() | |
for x in xArray { XMinusAvg.append(Float(x) - xAverage) } | |
for y in yArray { YMinusAvg.append(Float(y) - yAverage) } | |
XMinusAvg | |
YMinusAvg | |
var xTimesY = [Float]() | |
for x in XMinusAvg | |
{ | |
let y = YMinusAvg[XMinusAvg.indexOf(x)!] | |
xTimesY.append(x*y) | |
} | |
xTimesY | |
var sum : Float = 0.0 | |
for product in xTimesY { sum = product + sum } | |
//Coveriance | |
print("COVERIANCE____________________") | |
let cov = sum/Float(xArray.count - 1) | |
var sumOfSquareX : Float = 0.0 | |
var sumOfSquareY : Float = 0.0 | |
for x in XMinusAvg { sumOfSquareX = x * x + sumOfSquareX } | |
for y in YMinusAvg { sumOfSquareY = y * y + sumOfSquareY } | |
sumOfSquareX | |
sumOfSquareY | |
print("SAMPLE VARIANCE_______________") | |
let SV = Float(sumOfSquareX)/Float(xArray.count - 1) | |
print("STANDARD DEVIATION_______________") | |
let SD = sqrt(SV) | |
let Sx = sumOfSquareX/Float(XMinusAvg.count - 1) | |
let Sy = sumOfSquareY/Float(YMinusAvg.count - 1) | |
print("Sample Coefficient Correlation___________") | |
let CoCo = cov/(Sx * Sy) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment