Добрый вечер!
Мне нужно применить подход сопоставления CDF к нормализованным (преобразует среднее значение временного ряда, дисперсию, асимметрию и эксцесс для приблизительной гармонизации эталонного временного ряда) данные дистанционного зондирования перед применением статистических индексов для проверки надежности и эффективности спутниковых оценок влажности почвы по сравнению с наземными измерениями. Я не знаю, как применить подход сопоставления CDF к наборам временных данных.
Большое спасибо за любую помощь.
Следующее Я сделал:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
import scipy
import math
# Lettura dei dati
data = pd.read_excel('Data.xlsx',sheet_name='l4')
data['Timestamp'] = pd.to_datetime(data['Timestamp'])
data.set_index('Timestamp', inplace=True)
def NormalizeData(value):
min_val=np.min(value)
max_val=np.max(value)
return (value - min_val)/(max_val - min_val)
P=data.P
Pn=NormalizeData(data.P)
SSM=data.SSM
SSMn=NormalizeData(data.SSM)
data= data.dropna()
Ref_data = NormalizeData(data.P)
Biased_data = NormalizeData(data.SSM)
# Funzione per calcolare la distribuzione cumulativa (CDF)
def prob_data(data):
data = data[~np.isnan(data)]
#sorted_data = np.sort(data)
n = len(data)
ret = np.arange(1, n + 1) / (n + 1)
return ret
# CDF Matching
Prob_ref = prob_data(Ref_data)
Prof_biased = prob_data(Biased_data)
# Calcolo del bias prima della correzione
bias = np.sum(Biased_data - Ref_data) / len(Biased_data)
#Interpolazione lineare 1-D
interp_func = interp1d(np.sort(Prof_biased), np.sort(Biased_data), fill_value="extrapolate")
Biased_interpolated = interp_func(np.sort(Prob_ref))
# Fit polinomiale
n = 5 # Grado del polinomio
p = np.polyfit(Biased_interpolated, np.sort(Ref_data) - Biased_interpolated, n)
# Correzione dei dati
Corrected_Data = np.polyval(p, Biased_data) + Biased_data
# Calcolo del bias dopo la correzione
bias_after = np.sum(Corrected_Data - Ref_data) / len(Corrected_Data)
# Plotting
plt.plot(np.sort(Ref_data), Prob_ref, 'k-', linewidth=1.5, label='Reference data')
plt.plot(np.sort(Biased_data), Prof_biased, 'k--', linewidth=1.5, label='Biased data')
plt.plot(np.sort(Corrected_Data), prob_data(Corrected_Data), 'k:', linewidth=1.5, label='Corrected data')
plt.xlabel('Time')
plt.ylabel('CDF')
plt.legend(loc='best')
plt.gcf().set_facecolor('white')
plt.savefig('CDF SSM PLOT.png', format='png',dpi=100)
plt.show()
data_correct=Corrected_Data.to_frame()
data_correct.reset_index(inplace=True)
date = data_correct['Timestamp']
data_correct['Timestamp']=pd.to_datetime(date)
data_correct = (data_correct.set_index('Timestamp').reindex(pd.date_range('2016-01-01','2021-12-31',freq='D')).rename_axis(['Date']).fillna('').reset_index())
data_correct.rename(columns={'SSM': 'SSM cdf'}, inplace=True)
data_correct['P'] = P.values
data_correct['Pn'] = Pn.values
data_correct['SSM'] = SSM.values
data_correct['SSMn'] =SSMn.values
data_correct.to_excel('L4_data.xlsx')
Подробнее здесь: https://stackoverflow.com/questions/787 ... g-approach
Метод сопоставления CDF ⇐ Python
Программы на Python
1 сообщение
• Страница 1 из 1
Anonymous
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...