Estimating Electricity Demand of Sub-Saharan Africa Using AI

Published
Jul 8, 2021
Reading Time
Rate this post
(3 votes)
Estimating Electricity Demand of Sub-Saharan Africa Using AI

ACF

ID81233
keyfield_631f4d7797230
labelSummary
nameblog_summary
prefixacf
typewysiwyg
value<p>Sub-Saharan Africa has 600 million people who do not have access to electricity. <span style="font-weight: 400;">In this study, we have been able to go beyond typical kWh/m² benchmarks and provide two linear models that can estimate residential electricity demand given a household’s monthly income and access to water. </span></p>
parent52446
wrapperArray
tabsall
toolbarbasic
_nameblog_summary
_valid1

Module Settings

custom_identifierSummary
acf_namefield_631f4d7797230
is_author_acf_fieldoff
post_object_acf_namenone
author_field_typeauthor_post
linked_user_acf_namenone
type_taxonomy_acf_namenone
acf_tagspan
show_labeloff
label_seperator:
visibilityon
empty_value_optionhide_module
use_iconoff
icon_color#7EBEC5
use_circleoff
circle_color#7EBEC5
use_circle_borderoff
circle_border_color#7EBEC5
use_icon_font_sizeoff
icon_image_placementleft
image_mobile_stackinginitial
return_formatarray
image_link_urloff
image_link_url_acf_namenone
checkbox_stylearray
checkbox_radio_returnlabel
checkbox_radio_value_typeoff
checkbox_radio_linkoff
link_buttonoff
email_subjectnone
email_body_afternone
add_css_classoff
add_css_loop_layoutoff
add_css_class_selectorbody
link_new_taboff
link_name_acfoff
link_name_acf_namenone
url_link_iconoff
image_sizefull
true_false_conditionoff
true_false_condition_css_selector.et_pb_button
true_false_text_trueTrue
true_false_text_falseFalse
is_audiooff
is_videooff
video_loopon
video_autoplayon
is_oembed_videooff
defer_videooff
defer_video_iconI||divi||400
video_icon_font_sizeoff
pretify_textoff
pretify_seperator,
number_decimal.
show_value_if_zerooff
text_imageoff
is_options_pageoff
is_repeater_loop_layoutoff
linked_post_stylecustom
link_post_seperator,
link_to_post_objecton
loop_layoutnone
columns4
columns_tablet2
columns_mobile1
repeater_dyn_btn_acfnone
text_before_positionsame_line
label_positionsame_line
vertical_alignmentmiddle
admin_labelSummary
module_classsummary
_builder_version4.16
_module_presetdefault
title_css_font_size14px
title_css_letter_spacing0px
title_css_line_height1em
acf_label_css_font_size14px
acf_label_css_letter_spacing0px
acf_label_css_line_height1em
label_css_text_color#333333
label_css_font_size20px
label_css_letter_spacing0px
label_css_line_height23.5px
text_before_css_font_size14px
text_before_css_letter_spacing0px
text_before_css_line_height1em
seperator_font_size14px
seperator_letter_spacing0px
seperator_line_height1em
relational_field_item_font_size14px
relational_field_item_letter_spacing0px
relational_field_item_line_height1em
background_enable_coloroff
use_background_color_gradientoff
background_color_gradient_repeatoff
background_color_gradient_typelinear
background_color_gradient_direction180deg
background_color_gradient_direction_radialcenter
background_color_gradient_stops#2b87da 0%|#29c4a9 100%
background_color_gradient_unit%
background_color_gradient_overlays_imageoff
background_color_gradient_start#2b87da
background_color_gradient_start_position0%
background_color_gradient_end#29c4a9
background_color_gradient_end_position100%
background_enable_imageon
parallaxoff
parallax_methodon
background_sizecover
background_image_widthauto
background_image_heightauto
background_positioncenter
background_horizontal_offset0
background_vertical_offset0
background_repeatno-repeat
background_blendnormal
background_enable_video_mp4on
background_enable_video_webmon
allow_player_pauseoff
background_video_pause_outside_viewporton
background_enable_pattern_styleoff
background_pattern_stylepolka-dots
background_pattern_colorrgba(0,0,0,0.2)
background_pattern_sizeinitial
background_pattern_widthauto
background_pattern_heightauto
background_pattern_repeat_origintop_left
background_pattern_horizontal_offset0
background_pattern_vertical_offset0
background_pattern_repeatrepeat
background_pattern_blend_modenormal
background_enable_mask_styleoff
background_mask_stylelayer-blob
background_mask_color#ffffff
background_mask_aspect_ratiolandscape
background_mask_sizestretch
background_mask_widthauto
background_mask_heightauto
background_mask_positioncenter
background_mask_horizontal_offset0
background_mask_vertical_offset0
background_mask_blend_modenormal
custom_buttonoff
button_text_size20
button_bg_use_color_gradientoff
button_bg_color_gradient_repeatoff
button_bg_color_gradient_typelinear
button_bg_color_gradient_direction180deg
button_bg_color_gradient_direction_radialcenter
button_bg_color_gradient_stops#2b87da 0%|#29c4a9 100%
button_bg_color_gradient_unit%
button_bg_color_gradient_overlays_imageoff
button_bg_color_gradient_start#2b87da
button_bg_color_gradient_start_position0%
button_bg_color_gradient_end#29c4a9
button_bg_color_gradient_end_position100%
button_bg_enable_imageon
button_bg_parallaxoff
button_bg_parallax_methodon
button_bg_sizecover
button_bg_image_widthauto
button_bg_image_heightauto
button_bg_positioncenter
button_bg_horizontal_offset0
button_bg_vertical_offset0
button_bg_repeatno-repeat
button_bg_blendnormal
button_bg_enable_video_mp4on
button_bg_enable_video_webmon
button_bg_allow_player_pauseoff
button_bg_video_pause_outside_viewporton
button_use_iconon
button_icon_placementright
button_on_hoveron
positioningnone
position_origin_atop_left
position_origin_ftop_left
position_origin_rtop_left
width660px
width_tablet90%
width_phone90%
width_last_editedon|phone
max_widthnone
module_alignmentcenter
min_heightauto
heightauto
max_heightnone
custom_margin60px||60px||true|false
custom_margin_tablet50px||50px||true|false
custom_margin_phone50px||50px||true|false
custom_margin_last_editedon|phone
custom_padding24px|21px|24px|21px|true|true
filter_hue_rotate0deg
filter_saturate100%
filter_brightness100%
filter_contrast100%
filter_invert0%
filter_sepia0%
filter_opacity100%
filter_blur0px
mix_blend_modenormal
animation_stylenone
animation_directioncenter
animation_duration1000ms
animation_delay0ms
animation_intensity_slide50%
animation_intensity_zoom50%
animation_intensity_flip50%
animation_intensity_fold50%
animation_intensity_roll50%
animation_starting_opacity0%
animation_speed_curveease-in-out
animation_repeatonce
hover_transition_duration300ms
hover_transition_delay0ms
hover_transition_speed_curveease
link_option_url_new_windowoff
sticky_positionnone
sticky_offset_top0px
sticky_offset_bottom0px
sticky_limit_topnone
sticky_limit_bottomnone
sticky_offset_surroundingon
sticky_transitionon
motion_trigger_startmiddle
hover_enabled0
label_css_font_size_tablet18px
label_css_font_size_phone16px
label_css_font_size_last_editedon|desktop
label_css_line_height_tablet23.5px
label_css_line_height_phone23.5px
label_css_line_height_last_editedon|phone
title_css_text_shadow_stylenone
title_css_text_shadow_horizontal_length0em
title_css_text_shadow_vertical_length0em
title_css_text_shadow_blur_strength0em
title_css_text_shadow_colorrgba(0,0,0,0.4)
acf_label_css_text_shadow_stylenone
acf_label_css_text_shadow_horizontal_length0em
acf_label_css_text_shadow_vertical_length0em
acf_label_css_text_shadow_blur_strength0em
acf_label_css_text_shadow_colorrgba(0,0,0,0.4)
label_css_text_shadow_stylenone
label_css_text_shadow_horizontal_length0em
label_css_text_shadow_vertical_length0em
label_css_text_shadow_blur_strength0em
label_css_text_shadow_colorrgba(0,0,0,0.4)
text_before_css_text_shadow_stylenone
text_before_css_text_shadow_horizontal_length0em
text_before_css_text_shadow_vertical_length0em
text_before_css_text_shadow_blur_strength0em
text_before_css_text_shadow_colorrgba(0,0,0,0.4)
seperator_text_shadow_stylenone
seperator_text_shadow_horizontal_length0em
seperator_text_shadow_vertical_length0em
seperator_text_shadow_blur_strength0em
seperator_text_shadow_colorrgba(0,0,0,0.4)
relational_field_item_text_shadow_stylenone
relational_field_item_text_shadow_horizontal_length0em
relational_field_item_text_shadow_vertical_length0em
relational_field_item_text_shadow_blur_strength0em
relational_field_item_text_shadow_colorrgba(0,0,0,0.4)
border_radiion|6px|6px|6px|6px
border_width_all2px
border_color_all#2c39b1
button_text_shadow_stylenone
button_text_shadow_horizontal_length0em
button_text_shadow_vertical_length0em
button_text_shadow_blur_strength0em
button_text_shadow_colorrgba(0,0,0,0.4)
box_shadow_stylepreset4
box_shadow_horizontal7px
box_shadow_vertical7px
box_shadow_blur0px
box_shadow_spread0px
box_shadow_color#e0e2ff
box_shadow_positionouter
box_shadow_style_buttonnone
box_shadow_color_buttonrgba(0,0,0,0.3)
box_shadow_position_buttonouter
text_shadow_stylenone
text_shadow_horizontal_length0em
text_shadow_vertical_length0em
text_shadow_blur_strength0em
text_shadow_colorrgba(0,0,0,0.4)
disabledoff
lockedoff
global_colors_info{}

