Telegram Group & Telegram Channel
🧠 Восстановление искажённых измерений с дневным смещением

У вас есть температурные измерения за 10 дней, но каждый день датчик добавляет случайное смещение (bias), постоянное в течение дня. Также есть шум измерений.

📊 Ваша задача:
1. Оценить bias по дням
2. Восстановить истинную температуру
3. Посчитать RMSE между восстановленной и настоящей температурой

📦 Генерация данных


import pandas as pd
import numpy as np

np.random.seed(42)
days = pd.date_range("2023-01-01", periods=10, freq="D")
true_temp = np.sin(np.linspace(0, 3 * np.pi, 240)) * 10 + 20
bias_per_day = np.random.uniform(-2, 2, size=len(days))

df = pd.DataFrame({
"datetime": pd.date_range("2023-01-01", periods=240, freq="H"),
})
df["day"] = df["datetime"].dt.date
df["true_temp"] = true_temp
df["bias"] = df["day"].map(dict(zip(days.date, bias_per_day)))
df["measured_temp"] = df["true_temp"] + df["bias"] + np.random.normal(0, 0.5, size=240)

🔍 Разбор: как оценить смещение

Идея: температура в течение дня плавно колеблется, но bias в этот день одинаков для всех точек. Если мы "сгладим" значения (например, скользящим средним), то можем аппроксимировать общий тренд — и вычесть его, получив оценку bias.

🔧 Способ: вычтем сглаженный тренд, затем усредним остатки по дню:

```python
# Сглаживаем тренд
df["trend"] = df["measured_temp"].rolling(window=12, center=True, min_periods=1).mean()

# Остатки (приближение к bias)
df["residual"] = df["measured_temp"] - df["trend"]

# Оценка bias как среднее отклонение внутри дня
bias_est = df.groupby("day")["residual"].mean()
df["estimated_bias"] = df["day"].map(bias_est)

# Восстановим температуру: measured - bias
df["restored_temp"] = df["measured_temp"] - df["estimated_bias"]
```

📊 Результаты

Оценим ошибку восстановления:

```python
from sklearn.metrics import mean_squared_error

rmse = mean_squared_error(df["true_temp"], df["restored_temp"], squared=False)
print(f"RMSE восстановления: {rmse:.4f}")
```

> Обычно RMSE ≈ 0.5–0.7 — это близко к стандартному отклонению шума, значит bias устранён успешно!

💡 Вывод

✔️ Простая техника — сглаживание + усреднение отклонений — позволяет оценить дневные смещения
✔️ Без знания "истинной" температуры можно получить довольно точную реконструкцию
✔️ Это напоминает реальные задачи очистки данных от сенсорных сдвигов или ошибок калибровки

📈 Отличный пример практики Data Science с уклоном в математику, временные ряды и обработку шумов!
Please open Telegram to view this post
VIEW IN TELEGRAM



group-telegram.com/data_math/773
Create:
Last Update:

🧠 Восстановление искажённых измерений с дневным смещением

У вас есть температурные измерения за 10 дней, но каждый день датчик добавляет случайное смещение (bias), постоянное в течение дня. Также есть шум измерений.

📊 Ваша задача:
1. Оценить bias по дням
2. Восстановить истинную температуру
3. Посчитать RMSE между восстановленной и настоящей температурой

📦 Генерация данных


import pandas as pd
import numpy as np

np.random.seed(42)
days = pd.date_range("2023-01-01", periods=10, freq="D")
true_temp = np.sin(np.linspace(0, 3 * np.pi, 240)) * 10 + 20
bias_per_day = np.random.uniform(-2, 2, size=len(days))

df = pd.DataFrame({
"datetime": pd.date_range("2023-01-01", periods=240, freq="H"),
})
df["day"] = df["datetime"].dt.date
df["true_temp"] = true_temp
df["bias"] = df["day"].map(dict(zip(days.date, bias_per_day)))
df["measured_temp"] = df["true_temp"] + df["bias"] + np.random.normal(0, 0.5, size=240)

🔍 Разбор: как оценить смещение

Идея: температура в течение дня плавно колеблется, но bias в этот день одинаков для всех точек. Если мы "сгладим" значения (например, скользящим средним), то можем аппроксимировать общий тренд — и вычесть его, получив оценку bias.

🔧 Способ: вычтем сглаженный тренд, затем усредним остатки по дню:

```python
# Сглаживаем тренд
df["trend"] = df["measured_temp"].rolling(window=12, center=True, min_periods=1).mean()

# Остатки (приближение к bias)
df["residual"] = df["measured_temp"] - df["trend"]

# Оценка bias как среднее отклонение внутри дня
bias_est = df.groupby("day")["residual"].mean()
df["estimated_bias"] = df["day"].map(bias_est)

# Восстановим температуру: measured - bias
df["restored_temp"] = df["measured_temp"] - df["estimated_bias"]
```

📊 Результаты

Оценим ошибку восстановления:

```python
from sklearn.metrics import mean_squared_error

rmse = mean_squared_error(df["true_temp"], df["restored_temp"], squared=False)
print(f"RMSE восстановления: {rmse:.4f}")
```

> Обычно RMSE ≈ 0.5–0.7 — это близко к стандартному отклонению шума, значит bias устранён успешно!

💡 Вывод

✔️ Простая техника — сглаживание + усреднение отклонений — позволяет оценить дневные смещения
✔️ Без знания "истинной" температуры можно получить довольно точную реконструкцию
✔️ Это напоминает реальные задачи очистки данных от сенсорных сдвигов или ошибок калибровки

📈 Отличный пример практики Data Science с уклоном в математику, временные ряды и обработку шумов!

BY Математика Дата саентиста


Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260

Share with your friend now:
group-telegram.com/data_math/773

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Telegram boasts 500 million users, who share information individually and in groups in relative security. But Telegram's use as a one-way broadcast channel — which followers can join but not reply to — means content from inauthentic accounts can easily reach large, captive and eager audiences. Founder Pavel Durov says tech is meant to set you free Official government accounts have also spread fake fact checks. An official Twitter account for the Russia diplomatic mission in Geneva shared a fake debunking video claiming without evidence that "Western and Ukrainian media are creating thousands of fake news on Russia every day." The video, which has amassed almost 30,000 views, offered a "how-to" spot misinformation. Telegram was co-founded by Pavel and Nikolai Durov, the brothers who had previously created VKontakte. VK is Russia’s equivalent of Facebook, a social network used for public and private messaging, audio and video sharing as well as online gaming. In January, SimpleWeb reported that VK was Russia’s fourth most-visited website, after Yandex, YouTube and Google’s Russian-language homepage. In 2016, Forbes’ Michael Solomon described Pavel Durov (pictured, below) as the “Mark Zuckerberg of Russia.”
from us


Telegram Математика Дата саентиста
FROM American