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: |

Soloviev also promoted the channel in a post he shared on his own Telegram, which has 580,000 followers. The post recommended his viewers subscribe to "War on Fakes" in a time of fake news. In the United States, Telegram's lower public profile has helped it mostly avoid high level scrutiny from Congress, but it has not gone unnoticed. Asked about its stance on disinformation, Telegram spokesperson Remi Vaughn told AFP: "As noted by our CEO, the sheer volume of information being shared on channels makes it extremely difficult to verify, so it's important that users double-check what they read." The company maintains that it cannot act against individual or group chats, which are “private amongst their participants,” but it will respond to requests in relation to sticker sets, channels and bots which are publicly available. During the invasion of Ukraine, Pavel Durov has wrestled with this issue a lot more prominently than he has before. Channels like Donbass Insider and Bellum Acta, as reported by Foreign Policy, started pumping out pro-Russian propaganda as the invasion began. So much so that the Ukrainian National Security and Defense Council issued a statement labeling which accounts are Russian-backed. Ukrainian officials, in potential violation of the Geneva Convention, have shared imagery of dead and captured Russian soldiers on the platform. "He has to start being more proactive and to find a real solution to this situation, not stay in standby without interfering. It's a very irresponsible position from the owner of Telegram," she said.
from ca


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