Sub-Saharan Africa has 600 million people who do not have access to electricity. In this study, we have been able to go beyond typical kWh/m² benchmarks and provide two linear models that can estimate residential electricity demand given a household’s monthly income and access to water. 

Execution time: 0.0011 seconds

Execution time: 0.0002 seconds

How we developed (what we believe to be) the most comprehensive residential energy benchmarking analysis of its kind for Sub-Saharan Africa.

Electricity is a driving force behind our most fundamental services; from healthcare to education to refrigeration and lighting in our homes. Without the proliferation of electric power grids in the 20th century, our world would not be the fluorescent, hyper-connected place as we know it. Despite the AC power grid being an invention of the 1880s, it has still not reached many of the people of today. In fact, almost 800 million people do not have access to electricity, with around 600 million of those residing in Sub-Saharan Africa[1].

Yep, that’s right, 600 million people do not have access to electricity in Sub-Saharan Africa.

For Africa to prosper and reap the benefits of 21st-century technological advancements, we must provide it with cheap and reliable electricity. Furthermore, it is in all of our interests to generate that electricity without the emission of greenhouse gases. Providing that electricity from fossil fuel sources would be myopic; not only from an environmental standpoint but also when considering the economics. According to the International Energy Agency (IEA), solar photovoltaic (PV) power is now the cheapest form of electricity – yes, even cheaper than coal[2].

Electricity consumption analysis in Sub Saharan Africa - Omdena

Figure 1: Number of People Without Access to Electricity in 2019 Chart: Omdena, Data: IEA[1]

This opportunity has been seized by NeedEnergy, an energy-tech start-up that is attempting to leverage modern data science techniques to encourage the uptake of solar PV systems in Sub-Saharan Africa. In early 2021, NeedEnergy partnered with voluntary organization Omdena to gather a team of data scientists to take on this challenge.

In this blog post, I will share some insights from my journey as a Machine Learning Engineer, collaborating with a team of 40 talented changemakers from around the world, in my first project with Omdena.

Sizing a solar photovoltaic (PV) system

When designing any new PV system, we must size it according to the demands of the consumer in question. Too small a PV system would not generate enough energy for their needs; too big a system would be unnecessarily expensive. To size an appropriate PV solution, we must understand the electricity consumption of the user.

Ideally, when sizing a PV system for a consumer, we would have data on their electricity consumption down to an hourly granularity, so we can understand how their demand varies throughout the day. This poses a problem for NeedEnergy because electricity consumption data is not yet widely available in Sub-Saharan Africa. The adoption of smart meters in recent years is developing a wealth of highly granular demand data throughout the world, though these devices are less common in Africa. If electricity consumption data is not available for African consumers, how might we estimate their demands?

Could we use building parameters or socio-economic indicators to estimate the electricity demand?

Our approach – will socio-economic indicators work?

Using building parameters is a common method within the energy sector to estimate the demands of buildings. Energy benchmarks, usually provided in units of kWh/m²/year, are widely available for a variety of building types in Europe and North America. These benchmarks are used heavily in the industry; they are a simple, quick, and effective way of estimating building energy demand. Using socio-economic indicators, however, is not a method that I have come across in the industry, though it feels like a pretty reasonable thing to do, particularly for developing countries. One could assume that there is a relationship between the wealth and standard of living of a consumer, and the magnitude of their electricity demand. 

Upon starting this project, I looked for such energy benchmarks that might be applicable to this continent but was surprised to find that they were not widely available. A few estimations of typical household consumption exist, but I found no analysis that could break down residential demands by building size and/or economic status. But wouldn’t it be great if such an analysis existed? Wouldn’t it be awesome to have sophisticated benchmarks that could estimate demand not only on building size but also on socio-economic indicators? Yes, it would, and that’s exactly what we did, please read on to find out more.

The goldmine – 5GB of 91M rows dataset!

Energy benchmarks can only be developed once we have a substantial dataset such that the average consumption values could be considered reliable. Whilst I stated in the previous section that data on energy consumption in Sub-Saharan Africa is not in abundance (which appears to be true), during this project we managed to obtain an absolute goldmine. In 2019, the Domestic Electrical Load (DEL) study datasets for South Africa were published[3], which are proclaimed to be the largest of their kind for Africa. The datasets must be obtained with permission from DataFrist, University of Cape Town.

