357.Why is Your 5G Sometimes Slower Than 4G? Uncovering Mobile Performance Secrets with SAS
Why is Your 5G Sometimes Slower Than 4G? Uncovering Mobile Performance Secrets with SAS
options nocenter;
1.DATASET CREATION WITH DATE FORMATS
data mobile_networks;
length Generation $3 Coverage $10 Country $15;
format Launch_Date date9.;
input Generation $ Speed_Mbps Latency_ms Coverage $ Country $ Launch_Date :date9.;
datalines;
2G 0.1 500 High India 01JAN1995
2G 0.2 480 High USA 01JAN1994
3G 2 200 Medium India 01JAN2004
3G 3 180 Medium UK 01JAN2003
4G 50 60 High India 01JAN2012
4G 70 50 High USA 01JAN2011
4G 100 45 Ultra SouthKorea 01JAN2010
5G 300 20 Medium India 01JAN2020
5G 500 15 High USA 01JAN2019
5G 800 10 Ultra China 01JAN2019
6G 1000 5 Low Japan 01JAN2030
6G 1200 3 Low SouthKorea 01JAN2030
6G 1500 1 Low USA 01JAN2031
;
run;
proc print data=mobile_networks;
run;
OUTPUT:
| Obs | Generation | Coverage | Country | Launch_Date | Speed_Mbps | Latency_ms |
|---|---|---|---|---|---|---|
| 1 | 2G | High | India | 01JAN1995 | 0.1 | 500 |
| 2 | 2G | High | USA | 01JAN1994 | 0.2 | 480 |
| 3 | 3G | Medium | India | 01JAN2004 | 2.0 | 200 |
| 4 | 3G | Medium | UK | 01JAN2003 | 3.0 | 180 |
| 5 | 4G | High | India | 01JAN2012 | 50.0 | 60 |
| 6 | 4G | High | USA | 01JAN2011 | 70.0 | 50 |
| 7 | 4G | Ultra | SouthKorea | 01JAN2010 | 100.0 | 45 |
| 8 | 5G | Medium | India | 01JAN2020 | 300.0 | 20 |
| 9 | 5G | High | USA | 01JAN2019 | 500.0 | 15 |
| 10 | 5G | Ultra | China | 01JAN2019 | 800.0 | 10 |
| 11 | 6G | Low | Japan | 01JAN2030 | 1000.0 | 5 |
| 12 | 6G | Low | SouthKorea | 01JAN2030 | 1200.0 | 3 |
| 13 | 6G | Low | USA | 01JAN2031 | 1500.0 | 1 |
2.DATE DERIVATIONS USING MDY, INTCK, INTNX
2.1 Years Since Launch
data mobile_dates;
set mobile_networks;
Years_Since_Launch = intck('year', Launch_Date, today());
Next_Upgrade = intnx('year', Launch_Date, 10, 'same');
format Next_Upgrade date9.;
run;
proc print data=mobile_dates;
run;
OUTPUT:
| Obs | Generation | Coverage | Country | Launch_Date | Speed_Mbps | Latency_ms | Years_Since_Launch | Next_Upgrade |
|---|---|---|---|---|---|---|---|---|
| 1 | 2G | High | India | 01JAN1995 | 0.1 | 500 | 31 | 01JAN2005 |
| 2 | 2G | High | USA | 01JAN1994 | 0.2 | 480 | 32 | 01JAN2004 |
| 3 | 3G | Medium | India | 01JAN2004 | 2.0 | 200 | 22 | 01JAN2014 |
| 4 | 3G | Medium | UK | 01JAN2003 | 3.0 | 180 | 23 | 01JAN2013 |
| 5 | 4G | High | India | 01JAN2012 | 50.0 | 60 | 14 | 01JAN2022 |
| 6 | 4G | High | USA | 01JAN2011 | 70.0 | 50 | 15 | 01JAN2021 |
| 7 | 4G | Ultra | SouthKorea | 01JAN2010 | 100.0 | 45 | 16 | 01JAN2020 |
| 8 | 5G | Medium | India | 01JAN2020 | 300.0 | 20 | 6 | 01JAN2030 |
| 9 | 5G | High | USA | 01JAN2019 | 500.0 | 15 | 7 | 01JAN2029 |
| 10 | 5G | Ultra | China | 01JAN2019 | 800.0 | 10 | 7 | 01JAN2029 |
| 11 | 6G | Low | Japan | 01JAN2030 | 1000.0 | 5 | -4 | 01JAN2040 |
| 12 | 6G | Low | SouthKorea | 01JAN2030 | 1200.0 | 3 | -4 | 01JAN2040 |
| 13 | 6G | Low | USA | 01JAN2031 | 1500.0 | 1 | -5 | 01JAN2041 |
3.SPEED TIER CLASSIFICATION USING MACROS
%macro speed_tier;
data mobile_tiered;
length Speed_Tier $10.;
set mobile_dates;
if Speed_Mbps < 1 then Speed_Tier = "Very Low";
else if Speed_Mbps < 10 then Speed_Tier = "Low";
else if Speed_Mbps < 100 then Speed_Tier = "Medium";
else if Speed_Mbps < 500 then Speed_Tier = "High";
else Speed_Tier = "Ultra High";
run;
proc print data=mobile_tiered;
run;
%mend speed_tier;
%speed_tier;
OUTPUT:
| Obs | Speed_Tier | Generation | Coverage | Country | Launch_Date | Speed_Mbps | Latency_ms | Years_Since_Launch | Next_Upgrade |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Very Low | 2G | High | India | 01JAN1995 | 0.1 | 500 | 31 | 01JAN2005 |
| 2 | Very Low | 2G | High | USA | 01JAN1994 | 0.2 | 480 | 32 | 01JAN2004 |
| 3 | Low | 3G | Medium | India | 01JAN2004 | 2.0 | 200 | 22 | 01JAN2014 |
| 4 | Low | 3G | Medium | UK | 01JAN2003 | 3.0 | 180 | 23 | 01JAN2013 |
| 5 | Medium | 4G | High | India | 01JAN2012 | 50.0 | 60 | 14 | 01JAN2022 |
| 6 | Medium | 4G | High | USA | 01JAN2011 | 70.0 | 50 | 15 | 01JAN2021 |
| 7 | High | 4G | Ultra | SouthKorea | 01JAN2010 | 100.0 | 45 | 16 | 01JAN2020 |
| 8 | High | 5G | Medium | India | 01JAN2020 | 300.0 | 20 | 6 | 01JAN2030 |
| 9 | Ultra High | 5G | High | USA | 01JAN2019 | 500.0 | 15 | 7 | 01JAN2029 |
| 10 | Ultra High | 5G | Ultra | China | 01JAN2019 | 800.0 | 10 | 7 | 01JAN2029 |
| 11 | Ultra High | 6G | Low | Japan | 01JAN2030 | 1000.0 | 5 | -4 | 01JAN2040 |
| 12 | Ultra High | 6G | Low | SouthKorea | 01JAN2030 | 1200.0 | 3 | -4 | 01JAN2040 |
| 13 | Ultra High | 6G | Low | USA | 01JAN2031 | 1500.0 | 1 | -5 | 01JAN2041 |
4.DATA QUERY USING PROC SQL
proc sql;
create table high_speed_networks as
select Generation,Country,Speed_Mbps,Latency_ms,Speed_Tier
from mobile_tiered
where Speed_Mbps >= 100
order by Speed_Mbps desc;
quit;
proc print data=high_speed_networks;
run;
OUTPUT:
| Obs | Generation | Country | Speed_Mbps | Latency_ms | Speed_Tier |
|---|---|---|---|---|---|
| 1 | 6G | USA | 1500 | 1 | Ultra High |
| 2 | 6G | SouthKorea | 1200 | 3 | Ultra High |
| 3 | 6G | Japan | 1000 | 5 | Ultra High |
| 4 | 5G | China | 800 | 10 | Ultra High |
| 5 | 5G | USA | 500 | 15 | Ultra High |
| 6 | 5G | India | 300 | 20 | High |
| 7 | 4G | SouthKorea | 100 | 45 | High |
5.STATISTICAL SUMMARY USING PROC MEANS
proc means data=mobile_tiered mean min max;
class Generation;
var Speed_Mbps Latency_ms Years_Since_Launch;
run;
OUTPUT:
The MEANS Procedure
| Generation | N Obs | Variable | Mean | Minimum | Maximum |
|---|---|---|---|---|---|
| 2G | 2 | Speed_Mbps Latency_ms Years_Since_Launch | 0.1500000 490.0000000 31.5000000 | 0.1000000 480.0000000 31.0000000 | 0.2000000 500.0000000 32.0000000 |
| 3G | 2 | Speed_Mbps Latency_ms Years_Since_Launch | 2.5000000 190.0000000 22.5000000 | 2.0000000 180.0000000 22.0000000 | 3.0000000 200.0000000 23.0000000 |
| 4G | 3 | Speed_Mbps Latency_ms Years_Since_Launch | 73.3333333 51.6666667 15.0000000 | 50.0000000 45.0000000 14.0000000 | 100.0000000 60.0000000 16.0000000 |
| 5G | 3 | Speed_Mbps Latency_ms Years_Since_Launch | 533.3333333 15.0000000 6.6666667 | 300.0000000 10.0000000 6.0000000 | 800.0000000 20.0000000 7.0000000 |
| 6G | 3 | Speed_Mbps Latency_ms Years_Since_Launch | 1233.33 3.0000000 -4.3333333 | 1000.00 1.0000000 -5.0000000 | 1500.00 5.0000000 -4.0000000 |
6.DATA VISUALIZATION USING PROC SGPLOT
6.1 Speed vs Latency Scatter Plot
proc sgplot data=mobile_tiered;
scatter x=Speed_Mbps y=Latency_ms / group=Generation;
xaxis label="Speed (Mbps)";
yaxis label="Latency (ms)";
title "Speed vs Latency Across Mobile Network Generations";
run;
OUTPUT:
7.ADDITIONAL DATE ANALYSIS – TIME TO NEXT GENERATION
proc sql;
select Generation,Country,
intck('year', Launch_Date, Next_Upgrade) as Upgrade_Cycle
from mobile_tiered;
quit;
OUTPUT:
| Generation | Country | Upgrade_Cycle |
|---|---|---|
| 2G | India | 10 |
| 2G | USA | 10 |
| 3G | India | 10 |
| 3G | UK | 10 |
| 4G | India | 10 |
| 4G | USA | 10 |
| 4G | SouthKorea | 10 |
| 5G | India | 10 |
| 5G | USA | 10 |
| 5G | China | 10 |
| 6G | Japan | 10 |
| 6G | SouthKorea | 10 |
| 6G | USA | 10 |
8.NETWORK MATURITY FLAG USING DATA STEP LOGIC
data mobile_maturity;
length Maturity_Status $18.;
set mobile_tiered;
/* Convert character to numeric if required */
Years_Since_Launch_N = input(Years_Since_Launch, best.);
if Years_Since_Launch_N >= 15 then Maturity_Status = "Mature";
else if 5 <= Years_Since_Launch_N <= 14 then
Maturity_Status = "Growing";
else if Years_Since_Launch_N < 5 then
Maturity_Status = "Emerging";
run;
proc print data=mobile_maturity;
run;
OUTPUT:
| Obs | Maturity_Status | Speed_Tier | Generation | Coverage | Country | Launch_Date | Speed_Mbps | Latency_ms | Years_Since_Launch | Next_Upgrade | Years_Since_Launch_N |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Mature | Very Low | 2G | High | India | 01JAN1995 | 0.1 | 500 | 31 | 01JAN2005 | 31 |
| 2 | Mature | Very Low | 2G | High | USA | 01JAN1994 | 0.2 | 480 | 32 | 01JAN2004 | 32 |
| 3 | Mature | Low | 3G | Medium | India | 01JAN2004 | 2.0 | 200 | 22 | 01JAN2014 | 22 |
| 4 | Mature | Low | 3G | Medium | UK | 01JAN2003 | 3.0 | 180 | 23 | 01JAN2013 | 23 |
| 5 | Growing | Medium | 4G | High | India | 01JAN2012 | 50.0 | 60 | 14 | 01JAN2022 | 14 |
| 6 | Mature | Medium | 4G | High | USA | 01JAN2011 | 70.0 | 50 | 15 | 01JAN2021 | 15 |
| 7 | Mature | High | 4G | Ultra | SouthKorea | 01JAN2010 | 100.0 | 45 | 16 | 01JAN2020 | 16 |
| 8 | Growing | High | 5G | Medium | India | 01JAN2020 | 300.0 | 20 | 6 | 01JAN2030 | 6 |
| 9 | Growing | Ultra High | 5G | High | USA | 01JAN2019 | 500.0 | 15 | 7 | 01JAN2029 | 7 |
| 10 | Growing | Ultra High | 5G | Ultra | China | 01JAN2019 | 800.0 | 10 | 7 | 01JAN2029 | 7 |
| 11 | Emerging | Ultra High | 6G | Low | Japan | 01JAN2030 | 1000.0 | 5 | -4 | 01JAN2040 | -4 |
| 12 | Emerging | Ultra High | 6G | Low | SouthKorea | 01JAN2030 | 1200.0 | 3 | -4 | 01JAN2040 | -4 |
| 13 | Emerging | Ultra High | 6G | Low | USA | 01JAN2031 | 1500.0 | 1 | -5 | 01JAN2041 | -5 |
9.GENERATION-WISE SPEED TREND VISUALIZATION (PROC SGPLOT)
proc sgplot data=mobile_maturity;
vbox Speed_Mbps / category=Generation;
yaxis label="Speed (Mbps)";
xaxis label="Mobile Generation";
title "Speed Trend Across Mobile Network Generations";
run;
About the Author:
SAS Learning Hub is a data analytics and SAS programming platform
focused on clinical, financial, and real-world data analysis. The content is
created by professionals with academic training in Pharmaceutics and hands-on
experience in Base SAS, PROC SQL, Macros, SDTM, and ADaM, providing practical
and industry-relevant SAS learning resources.
Disclaimer:
The datasets and analysis in this article are created for educational
and demonstration purposes only. They do not represent real Infrastructure
data.
Our Mission:
This blog provides industry-focused SAS programming tutorials and
analytics projects covering finance, healthcare, and technology.
This project is suitable for:
SAS Programmer Interviews
SAS Programmer Job Seekers
SAS Analysts
--->Follow our blog for more SAS-based analytics projects and
industry data models.
To deepen your understanding of SAS
analytics, please refer to our other data science and industry-focused projects
listed below:
Comments
Post a Comment