Я хотів би припустити, що важливим є розробка фізично реалістичної, практично корисної моделі вартості енергії. Це допоможе краще виявити зміни у витратах, ніж будь-яка візуалізація необроблених даних. Порівнюючи це з рішенням, запропонованим на SO , ми маємо дуже приємне тематичне дослідження в різниці між підходом кривої до даних та проведенням значимого статистичного аналізу.
(Ця пропозиція ґрунтується на тому, що така модель підходила до мого власного домогосподарства десятиліття тому та застосовувала її для відстеження змін за цей період. Зауважте, що коли модель підходить, її можна легко обчислити в електронній таблиці з метою відстеження. зміни, тому ми не повинні відчувати себе обмеженими можливостями програмного забезпечення електронних таблиць.)
Для цих даних така фізично правдоподібна модель створює істотно іншу картину витрат на енергоресурси та використання витрат, ніж проста альтернативна модель (квадратична мінімальна площа, що відповідає щоденному використанню проти середньомісячної температури). Отже, простішу модель не можна вважати надійним інструментом для розуміння, прогнозування або порівняння моделей використання енергії.
Аналіз
Закон Ньютона про охолодження говорить про те, що, при хорошому наближенні, вартість обігріву (протягом одиниці часу) повинна бути прямо пропорційною різниці між зовнішньою температурою і внутрішньою температурою . Нехай ця константа пропорційності буде . Вартість охолодження також повинна бути пропорційною тій різниці температур з подібною - але не обов'язково однаковою - постійною пропорційність . (Кожен з них визначається теплоізоляційними можливостями будинку, а також ефективністю систем опалення та охолодження.)tt0−αβ
Оцінка та (які виражаються у кіловатах (або доларах) на градус за одиницю часу) є одними з найважливіших речей, які можна досягти,αβ оскільки вони дозволяють нам передбачити майбутні витрати, а також виміряти ефективність будинок та його енергетичні системи.
Оскільки ці дані є загальним споживанням електроенергії, вони включають витрати на опалення, такі як освітлення, приготування їжі, обчислення та розваги. Також цікавою є оцінка цього середнього споживання базової енергії (за одиницю часу), яку я називатиму : вона дає змогу визначити, скільки енергії можна заощадити, і дає змогу передбачити майбутні витрати при підвищенні ефективності відомої величини . (Наприклад, через чотири роки я замінив піч на одну, яка стверджувала, що вона на 30% ефективніша - і справді це було саме так.)γ
Нарешті, як (грубе) наближення я припускаю, що будинок підтримується майже постійною температурою протягом року. (В моїй особистій моделі я припускаю дві температури, , відповідно для зими і літа влітку - але в цьому прикладі ще недостатньо даних, щоб їх достовірно оцінити, і все одно вони будуть досить близькими.) Знаючи це Значення допомагає оцінити наслідки підтримки будинку при дещо іншій температурі, що є одним із важливих варіантів енергозбереження.t0t0≤t1
Дані представляють надзвичайно важливе і цікаве ускладнення : вони відображають загальні витрати в періоди, коли зовнішні температури коливаються - і вони коливаються багато, зазвичай приблизно на чверть їх річного діапазону щомісяця. Як ми побачимо, це створює істотну різницю між точно описаною правильною базовою миттєвою моделлю та значеннями місячних підсумків. Ефект особливо виражений у міжмісячні періоди, коли відбувається або (або ні) нагрівання та охолодження. Будь-яка модель, яка не враховує цю різницю, помилково "подумає", що енерговитрати повинні бути за базовою ставкою протягом будь-якого місяця із середньою температурою , але реальність набагато інша.γt0
Ми не маємо (легко) детальної інформації про місячні коливання температури, крім їх діапазонів. Я пропоную поводитися з таким підходом, який практичний, але крихітний суперечливий. За винятком екстремальних температур, кожен місяць зазвичай спостерігається поступове підвищення або зниження температури. Це означає, що ми можемо вважати розподіл приблизно однаковим. Коли діапазон рівномірної змінної має довжину , ця змінна має стандартне відхилення . Я використовую це відношення для перетворення діапазонів (від до ) до стандартних відхилень. Але тоді, по суті для отримання чудово поведеної моделі, я зменшу варіювання на кінцях цих діапазонів, використовуючи NormalLs=L/6–√Avg. LowAvg. Highдистрибуції (з цією оцінкою SD та засобами, наданими Avg. Temp).
Нарешті, ми повинні стандартизувати дані до загального одиничного часу. Хоча це вже є в Daily kWh Avg.змінній, йому не вистачає точності, тому давайте замість цього розділимо загальну кількість днів, щоб повернути втрачену точність.
Таким чином, модель одиниці часу охолодження варто при температурі зовнішнього повітря від єYt
y(t)=γ+α(t−t0)I(t<t0)+β(t−t0)I(t>t0)+ε(t)
де - функція індикатора, а являє собою все, що не є явно зафіксованим у цій моделі. У нього є чотири параметри для оцінки: і . (Якщо ви справді впевнені в ви можете виправити його значення, а не оцінювати його.)Iεα,β,γt0t0
Повідомили загальні витрати в протягом періоду часу до , коли температура змінюється в залежності від часу , отже , будеx0x1t(x)x
Cost(x0,x1)=∫x1x0y(t)dt=∫x1x0(γ+α(t(x)−t0)I(t(x)<t0)+β(t(x)−t0)I(t(x)>t0)+ε(t(x)))t′(x)dx.
Якщо модель взагалі хороша, коливання повинні становити середнє значення близьке до нуля, і, здавалося б, випадково змінюватись місяць у місяць. Апроксимація коливань у з нормальним розподілом середнього значення (середньомісячне середнє) та стандартне відхилення (як раніше було вказано з місячного діапазону) та з отриманням інтегралівε(t)ε¯t(x)t¯s(t¯)
y¯(t¯)=γ+(β−α)s(t¯)2ϕs(t¯−t0)+(t¯−t0)(β+(α−β)Φs(t0−t¯))+ε¯(t¯).
У цій формулі - це сукупний розподіл нормальної змінної нульової середньої величини та стандартного відхилення ; - його щільність.Φss(t¯)ϕ
Монтаж моделі
Ця модель, хоча і виражає нелінійну залежність між витратами та температурою, все ж є лінійною у змінних та . Однак, оскільки це нелінійно в , а невідомо, нам потрібна процедура нелінійної підгонки. Для ілюстрації я просто скинув його в максимізатор ймовірності (використовуючи для обчислення), припускаючи, що є незалежними та однаково розподіленими, з нормальними розподілами середнього нуля та загальним стандартним відхиленням .α,β,γt0t0Rε¯σ
За цими даними оцінок є
(α^,β^,γ^,t0^,σ^)=(−1.489,1.371,10.2,63.4,1.80).
Це означає:
Витрата на опалення становить приблизно кВт / год / градус F.1.49
Вартість охолодження приблизно кВт / год / градус F. Охолодження трохи ефективніше.1.37
Базове (не опалювальне / охолоджуюче) використання енергії становить кВт / год. (Ця цифра є досить невизначеною; додаткові дані допоможуть її краще зменшити.)10.2
Будинок підтримується при температурі близько градусів F.63.4
Інші варіації, які явно не враховуються в моделі, мають стандартне відхилення кВт / год.1.80
Інтервали довіри та інші кількісні вирази невизначеності в цих оцінках можна отримати стандартними способами з максимальною ймовірністю.
Візуалізація
Щоб проілюструвати цю модель, на наступному малюнку викладено дані, базову модель, відповідність середньомісячним середнім значенням та просте квадратичне розміщення найменших квадратів.

