Vorrei suggerire che l'importante è sviluppare un modello di costo dell'energia fisicamente realistico e praticamente utile . Funzionerà meglio per rilevare le variazioni dei costi rispetto a qualsiasi visualizzazione dei dati non elaborati. Confrontando questo con la soluzione offerta su SO , abbiamo un caso di studio molto bello nella differenza tra l' adattamento di una curva ai dati e l' esecuzione di un'analisi statistica significativa.
(Questo suggerimento si basa sull'adattamento di un modello del genere al mio uso domestico dieci anni fa e sull'applicazione per tenere traccia delle modifiche durante quel periodo. Nota che una volta che il modello è idoneo, può essere facilmente calcolato in un foglio di calcolo allo scopo di tracciare modifiche, quindi non dovremmo sentirci limitati dalle funzionalità (in) del software per fogli di calcolo.)
Per questi dati, un tale modello fisicamente plausibile produce un quadro sostanzialmente diverso dei costi energetici e dei modelli di utilizzo rispetto a un semplice modello alternativo (un quadratico dei minimi quadrati di uso quotidiano rispetto alla temperatura media mensile). Di conseguenza, il modello più semplice non può essere considerato uno strumento affidabile per comprendere, prevedere o confrontare i modelli di utilizzo dell'energia.
Analisi
La legge di raffreddamento di Newton afferma che, in buona approssimazione, il costo del riscaldamento (durante un'unità di tempo) dovrebbe essere direttamente proporzionale alla differenza tra la temperatura esterna e la temperatura interna . Lascia che quella costante di proporzionalità sia . Anche il costo del raffreddamento dovrebbe essere proporzionale alla differenza di temperatura, con una costante simile - ma non necessariamente identica - di proporzionalità . (Ciascuno di questi è determinato dalla capacità isolante della casa e dall'efficienza dei sistemi di riscaldamento e raffreddamento.)tt0- αβ
Stimare e (che sono espressi in kilowatt (o dollari) per grado per unità di tempo) sono tra le cose più importanti che possono essere realizzate,αβ perché ci consentono di prevedere i costi futuri, nonché di misurare l'efficienza del casa e suoi sistemi energetici.
Poiché questi dati rappresentano il consumo totale di elettricità, includono costi di non riscaldamento come illuminazione, cucina, informatica e intrattenimento. Interessante è anche una stima di questo consumo medio di energia base (per unità di tempo), che chiamerò : fornisce una base su quanta energia può essere risparmiata e consente previsioni di costi futuri quando vengono apportati miglioramenti dell'efficienza di grandezza nota . (Ad esempio, dopo quattro anni ho sostituito una fornace con una dichiarata più efficiente del 30% - e in effetti era esattamente così.)γ
Infine, come approssimazione (lorda) supporrò che la casa sia mantenuta a una temperatura quasi costante durante tutto l'anno. (Nel mio modello personale presumo due temperature, , rispettivamente per l'inverno e l'estate - ma in questo esempio non ci sono ancora abbastanza dati per stimare entrambi in modo affidabile e sarebbero comunque abbastanza vicini.) Sapendo questo il valore aiuta a valutare le conseguenze del mantenimento della casa a una temperatura leggermente diversa, che è un'importante opzione di risparmio energetico.t0t0≤t1
I dati presentano una complicazione singolarmente importante e interessante : riflettono i costi totali durante i periodi in cui le temperature esterne fluttuano - e fluttuano molto, di solito circa un quarto della loro gamma annuale ogni mese. Come vedremo, questo crea una differenza sostanziale tra il modello istantaneo sottostante corretto appena descritto e i valori dei totali mensili. L'effetto è particolarmente pronunciato nei mesi intermedi, in cui si verificano entrambi (o nessuno dei due) riscaldamento e raffreddamento. Qualsiasi modello che non tiene conto di questa variazione "erroneamente" penserebbe che i costi energetici dovrebbero essere al tasso base durante qualsiasi mese con una temperatura media di , ma la realtà è molto diversa.γt0
Non abbiamo (prontamente) informazioni dettagliate sulle fluttuazioni di temperatura mensili a parte le loro gamme. Propongo di gestirlo con un approccio pratico, ma un po 'incoerente. Tranne le temperature estreme, ogni mese di solito si verificano aumenti o diminuzioni graduali della temperatura. Ciò significa che possiamo considerare la distribuzione approssimativamente uniforme. Quando l'intervallo di una variabile uniforme ha lunghezza , quella variabile ha una deviazione standard di . Uso questa relazione per convertire gli intervalli (da a ) in deviazioni standard. Ma poi, essenzialmente per ottenere un modello ben comportato, ridimensionerò la variazione alle estremità di questi intervalli usando NormalLs=L/6–√Avg. Low
Avg. High
distribuzioni (con queste SD e mezzi stimati fornite da Avg. Temp
).
Infine, dobbiamo standardizzare i dati in un tempo unitario comune. Sebbene sia già presente nella Daily kWh Avg.
variabile, manca di precisione, quindi dividiamo invece il totale per il numero di giorni al fine di recuperare la precisione persa.
Pertanto, il modello di raffreddamento unit-time costa a una temperatura esterna di èYt
y(t)=γ+α(t−t0)I(t<t0)+β(t−t0)I(t>t0)+ε(t)
dove è la funzione indicatore e rappresenta tutto ciò che altrimenti non è stato esplicitamente catturato in questo modello. Ha quattro parametri da stimare: e . (Se sei davvero sicuro di potresti fissare il suo valore piuttosto che stimarlo.)Iεα,β,γt0t0
I costi totali riportati durante un periodo di tempo da a quando la temperatura varia con il tempo sarà quindix0x1t(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.
Se il modello è del tutto buono, le fluttuazioni in dovrebbero raggiungere una media di un valore vicino a zero e sembreranno cambiare casualmente di mese in mese. Approssimazione delle fluttuazioni in con una distribuzione normale della media (la media mensile) e della deviazione standard (come precedentemente indicato dall'intervallo mensile) e facendo i rendimenti integraliε(t)ε¯t(x)t¯s(t¯)
y¯(t¯)=γ+(β−α)s(t¯)2ϕs(t¯−t0)+(t¯−t0)(β+(α−β)Φs(t0−t¯))+ε¯(t¯).
In questa formula, è la distribuzione cumulativa di una variabile normale di media zero e deviazione standard ; è la sua densità.Φss(t¯)ϕ
Raccordo modello
Questo modello, pur esprimendo una relazione non lineare tra costi e temperatura, è tuttavia lineare nelle variabili e . Tuttavia, poiché non è lineare in e non è noto, è necessaria una procedura di adattamento non lineare. Per illustrare, l'ho semplicemente scaricato in un massimizzatore di probabilità (usando per il calcolo), supponendo che i siano indipendenti e identicamente distribuiti, con distribuzioni normali di zero medio e deviazione standard comune .α,β,γt0t0R
ε¯σ
Per questi dati, le stime sono
(α^,β^,γ^,t0^,σ^)=(−1.489,1.371,10.2,63.4,1.80).
Questo significa:
Il costo per il riscaldamento è di circa kWh / giorno / grado F.1.49
Il costo per il raffreddamento è di circa kWh / giorno / grado F. Il raffreddamento è un po 'più efficiente.1.37
Il consumo di energia di base (senza riscaldamento / raffreddamento) è di kWh / giorno. (Questo numero è abbastanza incerto; dati aggiuntivi aiuteranno a fissarlo meglio.)10.2
La casa è mantenuta a una temperatura vicino a gradi F.63.4
Le altre variazioni non esplicitamente considerate nel modello hanno una deviazione standard di kWh / giorno.1.80
Gli intervalli di confidenza e altre espressioni quantitative di incertezza in queste stime possono essere ottenuti in modo standard con il meccanismo di massima verosimiglianza.
visualizzazione
Per illustrare questo modello, la figura seguente traccia i dati, il modello sottostante, l'adattamento alle medie mensili e un semplice adattamento quadratico dei minimi quadrati.
I dati mensili sono mostrati come croci scure. Le linee grigie orizzontali su cui giacciono mostrano gli intervalli di temperatura mensili. Il nostro modello sottostante, che riflette la legge di Newton, è mostrato dai segmenti di linea rossa e blu che si incontrano a una temperatura di . Il nostro adattamento ai dati non è una curva , perché dipende dagli intervalli di temperatura. Viene quindi mostrato come singoli punti blu e rossi solidi. (Tuttavia, poiché gli intervalli mensili non variano molto, questi punti sembrano tracciare una curva - quasi uguale alla curva quadratica tratteggiata.) Infine, la curva tratteggiata corrisponde ai minimi quadrati quadratici adattati (alle croci scure ).t0
Notare quanto gli adattamenti si discostano dal modello sottostante (istantaneo), specialmente alle temperature medie! Questo è l'effetto della media mensile. (Pensa alle altezze delle linee rosse e blu che vengono "spalmate" su ogni segmento grigio orizzontale. A temperature estreme tutto è centrato sulle linee, ma a temperature medie i due lati della "V" vengono mediati insieme, riflettendo la necessità per il riscaldamento in alcune occasioni e il raffreddamento in altre occasioni durante il mese.)
Confronto tra modelli
I due accoppiamenti - quello accuratamente sviluppato qui e quello semplice, facile, quadratico - concordano strettamente sia tra loro sia con i punti dati. L'adattamento quadratico non è altrettanto buono, ma è comunque decente: il suo residuo medio aggiustato (per tre parametri) è kWh / giorno, mentre il residuo medio aggiustato del modello di legge di Newton (per quattro parametri) è kWh / giorno, circa il 5% in meno. Se tutto ciò che vuoi fare è tracciare una curva attraverso i punti dati, allora la semplicità e la relativa fedeltà dell'adattamento quadratico lo consiglierebbero.2.071.97
Tuttavia, l'adattamento quadratico è assolutamente inutile per imparare cosa sta succedendo! La sua formula,
y¯(t¯)=219.95−6.241t¯+0.04879(t¯)2,
non rivela nulla di utile direttamente. In tutta onestà, potremmo analizzarlo un po ':
Questa è una parabola con vertice a gradi F. Potremmo prenderlo come una stima della temperatura costante della casa. Non differisce in modo significativo dalla nostra prima stima di gradi. Tuttavia, il costo previsto a questa temperatura è kWh / giorno. Questo è il doppio del consumo di energia di base adatto alla Legge di Newton.t^0=6.241/(2×0.04879)=64.063.4219.95−6.241(63.4)+0.04879(63.4)2=20.4
Il costo marginale di riscaldamento o raffreddamento è ottenuto dal valore assoluto del derivato, . Ad esempio, usando questa formula il costo del riscaldamento di una casa quando la temperatura esterna è di gradi come kWh / giorno / grado F. Questo è il doppio del valore stimato con Newton legge . 90-6.241+2(0,04,879 mila)(90)=2.54y¯′(t¯)=−6.241+2(0.04879)t¯90−6.241+2(0.04879)(90)=2.54
Analogamente, il costo per riscaldare la casa a una temperatura esterna di gradi sarebbe stimato a kWh / giorno / grado F. Questo è più del doppio del valore stimato con la legge di Newton.| - 6.241 + 2 ( 0.04879 ) ( 32 ) | = 3.1232|−6.241+2(0.04879)(32)|=3.12
Alle temperature medie, l'adattamento quadratico si muove nella direzione opposta. In effetti, al suo vertice nell'intervallo da a gradi, prevede quasi zero costi marginali di riscaldamento o raffreddamento, anche se questa temperatura media comprende giorni freddi come gradi e caldi come gradi. (Poche persone che leggono questo post avranno ancora il calore spento a gradi (= gradi C)!)68 50 78 50 10606850785010
In breve, sebbene appaia quasi altrettanto buono nella visualizzazione, l'adattamento quadratico erroneamente errato nella stima delle quantità fondamentali di interesse legate al consumo di energia. Il suo utilizzo per valutare i cambiamenti nell'uso è quindi problematico e dovrebbe essere scoraggiato.
Calcolo
Questo R
codice ha eseguito tutte le operazioni di elaborazione e stampa. Può essere facilmente adattato a set di dati simili.
#
# 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))