When I saw the sheer quantity and type of information available within these datasets I couldn’t quite believe it. Over the years of 1994 to 2014, about a year’s worth of hourly consumption data was collected on 12,000 residential households connected to the South African grid. The complete dataset had over 91 million rows and came to 5Gb – at this size, your standard laptop with 8Gb of RAM really starts to struggle! But not only did we have consumption data, but we also had survey data for each household that collected 50 further variables including a household’s floor area, building materials, appliance use, and financial income.

A few of the key variables available in the survey dataset

Floor areaWall materialNumber of adults
Monthly incomeWater accessNumber of children
Roof materialYears electrifiedNumber of unemployed

On top of the abundance of data collected, a large proportion of households could be considered as low income, many of which had monthly incomes that are comparable to other countries in Sub-Saharan Africa. Less than half of the households used in the analysis had access to piped water in the home, more than two-thirds of the households had a corrugated iron or zinc roof, and about 1,100 of the dwellings were built with mud walls. Furthermore, the dataset covers a large number of newly electrified households, with 25% of the households having only had electricity for 4 years or less.  These household characteristics have been plotted on the two heatmaps below, the number of households has been split by income band, the darker colors represent a greater number of households.

Figure 2: Occurrence of Water Access and Wall Material Types Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 2: Occurrence of Water Access and Wall Material Types Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 3: Occurrence of Roof Material Types and Years Electrified Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 3: Occurrence of Roof Material Types and Years Electrified Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Whilst South Africa is way more developed than the rest of Sub-Saharan Africa, it is a country with high inequality and the demographics covered in this dataset have shown economic indicators that share similarities with the less developed parts of the continent. In the chart below, the 25th percentile and median monthly incomes in the dataset are compared to the mean and minimum wage monthly incomes of various other Sub-Saharan African countries. The 25th percentile income, at 230 US$ PPP, falls below many of the averages and touches close to some of the minimum wage incomes. 

Figure 4: Monthly Incomes in Sub-Saharan Africa Chart: Omdena, Data: The World Bank Research Observer[4]

Figure 4: Monthly Incomes in Sub-Saharan Africa Chart: Omdena, Data: The World Bank Research Observer[4]

All incomes shown have been adjusted for inflation and converted to the 2016 value of US dollars Power Purchasing Parity (PPP), which can be a better comparator of wages than standard US dollars as it takes into account the differing costs of goods and services within each country.

Annual energy demand

After wrangling and data cleaning to remove erroneously low and high energy per meter squared values, the number of households was whittled down 5,500. The first metric investigated was the annual energy consumption (in kWh) of the households. In Figure 5 below, you will see the distribution of values described by a box and whisker plot. Note that the highest energy consumption values have been identified as outliers.

Previous work by McKinsey has identified that an urban household in Sub-Saharan Africa may consume 2,072kWh/year, whilst a rural household will consume just 480kWh/year[5]. To provide some further context, an average European household may consume in the region of 3,700kWh/year[6]. The median value of annual energy consumption is 30% greater than McKinsey’s estimate for an urban household, which is not far off, though the rural estimate is well below the 25th percentile.

Figure 5: Range of Annual Energy Consumption Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 5: Range of Annual Energy Consumption Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Identifying energy benchmarks

1. Size of a building

The industry standard of building energy benchmarks is to normalize energy demand against the floor area of the building. A building’s size should be a good indicator of its consumption; larger buildings are more likely to have more lights, more appliances, more occupants, etc. Previous studies have found strong linear correlations between building energy consumption and floor area, with R² values as high as 0.9[7], however, investigating this relationship in this dataset did not yield such an encouraging result. A linear relationship can just about be seen in the chart below; the linear R² is very low at 0.1, but not statistically insignificant. 

Figure 6: Annual Energy Consumption against Floor Area Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 6: Annual Energy Consumption against Floor Area Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Plotting a box and whisker plot highlights many outliers at the upper end. However, the mean and median values feel reasonable, at 60kWh/m²/year and 44kWh/m²/year respectively. A new build household in the UK (which has to adhere to certain energy efficiency standards) may have an electricity consumption in the range of 34-104kWh/m²/year[8].

Figure 7: Range of Annual Energy Consumption per Meter Squared Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 7: Range of Annual Energy Consumption per Meter Squared Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

There is clearly a huge spread in energy consumption values, with much of the upper end feeling unreasonable high, the median is probably a better indicator of typical energy performance, as the mean is being skewed by the high values. In Figure 8, we have plotted annual energy consumption against floor area again, but this time the median energy consumption has been calculated in bins of 25m² of floor area. We see a much nicer correlation, there is a clear positive relationship between floor area and median values of energy consumption in this dataset.

Figure 8: Median Annual Energy Consumption against Floor Area Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 8: Median Annual Energy Consumption against Floor Area Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

2. Number of occupants

One would expect that the number of occupants would impact the energy demands of a building. With increasing inhabitants, it would be reasonable to assume a greater use of electrical appliances. However, the data has not shown a correlation between two variables, as indicated by the extremely weak R² value in Figure 9 below. The cause of this poor relationship is unknown, though it may be due to the varying ratios of adults to children within households, or it could be that we have a very heterogeneous population in terms of energy consumption, i.e. wealthier individuals may consume more energy than those that have less money. 

Figure 9: Annual Energy Consumption against Number of Occupants Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 9: Annual Energy Consumption against Number of Occupants Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

3. Household income

As a household’s financial income increases it could be expected that their electricity consumption may increase, due to less concern over energy bills and a greater number of appliances, with those appliances potentially being more power-hungry than their less luxurious counterparts. Conversely, a higher-income household may be purchasing higher-end products that are more energy-efficient. For developing countries, the effects of increasing energy efficiency are thought to be less strong than the effects of increasing energy consumption with increasing income.

In the chart below, when looking at the scatter points, a relationship is not easily visible, however, the linear line has shown a positive relationship. Interestingly, its R² value is actually better than the R² seen in the plot against the floor area.

Figure 10: Annual Energy Consumption against Monthly Income Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 10: Annual Energy Consumption against Monthly Income Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Calculating the median annual energy consumption in bins of 100 US$ PPP of monthly income, we see a very strong correlation. It is clear that the higher-income households are consuming more electricity when looking at the median values.

Figure 11: Median Annual Energy Consumption against Number of Occupants Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 11: Median Annual Energy Consumption against Number of Occupants Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

4. Water Access

An interesting finding has been that a household’s access to water has a significant impact on its electricity consumption. Those with access to piped running water in their homes are consuming more electricity than those that collect water from a nearby river. The access to water is likely to be an indication of wealth, which we have seen to make an impact on energy consumption, but it is also thought that access to running water may increase the use of electric water heaters. Households that do not have running water are more likely to be in rural settings where access to infrastructure is less likely, such households may have a greater tendency to use biomass for water heating than urban dwellings.

From the box and whisker plots in Figure 12 below, it can be seen that those with a tap in their house have the highest median energy consumption (highlighted by the orange line in the box), then there is a significant drop in households that either get running water from a tap in their yard, from a street tap and those that collect water from a nearby river, dam or borehole.

