add chapter 5
This commit is contained in:
parent
ac449c8132
commit
2ca7eb6737
@ -3,6 +3,12 @@
|
||||
julia_version = "1.7.1"
|
||||
manifest_format = "2.0"
|
||||
|
||||
[[deps.AbstractFFTs]]
|
||||
deps = ["ChainRulesCore", "LinearAlgebra"]
|
||||
git-tree-sha1 = "6f1d9bc1c08f9f4a8fa92e3ea3cb50153a1b40d4"
|
||||
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
|
||||
version = "1.1.0"
|
||||
|
||||
[[deps.Adapt]]
|
||||
deps = ["LinearAlgebra"]
|
||||
git-tree-sha1 = "9faf218ea18c51fcccaf956c8d39614c9d30fe8b"
|
||||
@ -15,6 +21,11 @@ uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
|
||||
[[deps.Artifacts]]
|
||||
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
|
||||
|
||||
[[deps.BSON]]
|
||||
git-tree-sha1 = "ebcd6e22d69f21249b7b8668351ebf42d6dc87a1"
|
||||
uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0"
|
||||
version = "0.3.4"
|
||||
|
||||
[[deps.Base64]]
|
||||
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
|
||||
|
||||
@ -24,6 +35,12 @@ git-tree-sha1 = "940001114a0147b6e4d10624276d56d531dd9b49"
|
||||
uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
|
||||
version = "1.2.2"
|
||||
|
||||
[[deps.BinaryProvider]]
|
||||
deps = ["Libdl", "Logging", "SHA"]
|
||||
git-tree-sha1 = "ecdec412a9abc8db54c0efc5548c64dfce072058"
|
||||
uuid = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
|
||||
version = "0.5.10"
|
||||
|
||||
[[deps.Bzip2_jll]]
|
||||
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
|
||||
git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2"
|
||||
@ -42,6 +59,12 @@ git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2"
|
||||
uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a"
|
||||
version = "1.16.1+1"
|
||||
|
||||
[[deps.CategoricalArrays]]
|
||||
deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"]
|
||||
git-tree-sha1 = "c308f209870fdbd84cb20332b6dfaf14bf3387f8"
|
||||
uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597"
|
||||
version = "0.10.2"
|
||||
|
||||
[[deps.ChainRulesCore]]
|
||||
deps = ["Compat", "LinearAlgebra", "SparseArrays"]
|
||||
git-tree-sha1 = "4c26b4e9e91ca528ea212927326ece5918a04b47"
|
||||
@ -78,6 +101,11 @@ git-tree-sha1 = "417b0ed7b8b838aa6ca0a87aadf1bb9eb111ce40"
|
||||
uuid = "5ae59095-9a9b-59fe-a467-6f913c188581"
|
||||
version = "0.12.8"
|
||||
|
||||
[[deps.Combinatorics]]
|
||||
git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860"
|
||||
uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
|
||||
version = "1.0.2"
|
||||
|
||||
[[deps.Compat]]
|
||||
deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"]
|
||||
git-tree-sha1 = "44c37b4636bc54afac5c574d2d02b625349d6582"
|
||||
@ -94,6 +122,12 @@ git-tree-sha1 = "9f02045d934dc030edad45944ea80dbd1f0ebea7"
|
||||
uuid = "d38c429a-6771-53c6-b99e-75d170b6e991"
|
||||
version = "0.5.7"
|
||||
|
||||
[[deps.CovarianceEstimation]]
|
||||
deps = ["LinearAlgebra", "Statistics", "StatsBase"]
|
||||
git-tree-sha1 = "a3e070133acab996660d31dcf479ea42849e368f"
|
||||
uuid = "587fd27a-f159-11e8-2dae-1979310e6154"
|
||||
version = "0.2.7"
|
||||
|
||||
[[deps.Crayons]]
|
||||
git-tree-sha1 = "3f71217b538d7aaee0b69ab47d9b7724ca8afa0d"
|
||||
uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f"
|
||||
@ -104,6 +138,12 @@ git-tree-sha1 = "cc70b17275652eb47bc9e5f81635981f13cea5c8"
|
||||
uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
|
||||
version = "1.9.0"
|
||||
|
||||
[[deps.DataDeps]]
|
||||
deps = ["BinaryProvider", "HTTP", "Libdl", "Reexport", "SHA", "p7zip_jll"]
|
||||
git-tree-sha1 = "4f0e41ff461d42cfc62ff0de4f1cd44c6e6b3771"
|
||||
uuid = "124859b0-ceae-595e-8997-d05f6a7a8dfe"
|
||||
version = "0.7.7"
|
||||
|
||||
[[deps.DataFrames]]
|
||||
deps = ["Compat", "DataAPI", "Future", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Reexport", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"]
|
||||
git-tree-sha1 = "cfdfef912b7f93e4b848e80b9befdf9e331bc05a"
|
||||
@ -135,6 +175,12 @@ git-tree-sha1 = "80c3e8639e3353e5d2912fb3a1916b8455e2494b"
|
||||
uuid = "b429d917-457f-4dbc-8f4c-0cc954292b1d"
|
||||
version = "0.4.0"
|
||||
|
||||
[[deps.Distances]]
|
||||
deps = ["LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI"]
|
||||
git-tree-sha1 = "3258d0659f812acde79e8a74b11f17ac06d0ca04"
|
||||
uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7"
|
||||
version = "0.10.7"
|
||||
|
||||
[[deps.Distributed]]
|
||||
deps = ["Random", "Serialization", "Sockets"]
|
||||
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
|
||||
@ -215,6 +261,12 @@ git-tree-sha1 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9"
|
||||
uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7"
|
||||
version = "2.10.4+0"
|
||||
|
||||
[[deps.FreqTables]]
|
||||
deps = ["CategoricalArrays", "Missings", "NamedArrays", "Tables"]
|
||||
git-tree-sha1 = "488ad2dab30fd2727ee65451f790c81ed454666d"
|
||||
uuid = "da1fdf0e-e0ff-5433-a45f-9bb5ff651cb1"
|
||||
version = "0.4.5"
|
||||
|
||||
[[deps.FriBidi_jll]]
|
||||
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
|
||||
git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91"
|
||||
@ -290,6 +342,12 @@ git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3"
|
||||
uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566"
|
||||
version = "2.8.1+1"
|
||||
|
||||
[[deps.Impute]]
|
||||
deps = ["BSON", "CSV", "DataDeps", "Distances", "IterTools", "LinearAlgebra", "Missings", "NamedDims", "NearestNeighbors", "Random", "Statistics", "StatsBase", "TableOperations", "Tables"]
|
||||
git-tree-sha1 = "4baf7c1120d33f925259c98dce84c35cd107aae3"
|
||||
uuid = "f7bf1975-0170-51b9-8c5f-a992d46b9575"
|
||||
version = "0.6.7"
|
||||
|
||||
[[deps.IniFile]]
|
||||
deps = ["Test"]
|
||||
git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8"
|
||||
@ -344,6 +402,12 @@ git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37"
|
||||
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
|
||||
version = "0.21.2"
|
||||
|
||||
[[deps.JSON3]]
|
||||
deps = ["Dates", "Mmap", "Parsers", "StructTypes", "UUIDs"]
|
||||
git-tree-sha1 = "7d58534ffb62cd947950b3aa9b993e63307a6125"
|
||||
uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
|
||||
version = "1.9.2"
|
||||
|
||||
[[deps.JpegTurbo_jll]]
|
||||
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
|
||||
git-tree-sha1 = "d735490ac75c5cb9f1b00d8b5509c11984dc6943"
|
||||
@ -495,14 +559,32 @@ git-tree-sha1 = "f755f36b19a5116bb580de457cda0c140153f283"
|
||||
uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
|
||||
version = "0.3.6"
|
||||
|
||||
[[deps.NamedArrays]]
|
||||
deps = ["Combinatorics", "DataStructures", "DelimitedFiles", "InvertedIndices", "LinearAlgebra", "Random", "Requires", "SparseArrays", "Statistics"]
|
||||
git-tree-sha1 = "2fd5787125d1a93fbe30961bd841707b8a80d75b"
|
||||
uuid = "86f7a689-2022-50b4-a561-43c23ac3c673"
|
||||
version = "0.9.6"
|
||||
|
||||
[[deps.NamedDims]]
|
||||
deps = ["AbstractFFTs", "ChainRulesCore", "CovarianceEstimation", "LinearAlgebra", "Pkg", "Requires", "Statistics"]
|
||||
git-tree-sha1 = "af6febbfede908c04e19bed954350ac687d892b2"
|
||||
uuid = "356022a1-0364-5f58-8944-0da4b18d706f"
|
||||
version = "0.2.45"
|
||||
|
||||
[[deps.NearestNeighbors]]
|
||||
deps = ["Distances", "StaticArrays"]
|
||||
git-tree-sha1 = "16baacfdc8758bc374882566c9187e785e85c2f0"
|
||||
uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce"
|
||||
version = "0.4.9"
|
||||
|
||||
[[deps.NetworkOptions]]
|
||||
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
|
||||
|
||||
[[deps.Ogg_jll]]
|
||||
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
|
||||
git-tree-sha1 = "7937eda4681660b4d6aeeecc2f7e1c81c8ee4e2f"
|
||||
git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f"
|
||||
uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051"
|
||||
version = "1.3.5+0"
|
||||
version = "1.3.5+1"
|
||||
|
||||
[[deps.OpenBLAS_jll]]
|
||||
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
|
||||
@ -752,6 +834,12 @@ git-tree-sha1 = "2ce41e0d042c60ecd131e9fb7154a3bfadbf50d3"
|
||||
uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a"
|
||||
version = "0.6.3"
|
||||
|
||||
[[deps.StructTypes]]
|
||||
deps = ["Dates", "UUIDs"]
|
||||
git-tree-sha1 = "d24a825a95a6d98c385001212dc9020d609f2d4f"
|
||||
uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4"
|
||||
version = "1.8.1"
|
||||
|
||||
[[deps.SuiteSparse]]
|
||||
deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"]
|
||||
uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
|
||||
@ -760,6 +848,12 @@ uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
|
||||
deps = ["Dates"]
|
||||
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
|
||||
|
||||
[[deps.TableOperations]]
|
||||
deps = ["SentinelArrays", "Tables", "Test"]
|
||||
git-tree-sha1 = "e383c87cf2a1dc41fa30c093b2a19877c83e1bc1"
|
||||
uuid = "ab02a1b2-a7df-11e8-156e-fb1833f50b87"
|
||||
version = "1.2.0"
|
||||
|
||||
[[deps.TableTraits]]
|
||||
deps = ["IteratorInterfaceExtensions"]
|
||||
git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39"
|
||||
|
@ -2,7 +2,13 @@
|
||||
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
|
||||
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
|
||||
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
|
||||
FreqTables = "da1fdf0e-e0ff-5433-a45f-9bb5ff651cb1"
|
||||
GLM = "38e38edf-8417-5370-95a0-9cbb8c7f171a"
|
||||
HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3"
|
||||
Impute = "f7bf1975-0170-51b9-8c5f-a992d46b9575"
|
||||
InlineStrings = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48"
|
||||
JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
|
||||
Missings = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
|
||||
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
|
||||
PooledArrays = "2dfb63ee-cc39-5dd5-95bd-886bf059d720"
|
||||
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
|
||||
|
214
ch05.jl
Normal file
214
ch05.jl
Normal file
@ -0,0 +1,214 @@
|
||||
# Bogumił Kamiński, 2022
|
||||
|
||||
# Codes for chapter 5
|
||||
|
||||
# Code for listing 5.1
|
||||
|
||||
using HTTP
|
||||
using JSON3
|
||||
query = "https://api.nbp.pl/api/exchangerates/rates/a/usd/" *
|
||||
"2020-06-01/?format=json" #A
|
||||
response = HTTP.get(query) #B
|
||||
json = JSON3.read(response.body) #C
|
||||
|
||||
# Code for the remainder of section 5.1.2
|
||||
|
||||
response.body
|
||||
|
||||
String(response.body)
|
||||
|
||||
response.body
|
||||
|
||||
json.table
|
||||
json.currency
|
||||
json.code
|
||||
json.rates
|
||||
|
||||
json.rates[1].mid
|
||||
|
||||
only(json.rates).mid
|
||||
|
||||
only([])
|
||||
only([1, 2])
|
||||
|
||||
# Code for listing 5.2
|
||||
|
||||
query = "https://api.nbp.pl/api/exchangerates/rates/a/usd/" *
|
||||
"2020-06-06/?format=json"
|
||||
response = HTTP.get(query)
|
||||
|
||||
# Code for listing 5.3
|
||||
|
||||
query = "https://api.nbp.pl/api/exchangerates/rates/a/usd/" *
|
||||
"2020-06-01/?format=json"
|
||||
try
|
||||
response = HTTP.get(query)
|
||||
json = JSON3.read(response.body)
|
||||
only(json.rates).mid
|
||||
catch e
|
||||
if e isa HTTP.ExceptionRequest.StatusError
|
||||
missing
|
||||
else
|
||||
rethrow(e)
|
||||
end
|
||||
end
|
||||
|
||||
query = "https://api.nbp.pl/api/exchangerates/rates/a/usd/" *
|
||||
"2020-06-06/?format=json"
|
||||
try
|
||||
response = HTTP.get(query)
|
||||
json = JSON3.read(response.body)
|
||||
only(json.rates).mid
|
||||
catch e
|
||||
if e isa HTTP.ExceptionRequest.StatusError
|
||||
missing
|
||||
else
|
||||
rethrow(e)
|
||||
end
|
||||
end
|
||||
|
||||
# Code for section 5.2
|
||||
|
||||
ismissing(missing)
|
||||
ismissing(1)
|
||||
|
||||
1 + missing
|
||||
sin(missing)
|
||||
|
||||
1 == missing
|
||||
1 > missing
|
||||
1 < missing
|
||||
|
||||
if missing
|
||||
print("this is not printed")
|
||||
end
|
||||
missing && true
|
||||
|
||||
coalesce(missing, true)
|
||||
coalesce(missing, false)
|
||||
|
||||
isequal(1, missing)
|
||||
isequal(missing, missing)
|
||||
isless(1, missing)
|
||||
isless(missing, missing)
|
||||
|
||||
isless(Inf, missing)
|
||||
|
||||
a = [1]
|
||||
b = [1]
|
||||
isequal(a, b)
|
||||
a === b
|
||||
|
||||
x = [1, missing, 3, 4, missing]
|
||||
|
||||
coalesce.(x, 0)
|
||||
|
||||
sum(x)
|
||||
|
||||
y = skipmissing(x)
|
||||
|
||||
sum(y)
|
||||
|
||||
sum(skipmissing(x))
|
||||
|
||||
fun(x::Int, y::Int) = x + y
|
||||
fun(1, 2)
|
||||
fun(1, missing)
|
||||
|
||||
using Missings
|
||||
fun2 = passmissing(fun)
|
||||
fun2(1, 2)
|
||||
fun2(1, missing)
|
||||
|
||||
# Code for section 5.3
|
||||
|
||||
using Dates
|
||||
d = Date("2020-06-01")
|
||||
|
||||
typeof(d)
|
||||
year(d)
|
||||
month(d)
|
||||
day(d)
|
||||
|
||||
dayofweek(d)
|
||||
dayname(d)
|
||||
|
||||
Date(2020, 6, 1)
|
||||
|
||||
dates = Date.(2020, 6, 1:30)
|
||||
|
||||
Day(1)
|
||||
|
||||
d
|
||||
d + Day(1)
|
||||
|
||||
Date(2020, 5, 20):Day(1):Date(2020, 7, 5)
|
||||
|
||||
collect(Date(2020, 5, 20):Day(1):Date(2020, 7, 5))
|
||||
|
||||
# Code for listing 5.6
|
||||
|
||||
function get_rate(date::Date)
|
||||
query = "https://api.nbp.pl/api/exchangerates/rates/" *
|
||||
"a/usd/$date/?format=json"
|
||||
try
|
||||
response = HTTP.get(query)
|
||||
json = JSON3.read(response.body)
|
||||
return only(json.rates).mid
|
||||
catch e
|
||||
if e isa HTTP.ExceptionRequest.StatusError
|
||||
return missing
|
||||
else
|
||||
rethrow(e)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Code for showing how string interpolation works
|
||||
|
||||
"https://api.nbp.pl/api/exchangerates/rates/" *
|
||||
"a/usd/$(dates[1])/?format=json"
|
||||
|
||||
"https://api.nbp.pl/api/exchangerates/rates/" *
|
||||
"a/usd/$dates[1]/?format=json"
|
||||
|
||||
# Code for listing 5.7
|
||||
|
||||
rates = get_rate.(dates)
|
||||
|
||||
# Code for section 5.4
|
||||
|
||||
using Statistics
|
||||
mean(rates)
|
||||
std(rates)
|
||||
|
||||
mean(skipmissing(rates))
|
||||
std(skipmissing(rates))
|
||||
|
||||
# Code for listing 5.8
|
||||
|
||||
using FreqTables
|
||||
proptable(dayname.(dates), ismissing.(rates), margins=1)
|
||||
|
||||
# Code showing how to specify a complex condition using broadcasting
|
||||
|
||||
dayname.(dates) .== "Thursday" .&& ismissing.(rates)
|
||||
|
||||
# Code for listing 5.9
|
||||
|
||||
dates[dayname.(dates) .== "Thursday" .&& ismissing.(rates)]
|
||||
|
||||
# Codes for plotting exchange rate data
|
||||
|
||||
using Plots
|
||||
plot(dates, rates, xlabel="day", ylabel="PLN/USD", legend=false)
|
||||
|
||||
rates_ok = .!ismissing.(rates)
|
||||
|
||||
plot(dates[rates_ok], rates[rates_ok],
|
||||
xlabel="day", ylabel="PLN/USD", legend=false)
|
||||
|
||||
using Impute
|
||||
rates_filled = Impute.interp(rates)
|
||||
|
||||
scatter!(dates, rates_filled)
|
Loading…
Reference in New Issue
Block a user