Щомісячні дані відображаються у вигляді темних хрестів. Горизонтальні сірі лінії, на яких вони лежать, показують місячні діапазони температури. Наша основна модель, що відображає закон Ньютона, показана червоно-синьою лінією сегментів, що зустрічаються при температурі . Наша відповідність даним не крива , оскільки це залежить від температурних діапазонів. Тому вона зображена як окремі суцільні сині та червоні точки. (Тим не менше, оскільки місячні діапазони не сильно різняться, ці точки, схоже, відслідковують криву - майже таку ж, як пунктирна квадратична крива.) Нарешті, пунктирна крива - це квадратичний найменший розмір квадратів (до темних хрестів ).t0
Зауважте, наскільки пристосування відходять від базової (миттєвої) моделі, особливо при середніх температурах! Це ефект щомісячного усереднення. (Подумайте про те, як висота червоних та синіх ліній "розмазується" по кожному горизонтальному сірому сегменту. При екстремальних температурах все зосереджено на лініях, але при середніх температурах обидві сторони "V" збираються усередненими, відображаючи потребу для опалення в окремі часи та охолодження в інший час протягом місяця.)
Порівняння моделі
Два пристосування - той кропітко розвинений тут і простий, легкий, квадратичний прилад - тісно узгоджуються як між собою, так і з точками даних. Квадратне прилягання не настільки добре, але все ж пристойно: його скориговане середнє залишкове значення (за трьома параметрами) становить кВт / год, тоді як скоригований середній залишок моделі закону Ньютона (для чотирьох параметрів) становить кВт / год, приблизно на 5% нижче. Якщо все, що ви хочете зробити, це побудувати криву через точки даних, тоді простота та відносна вірність квадратичного пристосування рекомендують це.2.071.97
Однак квадратичне пристосування є абсолютно марним для вивчення того, що відбувається! Його формула,
y¯(t¯)=219.95−6.241t¯+0.04879(t¯)2,
не виявляє нічого корисного безпосередньо. Чесно кажучи, ми могли б трохи проаналізувати це:
Це парабола з вершиною при градусів F. Ми можемо сприймати це як оцінку постійної температури будинку. Це суттєво не відрізняється від нашої першої оцінки в градуса. Однак прогнозована вартість при цій температурі становить кВт / год. Це вдвічі більше базового споживання енергії, що відповідає Закону Ньютона.t^0=6.241/(2×0.04879)=64.063.4219.95−6.241(63.4)+0.04879(63.4)2=20.4
Граничні витрати на нагрівання або охолодження отримують з абсолютного значення похідної, . Наприклад, використовуючи цю формулу, ми б оцінили вартість обігріву будинку, коли зовнішня температура становить градусів, як кВт / год / градус F. Це вдвічі більше, ніж оцінюється значення Ньютона Закон .y¯′(t¯)=−6.241+2(0.04879)t¯90−6.241+2(0.04879)(90)=2.54
Аналогічно, витрати на опалення будинку при зовнішній температурі градуси оцінюються як кВт / год / градус F. Це більше ніж удвічі більше, ніж оцінюється Законом Ньютона.32|−6.241+2(0.04879)(32)|=3.12
При середніх температурах квадратична помилка підходить в іншому напрямку. Дійсно, у своїй вершині в діапазоні від до градусів він прогнозує майже нульові граничні витрати на обігрів або охолодження, хоча ця середня температура включає дні, прохолодні як градусів і теплі градусів. (Мало хто з людей, які читають цю публікацію, все ще буде відключати тепло при градусах (= градусів)!)606850785010
Коротше кажучи, хоча у візуалізації це виглядає майже так само добре, квадратична велика помилка в оцінці основних величин інтересу, пов'язаних з використанням енергії. Таким чином, його використання для оцінки змін у використанні є проблематичним і має бути обережним.
Обчислення
Цей Rкод виконував усі обчислення та графіки. Його можна легко адаптувати до подібних наборів даних.
#
# Read and process the raw data.
#
x <- read.csv("F:/temp/energy.csv")
x$Daily <- x$Usage / x$Length
x <- x[order(x$Temp), ]
#pairs(x)
#
# Fit a quadratic curve.
#
fit.quadratic <- lm(Daily ~ Temp+I(Temp^2), data=x)
# par(mfrow=c(2,2))
# plot(fit.quadratic)
# par(mfrow=c(1,1))
#
# Fit a simple but realistic heating-cooling model with maximum likelihood.
#
response <- function(theta, x, s) {
alpha <- theta[1]; beta <- theta[2]; gamma <- theta[3]; t.0 <- theta[4]
x <- x - t.0
gamma + (beta-alpha)*s^2*dnorm(x, 0, s) + x*(beta + (alpha-beta)*pnorm(-x, 0, s))
}
log.L <- function(theta, y, x, s) {
# theta = (alpha, beta, gamma, t.0, sigma)
# x = time
# s = estimated SD
# y = response
y.hat <- response(theta, x, s)
sigma <- theta[5]
sum((((y - y.hat) / sigma) ^2 + log(2 * pi * sigma^2))/2)
}
theta <- c(alpha=-1, beta=5/4, gamma=20, t.0=65, sigma=2) # Initial guess
x$Spread <- (x$Temp.high - x$Temp.low)/sqrt(6) # Uniform estimate
fit <- nlm(log.L, theta, y=x$Daily, x=x$Temp, x$Spread)
names(fit$estimate) <- names(theta)
#$
# Set up for plotting.
#
i.pad <- 10
plot(range(x$Temp)+c(-i.pad,i.pad), c(0, max(x$Daily)+20), type="n",
xlab="Temp", ylab="Cost, kWh/day",
main="Data, Model, and Fits")
#
# Plot the data.
#
l <- matrix(mapply(function(l,r,h) {c(l,h,r,h,NA,NA)},
x$Temp.low, x$Temp.high, x$Daily), 2)
lines(l[1,], l[2,], col="Gray")
points(x$Temp, x$Daily, type="p", pch=3)
#
# Draw the models.
#
x0 <- seq(min(x$Temp)-i.pad, max(x$Temp)+i.pad, length.out=401)
lines(x0, cbind(1, x0, x0^2) %*% coef(fit.quadratic), lwd=3, lty=3)
#curve(response(fit$estimate, x, 0), add=TRUE, lwd=2, lty=1)
t.0 <- fit$estimate["t.0"]
alpha <- fit$estimate["alpha"]
beta <- fit$estimate["beta"]
gamma <- fit$estimate["gamma"]
cool <- "#1020c0"; heat <- "#c02010"
lines(c(t.0, 0), gamma + c(0, -alpha*t.0), lwd=2, lty=1, col=cool)
lines(c(t.0, 100), gamma + c(0, beta*(100-t.0)), lwd=2, lty=1, col=heat)
#
# Display the fit.
#
pred <- response(fit$estimate, x$Temp, x$Spread)
points(x$Temp, pred, pch=16, cex=1, col=ifelse(x$Temp < t.0, cool, heat))
#lines(lowess(x$Temp, pred, f=1/4))
#
# Estimate the residual standard deviations.
#
residuals <- x$Daily - pred
sqrt(sum(residuals^2) / (length(residuals) - 4))
sqrt(sum(resid(fit.quadratic)^2) / (length(residuals) - 3))