Figure 12: Annual Energy Consumption for Water Access Type Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 12: Annual Energy Consumption for Water Access Type Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

5. Demand models

The aim of this analysis was to develop energy benchmarks for households in Sub-Saharan Africa. The industry standard energy per meter squared metric has shown a huge range in values, which is surprising given that the dataset contained predominantly residential households. To attempt to improve on this standard benchmark, the below two charts display linear models which incorporate the effects of monthly income and water access on the median energy per meter squared, in monthly income bins of 100 US$ PPP.

Figure 13: Median Energy per Meter Squared against Income Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 13: Median Energy per Meter Squared against Income Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

The relationship with monthly income alone retains a strong positive correlation, with an R² of almost 0.8. Interestingly, when splitting for the water access type, the relationship with increasing income is not as strong, though there is still a weak positive trend (see Figure 14 below). The inside tap model includes households that were labeled as having “tap inside the house”, the outside model includes those households that were labeled as having  “tap in the yard”, “block/street taps” or “nearby river/dam/borehole”.

Figure 14: Median Energy per Meter Squared against Income, split by Water Access Type Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 14: Median Energy per Meter Squared against Income, split by Water Access Type Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

6. Daily load profiles

When sizing a PV system, we not only want to understand a household’s annual or daily energy demand but also how that demand varies throughout the day. Solar PV generation will follow a similar pattern each day that coincides with the amount of solar irradiance hitting the earth’s surface. The sun comes up in the morning, reaches a peak around midday, then tails off in the evening. Ideally, we would consume electricity at the same time as we generate from PV, otherwise, we will need to take electricity from the grid, or have some kind of backup storage such as batteries.

The hourly level of granularity in this South African dataset meant that we could analyze thousands of daily load profiles. An average weekday and weekend day profile was calculated for each of the 5,500 households. The profiles were then normalized by dividing each hour’s consumption by the total daily consumption, this results in each hourly point being the fraction of daily energy consumed at that hour. The sum of all the hourly points will be equal to one. This method allows us to compare the shape of consumption across different households equally, as the shape is irrespective of the magnitude of consumption.

The plot below shows all 5,500-weekday profiles; it’s a bit of a messy hairball of a plot, though you can just about make out a dominant residential profile (the average profile is shown in black). The demand picks up in the morning, tails off during the day (when the inhabitants go out to work or school), then the demand shoots up again in the evening as people return home. The biggest peak is typically in the evening, as lighting will start to be switched on and people relax in front of the TV after a hard day’s work.

Figure 15: Average Weekday Load Profiles  Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Figure 15: Average Weekday Load Profiles  Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

The average weekend profile is a little bit smoother, it is less spikey in the morning, presumably due to fewer people rushing to get up for their daily business. The demand stays higher in the daytime than the weekday profile, as more inhabitants will be at home rather than at work or school; the biggest peak still occurs in the evening.

Figure 16: Average Weekend Load Profiles  Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3

Figure 16: Average Weekend Load Profiles  Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3

Finding the signal in the noise

In recent years, there have been numerous studies in using unsupervised machine learning techniques such as k-means clustering to identify dominant load profiles within large consumption datasets, Toussaint et al attempted multiple clustering techniques on this very dataset[9][10]. Let’s give sci-kit learn’s k-means algorithm a go, and see what profiles we can pull out. 

The plot below contains all of the 5,500 of the weekday profiles in grey, with the colored lines being the five clusters that k-means has managed to extract. Five clusters were chosen, partly informed by attempting the elbow method on the distortion present in the clusters, and partly just because five is a nice number. All five of the clusters follow a profile that is characteristically residential, except that some appear to be a bit more “spikier” than others. Cluster three, identified in green, has a particularly large evening peak, with its daytime consumption being lower than the others.

Figure 17: k-means Clustered Weekday Load Profiles  Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Unfortunately, there is no easy way to link these different clusters back to any building parameter or socio-economic variable. We wanted to see if we could connect distinct load profiles back to our findings on annual energy consumption. Average profile shapes were analyzed for increasing bins of 100 US$ PPP income, the load profiles did not appear to show any relationship with its income, a household’s water access, however, did have an impact. The outside water access households had a higher peak in the evenings and a lower midday consumption than those with the inside water access (see Figure 18 below).

Omdena Blog

Figure 18: Weekday and Weekend Profiles split by Water Access Chart: Omdena, Data: Domestic Electrical Load (DEL), South Africa[3]

Putting it all together

So how can we use all of this insight to help us in sizing a new PV system? The modeling of PV systems is commonly undertaken using a typical year’s worth of hourly electricity demand and solar irradiance data. We can now generate a year’s worth of electricity demand data using the insights gained above.

We developed the linear models for inside and outside water access (as shown in Figure 14) for both weekday and weekend demand (as greater consumption is seen on weekends). Then, using the load profiles determined in Figure 18, we can build a full year’s worth of hourly consumption data ready for modeling. This was all wrapped up into a nice, easy-to-use dashboard, check out Figure 19 below.

Figure 19: Residential Electricity Demand Estimation Dashboard Source: Omdena

Figure 19: Residential Demand Estimation Dashboard Source: Omdena

Conclusion

With a better understanding of electricity consumption in this region, we can better size new solar PV systems. In this study, we have been able to go beyond typical kWh/m² benchmarks and provide two linear models that can estimate residential electricity demand given a household’s monthly income and access to water. As someone who uses energy benchmarks in their day-to-day work, I’ve never had the luxury of these extra variables in estimating energy demand. How applicable the energy consumption values in this dataset are to countries outside of South Africa is debatable, and needs further research, though I sincerely hope that the insights gained here will be of use in estimating electricity demand in the countries that need it the most.

Gratitude

Special thanks go out to Arna Karick, Charlotte Savage, Teresa Scholz, and Zayd Vawda for their work on this analysis. My further gratitude goes out to all 40 volunteers who tirelessly devoted their own time to help improve clean energy access on this continent. Finally, thanks to Omdena and NeedEnergy for making this happen.

Afterthoughts

This has been my first Omdena project; I came here for two reasons: as a chance to use my energy sector knowledge for social good, but also as an opportunity to develop my skills in data science and machine learning. There really is no better way of developing your capabilities than to get stuck into a real problem. So if you are looking to build your skills, sign up for a project with Omdena, get real experience, and make the world a better place in the process. 

ACF

ID58157
keyfield_623341deec7d0
labelPhoto
namephoto
prefixacf
typeimage
valueArray
menu_order1
parent58155
wrapperArray
return_formatarray
preview_sizethumbnail
libraryall
_namephoto
_valid1

Module Settings

