- Joined
- Jun 27, 2017
- Professional Status
- Certified General Appraiser
- State
- California
1. It's been a couple of months since the first upload, and in the meantime, many changes have been made to the GitHub version. earthUI on CRAN has fallen quite a bit behind. But there is now a new version for R - 0.8.0 for Windows, MacOS - and probably by tomorrow for Ubuntu.
https://cran.r-project.org/web/packages/earthUI/index.html
2. I am working on corresponding updates to glmnetUI() and mgcvUI() - which almost nobody uses so far.
3. And I am going to create an app that executes earthUI, and then feeds the output into glmnetUI and mgcvUI to give 3 different models, Sales Grids, and reports. All 3 values will be compared. I am finding that even with different random numbers, the results are consistent and pretty much the same. - Which adds support for the value conclusion. However, earthUI is the model most useful for appraisers because it models the price contribution of individual features, making comps comparable. glmnet () is lightning-fast, but the output is hard to interpret. mgcv() gives a smoothed function output, which may be preferable for displaying to some non-appraisers.
Downloads:
Some of the downloads are repeated from the same user, ref "dup_ration," so the number of unique downloads for the US is about 633 (=1135/4.85).
The country "??" is a number of small countries.
The real number of unique downloaders is around 600+ - from the main CRAN repository in Vienna, Austria, via Amazon or cloud.r-project.org. Many other download
sites are at universities, which account for a significant number of downloads. So the real number of unique users may be around 1000.
=== Per-country breakdown for earthUI ===
> print(by_country, n = Inf)
country downloads daily_uniques active_days pct_downloads dup_ratio
<chr> <int> <int> <int> <dbl> <dbl>
1 US 1135 234 75 72.7 4.85. (United States
2 ?? 75 38 38 4.8 1.97
3 CA 56 51 24 3.6 1.1 (Canada
4 CN 47 47 24 3 1 (China
5 GB 25 21 16 1.6 1.19. (Great Britain
6 CH 24 24 7 1.5 1 (Switzerland
7 RU 17 7 6 1.1 2.43. (Russia
8 DE 15 14 9 1 1.07 (Germany
9 JP 14 13 11 0.9 1.08. (Japan
10 FR 12 12 7 0.8 1 (France
11 UA 11 11 7 0.7 1 (Ukraine
12 JO 9 6 6 0.6 1.5 (Jordan
13 CL 8 5 5 0.5 1.6 (Chile
14 IT 8 7 6 0.5 1.14. (Italy
15 KR 8 8 8 0.5 1 (South Korea
16 NL 8 8 6 0.5 1 (Netharlands
17 BR 5 5 4 0.3 1
18 HU 5 4 4 0.3 1.25
19 ID 5 5 4 0.3 1
20 PL 5 5 5 0.3 1
21 UZ 5 5 2 0.3 1
22 CZ 4 4 4 0.3 1
23 IN 4 4 4 0.3 1
24 HK 3 3 3 0.2 1 (Hong Kong
25 PT 3 3 3 0.2 1
26 SE 3 2 2 0.2 1.5
27 TR 3 3 3 0.2 1
28 VN 3 3 3 0.2 1
29 ZA 3 3 3 0.2 1
30 AE 2 2 2 0.1 1
31 AR 2 2 2 0.1 1
32 BY 2 2 2 0.1 1
33 CO 2 2 2 0.1 1
34 DK 2 2 2 0.1 1
35 IQ 2 2 1 0.1 1
36 IR 2 1 1 0.1 2
37 RO 2 2 1 0.1 1
38 SA 2 2 2 0.1 1
39 ZW 2 2 2 0.1 1
40 BN 1 1 1 0.1 1
41 ES 1 1 1 0.1 1
42 GH 1 1 1 0.1 1
43 GR 1 1 1 0.1 1
44 JM 1 1 1 0.1 1
45 KE 1 1 1 0.1 1
46 KZ 1 1 1 0.1 1
47 LB 1 1 1 0.1 1
48 MA 1 1 1 0.1 1
49 MX 1 1 1 0.1 1
50 MY 1 1 1 0.1 1
51 NO 1 1 1 0.1 1
52 PE 1 1 1 0.1 1
53 PK 1 1 1 0.1 1
54 SG 1 1 1 0.1 1
55 SI 1 1 1 0.1 1
56 SY b 1 1 0.1 1
57 TN 1 1 1 0.1 1
>
> # ---- 5b. US vs rest-of-world (mirror-share-sensitive cut) --------------
> cat("\n=== US vs non-US ===\n")
=== US vs non-US ===
> all_rows |>
+ mutate(bucket = ifelse(country == "US", "US", "non-US")) |>
+ group_by(bucket) |>
+ summarise(downloads = n(), .groups = "drop") |>
+ mutate(pct = round(100 * downloads / sum(downloads), 1)) |>
+ print()
# A tibble: 2 × 3
bucket downloads pct
<chr> <int> <dbl>
1 US 1135 72.7
2 non-US 426 27.3
>
> # ---- 5c. Cross-check raw-log total against the aggregated API ----------
> agg <- sum(cran_downloads(packages = pkg, from = from, to = to)$count)
> cat(sprintf("\nAPI total: %d | raw-log total: %d\n", agg, nrow(all_rows)))
API total: 1561 | raw-log total: 1561
https://cran.r-project.org/web/packages/earthUI/index.html
2. I am working on corresponding updates to glmnetUI() and mgcvUI() - which almost nobody uses so far.
3. And I am going to create an app that executes earthUI, and then feeds the output into glmnetUI and mgcvUI to give 3 different models, Sales Grids, and reports. All 3 values will be compared. I am finding that even with different random numbers, the results are consistent and pretty much the same. - Which adds support for the value conclusion. However, earthUI is the model most useful for appraisers because it models the price contribution of individual features, making comps comparable. glmnet () is lightning-fast, but the output is hard to interpret. mgcv() gives a smoothed function output, which may be preferable for displaying to some non-appraisers.
Downloads:
Some of the downloads are repeated from the same user, ref "dup_ration," so the number of unique downloads for the US is about 633 (=1135/4.85).
The country "??" is a number of small countries.
The real number of unique downloaders is around 600+ - from the main CRAN repository in Vienna, Austria, via Amazon or cloud.r-project.org. Many other download
sites are at universities, which account for a significant number of downloads. So the real number of unique users may be around 1000.
=== Per-country breakdown for earthUI ===
> print(by_country, n = Inf)
country downloads daily_uniques active_days pct_downloads dup_ratio
<chr> <int> <int> <int> <dbl> <dbl>
1 US 1135 234 75 72.7 4.85. (United States
2 ?? 75 38 38 4.8 1.97
3 CA 56 51 24 3.6 1.1 (Canada
4 CN 47 47 24 3 1 (China
5 GB 25 21 16 1.6 1.19. (Great Britain
6 CH 24 24 7 1.5 1 (Switzerland
7 RU 17 7 6 1.1 2.43. (Russia
8 DE 15 14 9 1 1.07 (Germany
9 JP 14 13 11 0.9 1.08. (Japan
10 FR 12 12 7 0.8 1 (France
11 UA 11 11 7 0.7 1 (Ukraine
12 JO 9 6 6 0.6 1.5 (Jordan
13 CL 8 5 5 0.5 1.6 (Chile
14 IT 8 7 6 0.5 1.14. (Italy
15 KR 8 8 8 0.5 1 (South Korea
16 NL 8 8 6 0.5 1 (Netharlands
17 BR 5 5 4 0.3 1
18 HU 5 4 4 0.3 1.25
19 ID 5 5 4 0.3 1
20 PL 5 5 5 0.3 1
21 UZ 5 5 2 0.3 1
22 CZ 4 4 4 0.3 1
23 IN 4 4 4 0.3 1
24 HK 3 3 3 0.2 1 (Hong Kong
25 PT 3 3 3 0.2 1
26 SE 3 2 2 0.2 1.5
27 TR 3 3 3 0.2 1
28 VN 3 3 3 0.2 1
29 ZA 3 3 3 0.2 1
30 AE 2 2 2 0.1 1
31 AR 2 2 2 0.1 1
32 BY 2 2 2 0.1 1
33 CO 2 2 2 0.1 1
34 DK 2 2 2 0.1 1
35 IQ 2 2 1 0.1 1
36 IR 2 1 1 0.1 2
37 RO 2 2 1 0.1 1
38 SA 2 2 2 0.1 1
39 ZW 2 2 2 0.1 1
40 BN 1 1 1 0.1 1
41 ES 1 1 1 0.1 1
42 GH 1 1 1 0.1 1
43 GR 1 1 1 0.1 1
44 JM 1 1 1 0.1 1
45 KE 1 1 1 0.1 1
46 KZ 1 1 1 0.1 1
47 LB 1 1 1 0.1 1
48 MA 1 1 1 0.1 1
49 MX 1 1 1 0.1 1
50 MY 1 1 1 0.1 1
51 NO 1 1 1 0.1 1
52 PE 1 1 1 0.1 1
53 PK 1 1 1 0.1 1
54 SG 1 1 1 0.1 1
55 SI 1 1 1 0.1 1
56 SY b 1 1 0.1 1
57 TN 1 1 1 0.1 1
>
> # ---- 5b. US vs rest-of-world (mirror-share-sensitive cut) --------------
> cat("\n=== US vs non-US ===\n")
=== US vs non-US ===
> all_rows |>
+ mutate(bucket = ifelse(country == "US", "US", "non-US")) |>
+ group_by(bucket) |>
+ summarise(downloads = n(), .groups = "drop") |>
+ mutate(pct = round(100 * downloads / sum(downloads), 1)) |>
+ print()
# A tibble: 2 × 3
bucket downloads pct
<chr> <int> <dbl>
1 US 1135 72.7
2 non-US 426 27.3
>
> # ---- 5c. Cross-check raw-log total against the aggregated API ----------
> agg <- sum(cran_downloads(packages = pkg, from = from, to = to)$count)
> cat(sprintf("\nAPI total: %d | raw-log total: %d\n", agg, nrow(all_rows)))
API total: 1561 | raw-log total: 1561