Je voudrais suggérer que l'important est de développer un modèle de coût énergétique physiquement réaliste et pratique . Cela fonctionnera mieux pour détecter les changements de coûts que n'importe quelle visualisation des données brutes peut accomplir. En comparant cela à la solution offerte sur SO , nous avons une très belle étude de cas dans la différence entre l' ajustement d'une courbe aux données et la réalisation d'une analyse statistique significative.
(Cette suggestion est basée sur l'adaptation d'un tel modèle à mon utilisation domestique il y a dix ans et sur son application pour suivre les changements au cours de cette période. Notez qu'une fois le modèle adapté, il peut facilement être calculé dans une feuille de calcul à des fins de suivi. changements, nous ne devons donc pas nous sentir limités par les capacités (in) du tableur.)
Pour ces données, un tel modèle physiquement plausible produit une image sensiblement différente des coûts énergétiques et des modèles d'utilisation qu'un modèle alternatif simple (un ajustement quadratique des moindres carrés de l'utilisation quotidienne par rapport à la température moyenne mensuelle). Par conséquent, le modèle plus simple ne peut pas être considéré comme un outil fiable pour comprendre, prévoir ou comparer les modèles de consommation d'énergie.
Une analyse
La loi du refroidissement de Newton dit que, pour une bonne approximation, le coût du chauffage (pendant une unité de temps) devrait être directement proportionnel à la différence entre la température extérieure et la température intérieure . Que cette constante de proportionnalité soit . Le coût du refroidissement devrait également être proportionnel à cette différence de température, avec une constante de proportionnalité similaire, mais pas nécessairement identique . (Chacun d'eux est déterminé par la capacité d'isolation de la maison ainsi que par l'efficacité des systèmes de chauffage et de refroidissement.)tt0−αβ
L'estimation de et (qui sont exprimés en kilowatts (ou en dollars) par degré par unité de temps) sont parmi les choses les plus importantes qui peuvent être accomplies,αβ car elles nous permettent de prédire les coûts futurs, ainsi que de mesurer l'efficacité des maison et ses systèmes énergétiques.
Étant donné que ces données représentent la consommation totale d'électricité, elles incluent les coûts non liés au chauffage tels que l'éclairage, la cuisine, l'informatique et les divertissements. Est également intéressante une estimation de cette consommation d'énergie de base moyenne (par unité de temps), que j'appellerai : elle fournit un plancher sur la quantité d'énergie pouvant être économisée et permet des prévisions des coûts futurs lorsque des améliorations d'efficacité d'une ampleur connue sont apportées . (Par exemple, après quatre ans, j'ai remplacé un four par un qui prétendait être 30% plus efficace - et c'était exactement cela.)γ
Enfin, en tant qu'approximation (brute), je suppose que la maison est maintenue à une température presque constante tout au long de l'année. (Dans mon modèle personnel, je suppose deux températures, , respectivement pour l'hiver et l'été - mais il n'y a pas encore suffisamment de données dans cet exemple pour les estimer de manière fiable et elles seraient de toute façon assez proches.) La valeur aide à évaluer les conséquences du maintien de la maison à une température légèrement différente, ce qui est une option d'économie d'énergie importante.t0t0≤t1
Les données présentent une complication particulièrement importante et intéressante : elles reflètent les coûts totaux pendant les périodes où les températures extérieures fluctuent - et elles fluctuent beaucoup, généralement environ un quart de leur fourchette annuelle chaque mois. Comme nous le verrons, cela crée une différence substantielle entre le modèle instantané sous-jacent correct qui vient d'être décrit et les valeurs des totaux mensuels. L'effet est particulièrement prononcé dans les mois intermédiaires, où le chauffage et le refroidissement ont lieu (ou aucun). Tout modèle qui ne prend pas en compte cette variation "penserait" à tort que les coûts énergétiques devraient être au taux de base pendant n'importe quel mois avec une température moyenne de , mais la réalité est très différente.γt0
Nous ne disposons pas (facilement) d'informations détaillées sur les fluctuations de température mensuelles en dehors de leurs plages. Je propose de gérer cela avec une approche pratique, mais un peu incohérente. Sauf aux températures extrêmes, chaque mois connaîtra généralement une augmentation ou une diminution progressive de la température. Cela signifie que nous pouvons considérer que la distribution est approximativement uniforme. Lorsque la plage d'une variable uniforme a une longueur , cette variable a un écart type de . J'utilise cette relation pour convertir les plages (de à ) en écarts-types. Mais ensuite, essentiellement pour obtenir un modèle bien comporté, je diminuerai la variation aux extrémités de ces plages en utilisant NormalLs=L/6–√Avg. Low
Avg. High
distributions (avec ces écarts-types estimés et les moyens donnés par Avg. Temp
).
Enfin, nous devons standardiser les données à une unité de temps commune. Bien que cela soit déjà présent dans la Daily kWh Avg.
variable, il manque de précision, alors divisons plutôt le total par le nombre de jours afin de récupérer la précision perdue.
Ainsi, le modèle des coûts de refroidissement unitaires-temps à une température extérieure de estYt
y(t)=γ+α(t−t0)I(t<t0)+β(t−t0)I(t>t0)+ε(t)
où est la fonction d'indicateur et représente tout ce qui n'est pas autrement explicitement capturé dans ce modèle. Il a quatre paramètres à estimer: et . (Si vous êtes vraiment sûr de vous pouvez fixer sa valeur plutôt que de l'estimer.)Iεα,β,γt0t0
Les coûts totaux déclarés pendant une période de temps à lorsque la température varie avec le temps seront doncx0x1t(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.
Si le modèle est bon du tout, les fluctuations de devraient être moyennes à une valeur proche de zéro et sembleront changer aléatoirement d'un mois à l'autre. Approximation des fluctuations de avec une distribution normale de la moyenne (la moyenne mensuelle) et de l'écart-type (comme précédemment donné à partir de la plage mensuelle) et en faisant les rendements intégralesε(t)ε¯t(x)t¯s(t¯)
y¯(t¯)=γ+(β−α)s(t¯)2ϕs(t¯−t0)+(t¯−t0)(β+(α−β)Φs(t0−t¯))+ε¯(t¯).
Dans cette formule, est la distribution cumulative d'une variable normale de moyenne nulle et d'écart type ; est sa densité.Φss(t¯)ϕ
Ajustement du modèle
Ce modèle, bien qu'exprimant une relation non linéaire entre les coûts et la température, est néanmoins linéaire dans les variables et . Cependant, comme il n'est pas linéaire en et que n'est pas connu, nous avons besoin d'une procédure d'ajustement non linéaire. Pour illustrer cela, je l'ai simplement vidé dans un maximiseur de vraisemblance (utilisé pour le calcul), en supposant que les sont indépendants et distribués de manière identique, avec des distributions normales de zéro moyen et de l'écart-type commun .α,β,γt0t0R
ε¯σ
Pour ces données, les estimations sont
(α^,β^,γ^,t0^,σ^)=(−1.489,1.371,10.2,63.4,1.80).
Ça signifie:
Le coût de chauffage est d'environ kWh / jour / degré F.1.49
Le coût de refroidissement est d'environ kWh / jour / degré F. Le refroidissement est un peu plus efficace.1.37
La consommation d'énergie de base (hors chauffage / refroidissement) est de kWh / jour. (Ce nombre est assez incertain; des données supplémentaires aideront à mieux le cerner.)10.2
La maison est maintenue à une température proche de degrés F.63.4
Les autres variations non explicitement prises en compte dans le modèle ont un écart type de kWh / jour.1.80
Les intervalles de confiance et d'autres expressions quantitatives de l'incertitude dans ces estimations peuvent être obtenus de manière standard avec le mécanisme du maximum de vraisemblance.
Visualisation
Pour illustrer ce modèle, la figure suivante trace les données, le modèle sous-jacent, l'ajustement aux moyennes mensuelles et un ajustement quadratique des moindres carrés simple.
Les données mensuelles sont représentées par des croix sombres. Les lignes grises horizontales sur lesquelles elles reposent indiquent les plages de températures mensuelles. Notre modèle sous-jacent, reflétant la loi de Newton, est illustré par les segments de ligne rouge et bleu se rencontrant à une température de . Notre ajustement aux données n'est pas une courbe , car cela dépend des plages de température. Il est donc représenté par des points individuels bleu et rouge. (Néanmoins, parce que les plages mensuelles ne varient pas beaucoup, ces points semblent tracer une courbe - presque la même que la courbe quadratique en pointillés.) Enfin, la courbe en pointillés est la forme quadratique des moindres carrés (aux croix sombres ).t0
Remarquez à quel point les ajustements s'écartent du modèle sous-jacent (instantané), en particulier aux températures moyennes! C'est l'effet de la moyenne mensuelle. (Pensez aux hauteurs des lignes rouges et bleues "étalées" sur chaque segment gris horizontal. Aux températures extrêmes, tout est centré sur les lignes, mais à des températures moyennes, les deux côtés du "V" sont moyennés ensemble, reflétant le besoin pour le chauffage à certains moments et le refroidissement à d'autres moments au cours du mois.)
Comparaison de modèles
Les deux ajustements - celui soigneusement développé ici et l'ajustement quadratique simple, facile - s'accordent étroitement à la fois entre eux et avec les points de données. L'ajustement quadratique n'est pas aussi bon, mais il est tout de même décent: son résiduel moyen ajusté (pour trois paramètres) est de kWh / jour, tandis que le résidu moyen ajusté du modèle de loi de Newton (pour quatre paramètres) est de kWh / jour, environ 5% de moins. Si tout ce que vous voulez faire est de tracer une courbe à travers les points de données, la simplicité et la fidélité relative de l'ajustement quadratique le recommandent.2.071.97
Cependant, l'ajustement quadratique est totalement inutile pour apprendre ce qui se passe! Sa formule,
y¯(t¯)=219.95−6.241t¯+0.04879(t¯)2,
ne révèle rien d'utile directement. En toute honnêteté, nous pourrions l'analyser un peu:
Il s'agit d'une parabole avec un sommet à degrés F. Nous pourrions prendre cela comme une estimation de la température constante de la maison. Il ne diffère pas significativement de notre première estimation de degrés. Cependant, le coût prévu à cette température est de kWh / jour. C'est deux fois la consommation d'énergie de base compatible avec la loi de Newton.t^0=6.241/(2×0.04879)=64.063.4219.95−6.241(63.4)+0.04879(63.4)2=20.4
Le coût marginal de chauffage ou de refroidissement est obtenu à partir de la valeur absolue de la dérivée, . Par exemple, en utilisant cette formule, nous le coût de chauffage d'une maison lorsque la température extérieure est de degrés à kWh / jour / degré F. C'est le double de la valeur estimée avec celle de Newton. Loi . 90-6,241+2(0,04879)(90)=2,54y¯′(t¯)=−6.241+2(0.04879)t¯90−6.241+2(0.04879)(90)=2.54
De même, le coût de chauffage de la maison à une température extérieure de degrés serait estimé à kWh / jour / degré F. C'est plus du double de la valeur estimée avec la loi de Newton.| - 6,241 + 2 ( 0,04879 ) ( 32 ) | = 3,1232|−6.241+2(0.04879)(32)|=3.12
Aux températures moyennes, l'ajustement quadratique se trompe dans l'autre sens. En effet, à son sommet dans la plage de à degrés, il prédit des coûts marginaux de chauffage ou de refroidissement presque nuls, même si cette température moyenne comprend des jours aussi froids que degrés et aussi chauds que degrés. (Peu de gens lisant ce post auront toujours leur chaleur à degrés (= degrés C)!)68 50 78 50 10606850785010
En bref, bien qu'il semble presque aussi bon dans la visualisation, l'ajustement quadratique se trompe grossièrement dans l'estimation des quantités fondamentales d'intérêt liées à la consommation d'énergie. Son utilisation pour évaluer les changements d'utilisation est donc problématique et doit être découragée.
Calcul
Ce R
code a effectué tout le calcul et le traçage. Il peut facilement être adapté à des ensembles de données similaires.
#
# 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))