custom_identifierImage
acf_namefield_623341deec7d0
is_author_acf_fieldoff
post_object_acf_namenone
author_field_typeauthor_post
linked_user_acf_namenone
type_taxonomy_acf_namenone
acf_tagdiv
show_labeloff
label_seperator:
visibilityon
empty_value_optionhide_module
use_iconoff
icon_color#7EBEC5
use_circleoff
circle_color#7EBEC5
use_circle_borderoff
circle_border_color#7EBEC5
use_icon_font_sizeoff
icon_image_placementleft
image_mobile_stackingcolumn
return_formatarray
image_link_urloff
image_link_url_acf_namenone
checkbox_stylearray
checkbox_radio_returnlabel
checkbox_radio_value_typeoff
checkbox_radio_linkoff
link_buttonoff
email_subjectnone
email_body_afternone
add_css_classoff
add_css_loop_layoutoff
add_css_class_selectorbody
link_new_tabon
link_name_acfoff
link_name_acf_namenone
url_link_iconoff
image_sizefull
true_false_conditionoff
true_false_condition_css_selector.et_pb_button
true_false_text_trueTrue
true_false_text_falseFalse
is_audiooff
is_videooff
video_loopon
video_autoplayon
is_oembed_videooff
defer_videooff
defer_video_iconI||divi||400
video_icon_font_sizeoff
pretify_textoff
pretify_seperator,
number_decimal.
show_value_if_zerooff
text_imageoff
is_options_pageoff
is_repeater_loop_layoutoff
linked_post_stylecustom
link_post_seperator,
link_to_post_objecton
loop_layoutnone
columns4
columns_tablet2
columns_mobile1
repeater_dyn_btn_acfnone
button_alignmentcenter
text_before_positionsame_line
label_positionsame_line
vertical_alignmentmiddle
image_max_width_last_editedon|phone
admin_labelPhoto
_builder_version4.16
_module_presetdefault
title_css_font_size14px
title_css_letter_spacing0px
title_css_line_height1em
acf_label_css_font_size14px
acf_label_css_letter_spacing0px
acf_label_css_line_height1em
label_css_letter_spacing0px
text_before_css_font_size14px
text_before_css_letter_spacing0px
text_before_css_line_height1em
seperator_font_size14px
seperator_letter_spacing0px
seperator_line_height1em
relational_field_item_font_size14px
relational_field_item_letter_spacing0px
relational_field_item_line_height1em
background_enable_coloron
use_background_color_gradientoff
background_color_gradient_repeatoff
background_color_gradient_typelinear
background_color_gradient_direction180deg
background_color_gradient_direction_radialcenter
background_color_gradient_stops#2b87da 0%|#29c4a9 100%
background_color_gradient_unit%
background_color_gradient_overlays_imageoff
background_color_gradient_start#2b87da
background_color_gradient_start_position0%
background_color_gradient_end#29c4a9
background_color_gradient_end_position100%
background_enable_imageon
parallaxoff
parallax_methodon
background_sizecover
background_image_widthauto
background_image_heightauto
background_positioncenter
background_horizontal_offset0
background_vertical_offset0
background_repeatno-repeat
background_blendnormal
background_enable_video_mp4on
background_enable_video_webmon
allow_player_pauseoff
background_video_pause_outside_viewporton
background_enable_pattern_styleoff
background_pattern_stylepolka-dots
background_pattern_colorrgba(0,0,0,0.2)
background_pattern_sizeinitial
background_pattern_widthauto
background_pattern_heightauto
background_pattern_repeat_origintop_left
background_pattern_horizontal_offset0
background_pattern_vertical_offset0
background_pattern_repeatrepeat
background_pattern_blend_modenormal
background_enable_mask_styleoff
background_mask_stylelayer-blob
background_mask_color#ffffff
background_mask_aspect_ratiolandscape
background_mask_sizestretch
background_mask_widthauto
background_mask_heightauto
background_mask_positioncenter
background_mask_horizontal_offset0
background_mask_vertical_offset0
background_mask_blend_modenormal
custom_buttonoff
button_text_size20
button_bg_use_color_gradientoff
button_bg_color_gradient_repeatoff
button_bg_color_gradient_typelinear
button_bg_color_gradient_direction180deg
button_bg_color_gradient_direction_radialcenter
button_bg_color_gradient_stops#2b87da 0%|#29c4a9 100%
button_bg_color_gradient_unit%
button_bg_color_gradient_overlays_imageoff
button_bg_color_gradient_start#2b87da
button_bg_color_gradient_start_position0%
button_bg_color_gradient_end#29c4a9
button_bg_color_gradient_end_position100%
button_bg_enable_imageon
button_bg_parallaxoff
button_bg_parallax_methodon
button_bg_sizecover
button_bg_image_widthauto
button_bg_image_heightauto
button_bg_positioncenter
button_bg_horizontal_offset0
button_bg_vertical_offset0
button_bg_repeatno-repeat
button_bg_blendnormal
button_bg_enable_video_mp4on
button_bg_enable_video_webmon
button_bg_allow_player_pauseoff
button_bg_video_pause_outside_viewporton
button_use_iconon
button_icon_placementright
button_on_hoveron
positioningnone
position_origin_atop_left
position_origin_ftop_left
position_origin_rtop_left
width100%
max_widthnone
max_width_tablet25%
max_width_phone25%
max_width_last_editedon|tablet
module_alignmentcenter
min_heightauto
heightauto
max_heightnone
custom_margin_tablet||0px||false|false
custom_margin_phone||0px||false|false
custom_margin_last_editedon|phone
filter_hue_rotate0deg
filter_saturate100%
filter_brightness100%
filter_contrast100%
filter_invert0%
filter_sepia0%
filter_opacity100%
filter_blur0px
mix_blend_modenormal
animation_stylenone
animation_directioncenter
animation_duration1000ms
animation_delay0ms
animation_intensity_slide50%
animation_intensity_zoom50%
animation_intensity_flip50%
animation_intensity_fold50%
animation_intensity_roll50%
animation_starting_opacity0%
animation_speed_curveease-in-out
animation_repeatonce
hover_transition_duration300ms
hover_transition_delay0ms
hover_transition_speed_curveease
link_option_url_new_windowoff
sticky_positionnone
sticky_offset_top0px
sticky_offset_bottom0px
sticky_limit_topnone
sticky_limit_bottomnone
sticky_offset_surroundingon
sticky_transitionon
motion_trigger_startmiddle
hover_enabled0
title_css_text_shadow_stylenone
title_css_text_shadow_horizontal_length0em
title_css_text_shadow_vertical_length0em
title_css_text_shadow_blur_strength0em
title_css_text_shadow_colorrgba(0,0,0,0.4)
acf_label_css_text_shadow_stylenone
acf_label_css_text_shadow_horizontal_length0em
acf_label_css_text_shadow_vertical_length0em
acf_label_css_text_shadow_blur_strength0em
acf_label_css_text_shadow_colorrgba(0,0,0,0.4)
label_css_text_shadow_stylenone
label_css_text_shadow_horizontal_length0em
label_css_text_shadow_vertical_length0em
label_css_text_shadow_blur_strength0em
label_css_text_shadow_colorrgba(0,0,0,0.4)
text_before_css_text_shadow_stylenone
text_before_css_text_shadow_horizontal_length0em
text_before_css_text_shadow_vertical_length0em
text_before_css_text_shadow_blur_strength0em
text_before_css_text_shadow_colorrgba(0,0,0,0.4)
seperator_text_shadow_stylenone
seperator_text_shadow_horizontal_length0em
seperator_text_shadow_vertical_length0em
seperator_text_shadow_blur_strength0em
seperator_text_shadow_colorrgba(0,0,0,0.4)
relational_field_item_text_shadow_stylenone
relational_field_item_text_shadow_horizontal_length0em
relational_field_item_text_shadow_vertical_length0em
relational_field_item_text_shadow_blur_strength0em
relational_field_item_text_shadow_colorrgba(0,0,0,0.4)
border_radiion|100%|100%|100%|100%
border_radii_tableton||||
border_radii_phoneon|100%|100%|100%|100%
border_radii_last_editedon|phone
button_text_shadow_stylenone
button_text_shadow_horizontal_length0em
button_text_shadow_vertical_length0em
button_text_shadow_blur_strength0em
button_text_shadow_colorrgba(0,0,0,0.4)
box_shadow_stylenone
box_shadow_colorrgba(0,0,0,0.3)
box_shadow_positionouter
box_shadow_style_buttonnone
box_shadow_color_buttonrgba(0,0,0,0.3)
box_shadow_position_buttonouter
text_shadow_stylenone
text_shadow_horizontal_length0em
text_shadow_vertical_length0em
text_shadow_blur_strength0em
text_shadow_colorrgba(0,0,0,0.4)
disabledoff
global_colors_info{}
Joe McQuillen

