Statistical Analysis with Swif t Data Sets, Statistical Models, and Predictions on Apple Platforms — Jimmy Andersson Statistical Analysis with Swift Data Sets, Statistical Models, and Predictions on Apple Platforms Jimmy Andersson Statistical Analysis with Swift: Data Sets, Statistical Models, and Predictions on Apple Platforms Jimmy Andersson Västra Frölunda, Sweden ISBN-13 (pbk): 978-1-4842-7764-5 ISBN-13 (electronic): 978-1-4842-7765-2 https://doi.org/10.1007/978-1-4842-7765-2 Copyright © 2022 by Jimmy Andersson This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Aaron Black Development Editor: James Markham Coordinating Editor: Jessica Vakili Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected]; for reprint, paperback, or audio rights, please e-mail [email protected]. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book's product page, located at www.apress.com/ 978- 1- 4842- 7764- 5. For more detailed information, please visit http://www.apress.com/ source- code. Printed on acid-free paper Table of Contents About the Author ���������������������������������������������������������������������������������ix About the Technical Reviewer �������������������������������������������������������������xi Acknowledgments �����������������������������������������������������������������������������xiii Chapter 1: Swift Primer ������������������������������������������������������������������������1 A Swift Overview ���������������������������������������������������������������������������������������������������1 Performance ����������������������������������������������������������������������������������������������������2 Safety ��������������������������������������������������������������������������������������������������������������2 Correctness �����������������������������������������������������������������������������������������������������3 Hardware Acceleration ������������������������������������������������������������������������������������4 Swift Package Manager ����������������������������������������������������������������������������������4 Conclusion �������������������������������������������������������������������������������������������������������5 Working with Swift ������������������������������������������������������������������������������������������������5 Data Formats ���������������������������������������������������������������������������������������������������5 The Code Project ���������������������������������������������������������������������������������������������7 The Decodable Protocol �����������������������������������������������������������������������������������7 The KeyPath Type ������������������������������������������������������������������������������������������10 Higher-Order Functions ���������������������������������������������������������������������������������14 Chapter Summary �����������������������������������������������������������������������������������������������17 Chapter 2: Introduction to Probability and Random Variables �����������19 Probability �����������������������������������������������������������������������������������������������������������19 Sample Spaces ����������������������������������������������������������������������������������������������21 Events ������������������������������������������������������������������������������������������������������������22 iii Table of ConTenTs The General Addition Rule �����������������������������������������������������������������������������23 Conditional Probabilities ��������������������������������������������������������������������������������27 Independence ������������������������������������������������������������������������������������������������31 Bayes’ Theorem ���������������������������������������������������������������������������������������������31 Random Variables �����������������������������������������������������������������������������������������������34 Discrete vs� Continuous Random Variables ���������������������������������������������������35 Chapter Summary �����������������������������������������������������������������������������������������������37 Chapter 3: Distributions ����������������������������������������������������������������������39 What Is a Distribution? ����������������������������������������������������������������������������������������39 Discrete Distributions ������������������������������������������������������������������������������������������41 Bernoulli Distribution and Trials���������������������������������������������������������������������41 Geometric Distribution �����������������������������������������������������������������������������������43 Binomial Distribution �������������������������������������������������������������������������������������49 Distributions Application ��������������������������������������������������������������������������������53 Continuous Distributions �������������������������������������������������������������������������������������55 Differences from Discrete Distributions ��������������������������������������������������������55 Exponential Distribution ��������������������������������������������������������������������������������59 Normal Distribution ���������������������������������������������������������������������������������������62 Expected Value ����������������������������������������������������������������������������������������������67 Variance and Standard Deviation ������������������������������������������������������������������68 Chapter Summary �����������������������������������������������������������������������������������������������69 Chapter 4: Predicting House Sale Prices with Linear Regression ������71 Linear Regression �����������������������������������������������������������������������������������������������71 Splines �����������������������������������������������������������������������������������������������������������73 Regression Techniques ����������������������������������������������������������������������������������75 Loss Function ������������������������������������������������������������������������������������������������76 Finding an Optimal Solution ��������������������������������������������������������������������������79 iv Table of ConTenTs Implementing Simple Linear Regression �������������������������������������������������������81 Multiple Linear Regression ����������������������������������������������������������������������������86 Deriving Linear Regression with Vectors �������������������������������������������������������87 Implementing Multiple Linear Regression �����������������������������������������������������91 Predicting House Sale Prices ����������������������������������������������������������������������107 Chapter Summary ���������������������������������������������������������������������������������������������107 Chapter 5: Hypothesis Testing ����������������������������������������������������������109 What Is Hypothesis Testing? �����������������������������������������������������������������������������109 Formulating Hypotheses �����������������������������������������������������������������������������������110 The Null Hypothesis �������������������������������������������������������������������������������������111 The Alternative Hypothesis ��������������������������������������������������������������������������111 Tails �������������������������������������������������������������������������������������������������������������112 Distribution of Sample Means ���������������������������������������������������������������������������114 The Central Limit Theorem ��������������������������������������������������������������������������117 Testing the Hypothesis ��������������������������������������������������������������������������������������123 Determining Confidence Levels �������������������������������������������������������������������123 Determining Alpha Values ����������������������������������������������������������������������������124 Performing the Test �������������������������������������������������������������������������������������124 Determining the P-value ������������������������������������������������������������������������������126 Standardization �������������������������������������������������������������������������������������������������129 Computing a Standard Score �����������������������������������������������������������������������130 Computing Confidence Intervals������������������������������������������������������������������132 A Word on Chi-Squared Tests ����������������������������������������������������������������������������134 Chapter Summary ���������������������������������������������������������������������������������������������134 v Table of ConTenTs Chapter 6: Statistical Methods for Data Compression ����������������������135 An Introduction to Compression ������������������������������������������������������������������������135 Function Behaviors ��������������������������������������������������������������������������������������136 Lossless vs� Lossy Compression �����������������������������������������������������������������139 Huffman Coding ������������������������������������������������������������������������������������������������141 Storing the Huffman Tree �����������������������������������������������������������������������������144 Implementing a Compression Algorithm �����������������������������������������������������������145 The Compression Stage �������������������������������������������������������������������������������145 The Decompression Stage ���������������������������������������������������������������������������158 Chapter Summary ���������������������������������������������������������������������������������������������165 Chapter 7: Statistical Methods in Recommender Systems ��������������167 Recommender Systems ������������������������������������������������������������������������������������167 The Functions of Recommender Systems ���������������������������������������������������168 Approaching the Problem ���������������������������������������������������������������������������������169 First Approach ���������������������������������������������������������������������������������������������169 Second Approach �����������������������������������������������������������������������������������������170 Final Approach ���������������������������������������������������������������������������������������������171 Similarity Measures ������������������������������������������������������������������������������������������173 Cosine Similarity ������������������������������������������������������������������������������������������173 Euclidean Squared Distance ������������������������������������������������������������������������176 Expected Ratings ����������������������������������������������������������������������������������������������178 Laplace Smoothing ��������������������������������������������������������������������������������������179 Rating Probabilities �������������������������������������������������������������������������������������183 Implementing the Algorithm������������������������������������������������������������������������������185 The Main Program ���������������������������������������������������������������������������������������186 Chapter Summary ���������������������������������������������������������������������������������������������198 vi Table of ConTenTs Chapter 8: Reflections ����������������������������������������������������������������������199 The Swift Programming Language �������������������������������������������������������������������199 Probability Theory ���������������������������������������������������������������������������������������������201 Distributions ������������������������������������������������������������������������������������������������������202 Regression Techniques �������������������������������������������������������������������������������������203 Hypothesis Testing ��������������������������������������������������������������������������������������������204 Statistical Methods for Data Compression ��������������������������������������������������������205 Statistical Methods in Recommender Systems ������������������������������������������������207 Professional Areas of Application ����������������������������������������������������������������������208 Data Scientist ����������������������������������������������������������������������������������������������208 Machine Learning Engineer �������������������������������������������������������������������������208 Data Engineer ����������������������������������������������������������������������������������������������208 Data Analyst�������������������������������������������������������������������������������������������������209 Topics for Further Studies ���������������������������������������������������������������������������������209 Numerical Linear Algebra ����������������������������������������������������������������������������209 Multivariate Statistics ����������������������������������������������������������������������������������210 Supervised Machine Learning ���������������������������������������������������������������������210 Index �������������������������������������������������������������������������������������������������211 vii About the Author Jimmy Andersson is a Swedish software engineer with a flair for Swift development. During the day, he works toward a master’s degree in data science and artificial intelligence at Chalmers University of Technology. At night, he builds data collection and visualization tools for the automotive industry. Jimmy also authors the open source library StatKit, which is a collection of statistical analysis tools for Swift developers. ix About the Technical Reviewer Vishwesh Ravi Shrimali graduated in 2018 from BITS Pilani, where he studied mechanical engineering. Since then, he has worked with BigVision LLC on deep learning and computer vision and was involved in creating official OpenCV AI courses. Currently, he is working at Mercedes Benz Research and Development India Pvt. Ltd. He has a keen interest in programming and AI and has applied that interest in mechanical engineering projects. He has also written multiple blogs on OpenCV and deep learning on LearnOpenCV, a leading blog on computer vision. He has also coauthored Machine Learning for OpenCV 4 (Second Edition) by Packt. When he is not writing blogs or working on projects, he likes to go on long walks or play his acoustic guitar. xi