This page is scoped to Emerging Household Energy monitoring operations. It covers sample-size design for surveys and stove-use monitoring evidence quality.
Quick Start
curl -X POST https://api.emerging.eco/v1/sampling \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"projectId": "did:ixo:project/789",
"population": 5000,
"confidence": 0.95,
"precision": 0.05,
"expectedMean": 0.8,
"expectedSD": 0.2,
"dropoutRate": 0.15,
"stratification": {
"enabled": true,
"strata": [
{"name": "urban", "weight": 0.6},
{"name": "rural", "weight": 0.4}
]
}
}'from emerging import SampleCalculator
calculator = SampleCalculator(
project_id="did:ixo:project/789",
confidence=0.95,
precision=0.05
)
sample_size = calculator.compute(
population=5000,
expected_mean=0.8,
expected_sd=0.2,
dropout_rate=0.15,
stratification={
"enabled": True,
"strata": [
{"name": "urban", "weight": 0.6},
{"name": "rural", "weight": 0.4}
]
}
)Core Requirements
Statistical Parameters
- Confidence/Precision:
- 95% confidence level mandatory
- 5% precision requirement
- Factor imprecision into ER calculations
- Sample Parameters:
- Justify expected mean/SD with credible data
- Document ER coverage percentage
- Account for realistic dropout rates
- Adaptation Requirements:
- Recalculate after each monitoring period
- Use actual variation from monitoring data
- Adjust size up/down based on real data
Stratified Sampling
- Independent Strata:
- Calculate size for each stratum separately
- Maintain confidence/precision per stratum
- Document stratum-specific parameters
- Stratification Criteria:
- Based on baseline survey data
- Account for socio-economic factors
- Consider geographical variations
Random Selection
- Initial Phase:
- Document selection methodology in MADD
- Ensure verifiable randomness
- Include non-adopting households
- Verification Phase:
- Submit project list to FOEN
- Include active and planned projects
- Allow external random selection
Data Models
Sample Design
{
"designId": "sample-123",
"projectId": "did:ixo:project/789",
"parameters": {
"confidence": 0.95,
"precision": 0.05,
"population": 5000,
"calculatedSize": 357,
"adjustedSize": 420,
"dropoutRate": 0.15,
"erCoverage": 0.85
},
"stratification": {
"method": "proportional",
"strata": [{
"name": "urban",
"population": 3000,
"sampleSize": 252,
"mean": 0.8,
"sd": 0.2
}, {
"name": "rural",
"population": 2000,
"sampleSize": 168,
"mean": 0.75,
"sd": 0.25
}]
},
"verification": {
"status": "approved",
"verifier": "did:ixo:validator/456",
"timestamp": "2024-02-20T10:00:00Z"
}
}Sample Size Calculator
from emerging import CDMCalculator, StratificationEngine
# Initialize CDM calculator
calculator = CDMCalculator()
# Calculate base sample size
base_size = calculator.compute_base_size(
mean=0.8,
sd=0.2,
confidence=0.95,
precision=0.05
)
# Adjust for finite population
adjusted_size = calculator.adjust_for_population(
base_size=base_size,
population=5000
)
# Account for dropout
final_size = calculator.adjust_for_dropout(
sample_size=adjusted_size,
dropout_rate=0.15
)
# Stratify if needed
stratification = StratificationEngine()
strata_sizes = stratification.allocate(
total_size=final_size,
strata=[
{"name": "urban", "weight": 0.6},
{"name": "rural", "weight": 0.4}
]
)Random Selection
from emerging import RandomSelector
selector = RandomSelector(seed=20240220)
# Generate random sample
sample = selector.select(
population_list="household_registry.csv",
sample_size=420,
stratification={
"column": "region",
"sizes": strata_sizes
}
)
# Validate selection
validation = selector.validate_randomness(
selected_sample=sample,
confidence=0.95
)Monitoring & Adaptation
from emerging import SampleMonitor
monitor = SampleMonitor("did:ixo:project/789")
# Analyze current data
stats = monitor.analyze_current_period(
start_date="2024-01-01",
end_date="2024-01-31"
)
# Recalculate sample size
new_size = monitor.recalculate_size(
current_mean=stats.mean,
current_sd=stats.sd
)
# Check if adjustment needed
if monitor.requires_adjustment(new_size):
adjustment = monitor.generate_adjustment_plan()External Verification
from emerging import VerificationSubmission
submission = VerificationSubmission(
project_id="did:ixo:project/789"
)
# Prepare project list
project_list = submission.prepare_project_list(
active_projects=True,
planned_projects=True
)
# Submit for sampling
response = submission.submit_to_foen(
project_list=project_list,
monitoring_period="2024-Q1"
)Error Handling
400error
Invalid sampling parameters
422error
Insufficient population data
409error
Conflicting stratum definitions
Best Practices
Sample Design
- Document all assumptions
- Justify stratification choices
- Consider seasonal variations
- Plan for dropouts
- Maintain stratum independence
Data Quality
- Validate input parameters
- Monitor dropout rates
- Track response rates
- Document non-responses
- Verify random selection
Adaptation
- Regular recalculation
- Document changes
- Update stratification
- Maintain precision levels
- Track ER coverage
Verification
- Prepare FOEN submissions
- Document selection process
- Maintain project lists
- Track verification status
- Archive supporting data
Next Steps
Survey Integration
Apply sampling to surveys
SUM IntegrationSensor deployment sampling
CDM Tools
Official calculators
Verification Guide
FOEN submission process
Sample Size Adaptation
Monitoring Period Updates
from emerging import AdaptiveSampling
adaptive = AdaptiveSampling(project_id="did:ixo:project/789")
# Analyze current monitoring data
current_stats = adaptive.analyze_period(
start_date="2024-01-01",
end_date="2024-01-31"
)
# Recalculate using actual data
new_sample_size = adaptive.recalculate(
actual_mean=current_stats.mean,
actual_sd=current_stats.sd,
current_dropout_rate=current_stats.dropout_rate
)
# Generate adaptation plan if needed
if adaptive.requires_adjustment(new_sample_size):
plan = adaptive.create_adjustment_plan(
current_size=current_stats.sample_size,
required_size=new_sample_size,
implementation_date="2024-03-01"
)Dropout Management
# Configure with realistic dropout rate
calculator = CDMCalculator(
base_confidence=0.95,
base_precision=0.05,
dropout_buffer=0.15 # 15% dropout rate
)
# Track actual dropouts
dropout_analysis = calculator.analyze_dropouts(
historical_data="2023",
current_period="2024-Q1"
)
# Adjust sample size if needed
adjusted_size = calculator.compensate_for_dropouts(
current_size=400,
actual_dropout_rate=dropout_analysis.rate
)FOEN Submission Process
from emerging import FOENSubmission
submission = FOENSubmission(project_id="did:ixo:project/789")
# Prepare project list for random selection
project_list = submission.prepare_list(
active_projects=True,
planned_projects=True,
monitoring_period="2024-Q2"
)
# Submit for random sampling
response = submission.submit_to_foen(
project_list=project_list,
er_coverage_percentage=0.85, # Document ER coverage
supporting_data={
"mean_justification": "historical_data.pdf",
"sd_calculation": "variance_analysis.pdf"
}
)