Execution time: 0.0047 seconds

ACF

ID58156
keyfield_623341caec7cf
labelName
nameblog_author_name
prefixacf
typetext
valueJoe McQuillen
parent58155
wrapperArray
_nameblog_author_name
_valid1

Module Settings

custom_identifierACF Item
acf_namefield_623341caec7cf
is_author_acf_fieldoff
post_object_acf_namenone
author_field_typeauthor_post
linked_user_acf_namenone
type_taxonomy_acf_namenone
acf_tagp
show_labeloff
label_seperator:
visibilityon
empty_value_optionhide_module
use_iconoff
icon_color#7EBEC5
use_circleoff
circle_color#7EBEC5
use_circle_borderoff
circle_border_color#7EBEC5
use_icon_font_sizeoff
icon_image_placementleft
image_mobile_stackinginitial
return_formatarray
image_link_urloff
image_link_url_acf_namenone
checkbox_stylearray
checkbox_radio_returnlabel
checkbox_radio_value_typeoff
checkbox_radio_linkoff
link_buttonoff
email_subjectnone
email_body_afternone
add_css_classoff
add_css_loop_layoutoff
add_css_class_selectorbody
link_new_tabon
link_name_acfoff
link_name_acf_namenone
url_link_iconoff
image_sizefull
true_false_conditionoff
true_false_condition_css_selector.et_pb_button
true_false_text_trueTrue
true_false_text_falseFalse
is_audiooff
is_videooff
video_loopon
video_autoplayon
is_oembed_videooff
defer_videooff
defer_video_iconI||divi||400
video_icon_font_sizeoff
pretify_textoff
pretify_seperator,
number_decimal.
show_value_if_zerooff
text_imageoff
is_options_pageoff
is_repeater_loop_layoutoff
linked_post_stylecustom
link_post_seperator,
link_to_post_objecton
loop_layoutnone
columns4
columns_tablet2
columns_mobile1
repeater_dyn_btn_acfnone
text_before_positionsame_line
label_positionsame_line
vertical_alignmentmiddle
admin_labelName
_builder_version4.21.0
_module_presetdefault
title_css_text_alignleft
title_css_font_size14px
title_css_letter_spacing0px
title_css_line_height1em
acf_label_css_text_alignleft
acf_label_css_font_size14px
acf_label_css_letter_spacing0px
acf_label_css_line_height1em
label_css_fontRoboto|700|||||||
label_css_text_alignleft
label_css_letter_spacing0px
text_before_css_font_size14px
text_before_css_letter_spacing0px
text_before_css_line_height1em
seperator_font_size14px
seperator_letter_spacing0px
seperator_line_height1em
relational_field_item_font_size14px
relational_field_item_letter_spacing0px
relational_field_item_line_height1em
background_enable_coloron
use_background_color_gradientoff
background_color_gradient_repeatoff
background_color_gradient_typelinear
background_color_gradient_direction180deg
background_color_gradient_direction_radialcenter
background_color_gradient_stops#2b87da 0%|#29c4a9 100%
background_color_gradient_unit%
background_color_gradient_overlays_imageoff
background_color_gradient_start#2b87da
background_color_gradient_start_position0%
background_color_gradient_end#29c4a9
background_color_gradient_end_position100%
background_enable_imageon
parallaxoff
parallax_methodon
background_sizecover
background_image_widthauto
background_image_heightauto
background_positioncenter
background_horizontal_offset0
background_vertical_offset0
background_repeatno-repeat
background_blendnormal
background_enable_video_mp4on
background_enable_video_webmon
allow_player_pauseoff
background_video_pause_outside_viewporton
background_enable_pattern_styleoff
background_pattern_stylepolka-dots
background_pattern_colorrgba(0,0,0,0.2)
background_pattern_sizeinitial
background_pattern_widthauto
background_pattern_heightauto
background_pattern_repeat_origintop_left
background_pattern_horizontal_offset0
background_pattern_vertical_offset0
background_pattern_repeatrepeat
background_pattern_blend_modenormal
background_enable_mask_styleoff
background_mask_stylelayer-blob
background_mask_color#ffffff
background_mask_aspect_ratiolandscape
background_mask_sizestretch
background_mask_widthauto
background_mask_heightauto
background_mask_positioncenter
background_mask_horizontal_offset0
background_mask_vertical_offset0
background_mask_blend_modenormal
custom_buttonoff
button_text_size20
button_bg_use_color_gradientoff
button_bg_color_gradient_repeatoff
button_bg_color_gradient_typelinear
button_bg_color_gradient_direction180deg
button_bg_color_gradient_direction_radialcenter
button_bg_color_gradient_stops#2b87da 0%|#29c4a9 100%
button_bg_color_gradient_unit%
button_bg_color_gradient_overlays_imageoff
button_bg_color_gradient_start#2b87da
button_bg_color_gradient_start_position0%
button_bg_color_gradient_end#29c4a9
button_bg_color_gradient_end_position100%
button_bg_enable_imageon
button_bg_parallaxoff
button_bg_parallax_methodon
button_bg_sizecover
button_bg_image_widthauto
button_bg_image_heightauto
button_bg_positioncenter
button_bg_horizontal_offset0
button_bg_vertical_offset0
button_bg_repeatno-repeat
button_bg_blendnormal
button_bg_enable_video_mp4on
button_bg_enable_video_webmon
button_bg_allow_player_pauseoff
button_bg_video_pause_outside_viewporton
button_use_iconon
button_icon_placementright
button_on_hoveron
positioningnone
position_origin_atop_left
position_origin_ftop_left
position_origin_rtop_left
text_orientationleft
widthauto
max_widthnone
module_alignmentleft
min_heightauto
heightauto
max_heightnone
custom_margin_tablet||10px||false|false
custom_margin_phone||10px||false|false
custom_margin_last_editedon|tablet
custom_padding5px||||false|false
filter_hue_rotate0deg
filter_saturate100%
filter_brightness100%
filter_contrast100%
filter_invert0%
filter_sepia0%
filter_opacity100%
filter_blur0px
mix_blend_modenormal
animation_stylenone
animation_directioncenter
animation_duration1000ms
animation_delay0ms
animation_intensity_slide50%
animation_intensity_zoom50%
animation_intensity_flip50%
animation_intensity_fold50%
animation_intensity_roll50%
animation_starting_opacity0%
animation_speed_curveease-in-out
animation_repeatonce
hover_transition_duration300ms
hover_transition_delay0ms
hover_transition_speed_curveease
link_option_url_new_windowoff
sticky_positionnone
sticky_offset_top0px
sticky_offset_bottom0px
sticky_limit_topnone
sticky_limit_bottomnone
sticky_offset_surroundingon
sticky_transitionon
motion_trigger_startmiddle
hover_enabled0
title_css_text_align_tabletcenter
title_css_text_align_phonecenter
title_css_text_align_last_editedon|phone
acf_label_css_text_align_tabletcenter
acf_label_css_text_align_phonecenter
acf_label_css_text_align_last_editedon|phone
label_css_text_align_tabletcenter
label_css_text_align_phonecenter
label_css_text_align_last_editedon|desktop
text_orientation_tabletcenter
text_orientation_phonecenter
text_orientation_last_editedon|phone
module_alignment_tabletcenter
module_alignment_phonecenter
module_alignment_last_editedon|desktop
title_css_text_shadow_stylenone
title_css_text_shadow_horizontal_length0em
title_css_text_shadow_vertical_length0em
title_css_text_shadow_blur_strength0em
title_css_text_shadow_colorrgba(0,0,0,0.4)
acf_label_css_text_shadow_stylenone
acf_label_css_text_shadow_horizontal_length0em
acf_label_css_text_shadow_vertical_length0em
acf_label_css_text_shadow_blur_strength0em
acf_label_css_text_shadow_colorrgba(0,0,0,0.4)
label_css_text_shadow_stylenone
label_css_text_shadow_horizontal_length0em
label_css_text_shadow_vertical_length0em
label_css_text_shadow_blur_strength0em
label_css_text_shadow_colorrgba(0,0,0,0.4)
text_before_css_text_shadow_stylenone
text_before_css_text_shadow_horizontal_length0em
text_before_css_text_shadow_vertical_length0em
text_before_css_text_shadow_blur_strength0em
text_before_css_text_shadow_colorrgba(0,0,0,0.4)
seperator_text_shadow_stylenone
seperator_text_shadow_horizontal_length0em
seperator_text_shadow_vertical_length0em
seperator_text_shadow_blur_strength0em
seperator_text_shadow_colorrgba(0,0,0,0.4)
relational_field_item_text_shadow_stylenone
relational_field_item_text_shadow_horizontal_length0em
relational_field_item_text_shadow_vertical_length0em
relational_field_item_text_shadow_blur_strength0em
relational_field_item_text_shadow_colorrgba(0,0,0,0.4)
button_text_shadow_stylenone
button_text_shadow_horizontal_length0em
button_text_shadow_vertical_length0em
button_text_shadow_blur_strength0em
button_text_shadow_colorrgba(0,0,0,0.4)
box_shadow_stylenone
box_shadow_colorrgba(0,0,0,0.3)
box_shadow_positionouter
box_shadow_style_buttonnone
box_shadow_color_buttonrgba(0,0,0,0.3)
box_shadow_position_buttonouter
text_shadow_stylenone
text_shadow_horizontal_length0em
text_shadow_vertical_length0em
text_shadow_blur_strength0em
text_shadow_colorrgba(0,0,0,0.4)
disabledoff
global_colors_info{}

