Gostaria de sugerir que o importante é desenvolver um modelo de custo de energia fisicamente realista e praticamente útil . Isso funcionará melhor para detectar mudanças nos custos do que qualquer visualização dos dados brutos pode realizar. Ao comparar isso com a solução oferecida no SO , temos um bom estudo de caso sobre a diferença entre ajustar uma curva aos dados e realizar uma análise estatística significativa.
(Essa sugestão baseia-se em ajustar esse modelo ao meu uso doméstico há uma década e aplicá-lo para rastrear alterações durante esse período. Observe que, uma vez que o modelo está em forma, ele pode ser facilmente calculado em uma planilha para fins de rastreamento alterações, portanto, não devemos nos sentir limitados pelos (in) recursos do software de planilha.)
Para esses dados, esse modelo fisicamente plausível produz uma imagem substancialmente diferente dos custos de energia e padrões de uso do que um modelo alternativo simples (um ajuste quadrático de mínimos quadrados do uso diário em relação à temperatura média mensal). Consequentemente, o modelo mais simples não pode ser considerado uma ferramenta confiável para entender, prever ou comparar padrões de uso de energia.
Análise
A Lei de Newton de Resfriamento diz que, para uma boa aproximação, o custo do aquecimento (durante uma unidade de tempo) deve ser diretamente proporcional à diferença entre a temperatura externa e a temperatura interna . Que essa constante de proporcionalidade seja . O custo do resfriamento também deve ser proporcional a essa diferença de temperatura, com uma constante de proporcionalidade semelhante - mas não necessariamente idêntica - . (Cada uma delas é determinada pela capacidade de isolamento da casa, bem como pelas eficiências dos sistemas de aquecimento e refrigeração.)t 0 - αtt0 0- αβ
A estimativa de e (que são expressos em kilowatts (ou dólares) por grau por unidade de tempo) está entre as coisas mais importantes que podem ser realizadas,αβ porque nos permitem prever custos futuros e medir a eficiência da casa e seus sistemas de energia.
Como esses dados são o uso total de eletricidade, incluem custos de não aquecimento, como iluminação, culinária, computação e entretenimento. Também é interessante uma estimativa desse uso médio de energia base (por unidade de tempo), que chamarei de : fornece um piso sobre quanta energia pode ser economizada e permite previsões de custos futuros quando melhorias de eficiência de magnitude conhecida são feitas . (Por exemplo, depois de quatro anos, substituí um forno por um que alegava ser 30% mais eficiente - e era exatamente isso.)γ
Finalmente, como uma aproximação (bruta), assumirei que a casa é mantida a uma temperatura quase constante ao longo do ano. (No meu modelo pessoal, assumo duas temperaturas, , para o inverno e o verão, respectivamente - mas ainda não existem dados suficientes neste exemplo para estimar os dois de maneira confiável e estariam bem próximos de qualquer maneira.) O valor ajuda a avaliar as conseqüências de manter a casa em uma temperatura ligeiramente diferente, que é uma importante opção de economia de energia.t0 0t0 0≤ t1 1
Os dados apresentam uma complicação singularmente importante e interessante : refletem os custos totais durante períodos em que as temperaturas externas flutuam - e flutuam muito, geralmente cerca de um quarto da faixa anual a cada mês. Como veremos, isso cria uma diferença substancial entre o modelo instantâneo subjacente correto descrito e os valores dos totais mensais. O efeito é especialmente pronunciado nos meses intermediários, onde ocorrem aquecimento (ou nenhum) de aquecimento e resfriamento. Qualquer modelo que não responda a essa variação erroneamente "pensaria" que os custos de energia deveriam estar na taxa básica durante qualquer mês com uma temperatura média de , mas a realidade é muito diferente.γt0 0
Não temos (prontamente) informações detalhadas sobre as flutuações mensais de temperatura além de seus intervalos. Proponho lidar com isso com uma abordagem prática, mas um pouco inconsistente. Exceto em temperaturas extremas, todos os meses geralmente experimentam aumentos ou diminuições graduais de temperatura. Isso significa que podemos considerar a distribuição aproximadamente uniforme. Quando o intervalo de uma variável uniforme possui comprimento , essa variável possui um desvio padrão de . I usar esta relação para converter os intervalos (de a ) para os desvios padrão. Porém, essencialmente, para obter um modelo bem comportado, reduzirei a ponderação da variação no final desses intervalos usando Normaleus = L / 6-√Avg. Low
Avg. High
distribuições (com esses SDs estimados e meios dados por Avg. Temp
).
Finalmente, devemos padronizar os dados para um tempo de unidade comum. Embora isso já esteja presente na Daily kWh Avg.
variável, ele não tem precisão, então vamos dividir o total pelo número de dias para recuperar a precisão perdida.
Assim, o modelo de resfriamento em tempo unitário custa a uma temperatura externa de éYt
y( t ) = γ+ α ( t - t0 0) I( t < t0 0) + β( t - t0 0) I( t > t0 0) + ε ( t )
onde é a função do indicador e representa tudo que não explicitamente capturado neste modelo. Ele tem quatro parâmetros para estimar: e . (Se você realmente tem certeza de pode fixar seu valor em vez de estimar.)Euεα , β, γt0 0t0 0
Os custos totais relatados durante um período de tempo a quando a temperatura varia com o tempo serão, portanto,x0 0x1 1t(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 o modelo é bom, as flutuações em devem ter uma média de um valor próximo a zero e parecerão mudar aleatoriamente mês a mês. Aproximando as flutuações em com uma distribuição Normal da média (a média mensal) e desvio padrão (conforme fornecido anteriormente no intervalo mensal) e fazendo as integrais produzemε(t)ε¯t(x)t¯s(t¯)
y¯(t¯)=γ+(β−α)s(t¯)2ϕs(t¯−t0)+(t¯−t0)(β+(α−β)Φs(t0−t¯))+ε¯(t¯).
Nesta fórmula, é a distribuição cumulativa de uma variável Normal de média zero e desvio padrão ; é sua densidade.Φss(t¯)ϕ
Modelo de montagem
Este modelo, embora expresse uma relação não linear entre custos e temperatura, é linear nas variáveis e . No entanto, como não é linear em e não é conhecido, precisamos de um procedimento de ajuste não linear. Para ilustrar, simplesmente coloquei-o em um maximizador de probabilidade (usando para o cálculo), assumindo que o seja independente e distribuído de forma idêntica, com distribuições normais de zero médio e desvio padrão comum .γ t 0 t 0 ˉ ε σα,β,γt0t0R
ε¯σ
Para esses dados, as estimativas são
(α^,β^,γ^,t0^,σ^)=(−1.489,1.371,10.2,63.4,1.80).
Isso significa:
O custo do aquecimento é de aproximadamente kWh / dia / grau F.1.49
O custo para resfriar é de aproximadamente kWh / dia / grau F. O resfriamento é um pouco mais eficiente.1.37
O uso de energia básica (sem aquecimento / resfriamento) é de kWh / dia. (Esse número é bastante incerto; dados adicionais ajudarão a identificá-lo melhor.)10.2
A casa é mantida a uma temperatura próxima de graus F.63.4
As demais variações não explicitamente explicadas no modelo apresentam um desvio padrão de kWh / dia.1.80
Intervalos de confiança e outras expressões quantitativas de incerteza nessas estimativas podem ser obtidas de maneiras padrão com o mecanismo de máxima verossimilhança.
Visualização
Para ilustrar esse modelo, a figura a seguir plota os dados, o modelo subjacente, o ajuste às médias mensais e um ajuste quadrático de mínimos quadrados simples.
Os dados mensais são mostrados como cruzes escuras. As linhas horizontais cinzas nas quais se encontram mostram as faixas mensais de temperatura. Nosso modelo subjacente, refletindo a lei de Newton, é mostrado pelos segmentos de linha vermelha e azul que se encontram a uma temperatura de . Nosso ajuste aos dados não é uma curva , porque depende das faixas de temperatura. É mostrado, portanto, como pontos individuais azuis e vermelhos sólidos. (No entanto, como os intervalos mensais não variam muito, esses pontos parecem traçar uma curva - quase o mesmo que a curva quadrática pontilhada.) )t0
Observe o quanto os ajustes se afastam do modelo subjacente (instantâneo), especialmente nas temperaturas médias! Este é o efeito da média mensal. (Pense nas alturas das linhas vermelha e azul sendo "borradas" em cada segmento cinza horizontal. Em temperaturas extremas, tudo fica centralizado nas linhas, mas a temperaturas médias, os dois lados do "V" são calculados em média, refletindo a necessidade para aquecer algumas vezes e esfriar outras vezes durante o mês.)
Comparação de modelos
Os dois ajustes - aquele desenvolvido minuciosamente aqui e o ajuste simples, fácil e quadrático - concordam estreitamente entre si e com os pontos de dados. O ajuste quadrático não é tão bom, mas ainda é decente: seu resíduo médio ajustado (para três parâmetros) é de kWh / dia, enquanto o resíduo médio ajustado do modelo da lei de Newton (para quatro parâmetros) é de kWh / dia, cerca de 5% menor. Se tudo o que você deseja fazer é traçar uma curva através dos pontos de dados, a simplicidade e a fidelidade relativa do ajuste quadrático o recomendariam.2.071.97
No entanto, o ajuste quadrático é totalmente inútil para aprender o que está acontecendo! Sua fórmula,
y¯(t¯)=219.95−6.241t¯+0.04879(t¯)2,
não revela nada de uso diretamente. Com toda a justiça, poderíamos analisar um pouco:
Esta é uma parábola com vértice em graus F. Podemos tomar isso como uma estimativa da temperatura constante da casa. Não difere significativamente de nossa primeira estimativa de graus. No entanto, o custo previsto para esta temperatura é kWh / dia. Isso é o dobro do uso básico de energia, conforme a Lei de Newton.t^0=6.241/(2×0.04879)=64.063.4219.95−6.241(63.4)+0.04879(63.4)2=20.4
O custo marginal de aquecimento ou resfriamento é obtido a partir do valor absoluto da derivada, . Por exemplo, usando esta fórmula, o custo de aquecimento de uma casa quando a temperatura externa for graus como kWh / dia / grau F. Isso é o dobro do valor estimado com Newton. Lei . 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
Da mesma forma, o custo para aquecer a casa a uma temperatura externa de graus seria estimado em kWh / dia / grau F. Este é mais do que o dobro do valor estimado com a Lei de Newton.| - 6,241 + 2 ( 0,04879 ) ( 32 ) | = 3,1232|−6.241+2(0.04879)(32)|=3.12
Nas temperaturas médias, o ajuste quadrático erra na outra direção. De fato, em seu vértice na faixa de a graus, ele prevê quase zero custo marginal de aquecimento ou refrigeração, mesmo que essa temperatura média inclua dias tão frios quanto graus e tão quentes quanto graus. (Poucas pessoas que estão lendo este post ainda terão o calor desligado a graus (= graus C)!)68 50 78 50 10606850785010
Em resumo, embora pareça quase tão bom na visualização, o ajuste quadrático erra bastante na estimativa de quantidades fundamentais de interesse relacionadas ao uso de energia. Seu uso para avaliar mudanças no uso é, portanto, problemático e deve ser desencorajado.
Computação
Este R
código executou toda a computação e plotagem. Ele pode ser facilmente adaptado a conjuntos de dados semelhantes.
#
# 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))
Recebi uma resposta no StackOverflow . Se alguém tiver pensamentos adicionais, ainda estou muito interessado em soluções alternativas.
/programming/29777890/data-visualization-how-to-represent-kwh-usage-by-year-againstagaa-temperatu
fonte