Joe McQuillen

Execution time: 0.0009 seconds

Execution time: 0.0002 seconds

ACF

ID58158
keyfield_6233420dec7d2
labelLinkedin URL
nameblog_linkedin_url
prefixacf
typeurl
valuehttps://www.linkedin.com/in/joemcquillenuk/
menu_order2
parent58155
wrapperArray
_nameblog_linkedin_url
_valid1

Module Settings

custom_identifierLinkedin
acf_namefield_6233420dec7d2
is_author_acf_fieldoff
post_object_acf_namenone
author_field_typeauthor_post
linked_user_acf_namenone
type_taxonomy_acf_namenone
acf_tagspan
show_labeloff
label_seperator:
visibilityon
empty_value_optionhide_module
use_iconon
font_icon||divi||400
icon_color#0d8de2
use_circleoff
circle_color#7EBEC5
use_circle_borderoff
circle_border_color#7EBEC5
use_icon_font_sizeoff
icon_image_placementleft
image_mobile_stackinginitial
return_formaturl
image_link_urloff
image_link_url_acf_namenone
checkbox_stylearray
checkbox_radio_returnlabel
checkbox_radio_value_typeoff
checkbox_radio_linkoff
link_buttonoff
email_subjectnone
email_body_afternone
add_css_classoff
add_css_loop_layoutoff
add_css_class_selectorbody
link_new_tabon
link_name_acfoff
link_name_acf_namenone
url_link_iconon
image_sizefull
true_false_conditionoff
true_false_condition_css_selector.et_pb_button
true_false_text_trueTrue
true_false_text_falseFalse
is_audiooff
is_videooff
video_loopon
video_autoplayon
is_oembed_videooff
defer_videooff
defer_video_iconI||divi||400
video_icon_font_sizeoff
pretify_textoff
pretify_seperator,
number_decimal.
show_value_if_zerooff
text_imageoff
is_options_pageoff
is_repeater_loop_layoutoff
linked_post_stylecustom
link_post_seperator,
link_to_post_objecton
loop_layoutnone
columns4
columns_tablet2
columns_mobile1
repeater_dyn_btn_acfnone
button_alignmentleft
text_before_positionsame_line
label_positionsame_line
vertical_alignmentmiddle
admin_labelLinkedin
module_classlinkedin
_builder_version4.19.5
_module_presetdefault
title_css_text_alignleft
title_css_font_size14px
title_css_letter_spacing0px
title_css_line_height1em
acf_label_css_text_alignleft
acf_label_css_font_size14px
acf_label_css_letter_spacing0px
acf_label_css_line_height1em
label_css_text_alignleft
label_css_letter_spacing0px
text_before_css_font_size14px
text_before_css_letter_spacing0px
text_before_css_line_height1em
seperator_text_alignleft
seperator_font_size14px
seperator_letter_spacing0px
seperator_line_height1em
relational_field_item_text_alignleft
relational_field_item_font_size14px
relational_field_item_letter_spacing0px
relational_field_item_line_height1em
background_enable_coloron
use_background_color_gradientoff
background_color_gradient_repeatoff
background_color_gradient_typelinear
background_color_gradient_direction180deg
background_color_gradient_direction_radialcenter
background_color_gradient_stops#2b87da 0%|#29c4a9 100%
background_color_gradient_unit%
background_color_gradient_overlays_imageoff
background_color_gradient_start#2b87da
background_color_gradient_start_position0%
background_color_gradient_end#29c4a9
background_color_gradient_end_position100%
background_enable_imageon
parallaxoff
parallax_methodon
background_sizecover
background_image_widthauto
background_image_heightauto
background_positioncenter
background_horizontal_offset0
background_vertical_offset0
background_repeatno-repeat
background_blendnormal
background_enable_video_mp4on
background_enable_video_webmon
allow_player_pauseoff
background_video_pause_outside_viewporton
background_enable_pattern_styleoff
background_pattern_stylepolka-dots
background_pattern_colorrgba(0,0,0,0.2)
background_pattern_sizeinitial
background_pattern_widthauto
background_pattern_heightauto
background_pattern_repeat_origintop_left
background_pattern_horizontal_offset0
background_pattern_vertical_offset0
background_pattern_repeatrepeat
background_pattern_blend_modenormal
background_enable_mask_styleoff
background_mask_stylelayer-blob
background_mask_color#ffffff
background_mask_aspect_ratiolandscape
background_mask_sizestretch
background_mask_widthauto
background_mask_heightauto
background_mask_positioncenter
background_mask_horizontal_offset0
background_mask_vertical_offset0
background_mask_blend_modenormal
custom_buttonon
button_text_size14px
button_bg_use_color_gradientoff
button_bg_color_gradient_repeatoff
button_bg_color_gradient_typelinear
button_bg_color_gradient_direction180deg
button_bg_color_gradient_direction_radialcenter
button_bg_color_gradient_stops#2b87da 0%|#29c4a9 100%
button_bg_color_gradient_unit%
button_bg_color_gradient_overlays_imageoff
button_bg_color_gradient_start#2b87da
button_bg_color_gradient_start_position0%
button_bg_color_gradient_end#29c4a9
button_bg_color_gradient_end_position100%
button_bg_enable_imageon
button_bg_parallaxoff
button_bg_parallax_methodon
button_bg_sizecover
button_bg_image_widthauto
button_bg_image_heightauto
button_bg_positioncenter
button_bg_horizontal_offset0
button_bg_vertical_offset0
button_bg_repeatno-repeat
button_bg_blendnormal
button_bg_enable_video_mp4on
button_bg_enable_video_webmon
button_bg_allow_player_pauseoff
button_bg_video_pause_outside_viewporton
button_border_width0px
button_use_iconoff
button_icon_placementright
button_on_hoveron
button_custom_padding0px|0px|0px|0px|true|true
positioningnone
position_origin_atop_left
position_origin_ftop_left
position_origin_rtop_left
text_orientationleft
widthauto
max_widthnone
module_alignmentleft
min_heightauto
heightauto
max_heightnone
custom_margin_tablet||10px||false|false
custom_margin_phone||10px||false|false
custom_margin_last_editedon|tablet
filter_hue_rotate0deg
filter_saturate100%
filter_brightness100%
filter_contrast100%
filter_invert0%
filter_sepia0%
filter_opacity100%
filter_blur0px
mix_blend_modenormal
animation_stylenone
animation_directioncenter
animation_duration1000ms
animation_delay0ms
animation_intensity_slide50%
animation_intensity_zoom50%
animation_intensity_flip50%
animation_intensity_fold50%
animation_intensity_roll50%
animation_starting_opacity0%
animation_speed_curveease-in-out
animation_repeatonce
hover_transition_duration300ms
hover_transition_delay0ms
hover_transition_speed_curveease
link_option_url_new_windowoff
sticky_positionnone
sticky_offset_top0px
sticky_offset_bottom0px
sticky_limit_topnone
sticky_limit_bottomnone
sticky_offset_surroundingon
sticky_transitionon
motion_trigger_startmiddle
hover_enabled0
title_css_text_align_tabletcenter
title_css_text_align_phonecenter
title_css_text_align_last_editedon|phone
acf_label_css_text_align_tabletcenter
acf_label_css_text_align_phonecenter
acf_label_css_text_align_last_editedon|tablet
label_css_text_align_tabletcenter
label_css_text_align_phonecenter
label_css_text_align_last_editedon|desktop
relational_field_item_text_align_tabletcenter
relational_field_item_text_align_phonecenter
relational_field_item_text_align_last_editedon|tablet
text_orientation_tabletcenter
text_orientation_phonecenter
text_orientation_last_editedon|phone
module_alignment_tabletcenter
module_alignment_phonecenter
module_alignment_last_editedon|desktop
custom_css_main_elementdisplay:block;
title_css_text_shadow_stylenone
title_css_text_shadow_horizontal_length0em
title_css_text_shadow_vertical_length0em
title_css_text_shadow_blur_strength0em
title_css_text_shadow_colorrgba(0,0,0,0.4)
acf_label_css_text_shadow_stylenone
acf_label_css_text_shadow_horizontal_length0em
acf_label_css_text_shadow_vertical_length0em
acf_label_css_text_shadow_blur_strength0em
acf_label_css_text_shadow_colorrgba(0,0,0,0.4)
label_css_text_shadow_stylenone
label_css_text_shadow_horizontal_length0em
label_css_text_shadow_vertical_length0em
label_css_text_shadow_blur_strength0em
label_css_text_shadow_colorrgba(0,0,0,0.4)
text_before_css_text_shadow_stylenone
text_before_css_text_shadow_horizontal_length0em
text_before_css_text_shadow_vertical_length0em
text_before_css_text_shadow_blur_strength0em
text_before_css_text_shadow_colorrgba(0,0,0,0.4)
seperator_text_shadow_stylenone
seperator_text_shadow_horizontal_length0em
seperator_text_shadow_vertical_length0em
seperator_text_shadow_blur_strength0em
seperator_text_shadow_colorrgba(0,0,0,0.4)
relational_field_item_text_shadow_stylenone
relational_field_item_text_shadow_horizontal_length0em
relational_field_item_text_shadow_vertical_length0em
relational_field_item_text_shadow_blur_strength0em
relational_field_item_text_shadow_colorrgba(0,0,0,0.4)
button_text_shadow_stylenone
button_text_shadow_horizontal_length0em
button_text_shadow_vertical_length0em
button_text_shadow_blur_strength0em
button_text_shadow_colorrgba(0,0,0,0.4)
box_shadow_stylenone
box_shadow_colorrgba(0,0,0,0.3)
box_shadow_positionouter
box_shadow_style_buttonnone
box_shadow_color_buttonrgba(0,0,0,0.3)
box_shadow_position_buttonouter
text_shadow_stylenone
text_shadow_horizontal_length0em
text_shadow_vertical_length0em
text_shadow_blur_strength0em
text_shadow_colorrgba(0,0,0,0.4)
disabledoff
global_colors_info{}
custom_css_main_element_last_editedon|phone
custom_css_main_element_tabletdisplay:block;
custom_css_main_element_phonedisplay:block;

Execution time: 0.0011 seconds

Vetted Senior AI Talent

Work with our top 2% hidden gems, vetted through over 300 real-world projects.

Top Talent

Leave a comment.
1 Comment
  1. rama

    I have read so many posts about the blogger lovers however this post is really a good piece of writing, keep it up

    Reply
Submit a Comment

Your email address will not be published. Required fields are marked *