2009-06-25 25 views
20

Jestem pewien, że jest to problem, z którym inni już wiele razy rozwiązali.Interpolowanie punktów danych w Excelu

Grupa ludzi zamiar zrobić pomiary (zużycie energii Home być dokładne). Wszystkie zrobią to w różnym czasie i w różnych odstępach czasu.

To, co otrzymam od każdej osoby, to zbiór par {data, wartość}, w których brakuje dat w zestawie.

Potrzebuję pełnego zestawu par {data, wartość}, gdzie dla każdej daty z przedziałem znana jest wartość (zmierzona lub obliczona). Spodziewam się, że prosta liniowa interpolacja wystarczyłaby dla tego projektu.

Jeśli założymy, że to musi być zrobione w programie Excel. Jaki jest najlepszy sposób interpolacji w takim zbiorze danych (więc mam wartość na każdy dzień)?

Dzięki.

UWAGA: Po zakończeniu tych zestawów danych określam nachylenie (tj. Użycie na dzień) i możemy rozpocząć porównywanie z domu do domu.

DODATKOWE INFORMACJE Po pierwszych kilku sugestiach: Nie chcę ręcznie określić, gdzie znajdują się otwory w moim zestawie pomiarowym (zbyt wiele niekompletnych zestawów pomiarowych !!). Szukam czegoś (istniejącego) automatycznego, aby to dla mnie zrobić. Więc jeśli wejście jest

{2009-06-01, 10} 
{2009-06-03, 20} 
{2009-06-06, 110} 

Potem oczekiwać, aby automatycznie uzyskać

{2009-06-01, 10} 
{2009-06-02, 15} 
{2009-06-03, 20} 
{2009-06-04, 50} 
{2009-06-05, 80} 
{2009-06-06, 110} 

Tak, mogę napisać oprogramowanie, które robi. Mam tylko nadzieję, że ktoś już posiada "gotowy do uruchomienia" program (Excel) dla tego (raczej ogólnego) problemu.

+1

Właśnie natknąłem się na tym dzisiaj. Tutaj jest fantastyczny przykład działania, który jest podobny do jednej odpowiedzi poniżej, ale ma przykład do pobrania, który nie wymaga dodatków (http://www.blueleafsoftware.com/Products/Dagra/LinearInterpolationExcel.php). – EvilDr

Odpowiedz

5

Najłatwiej zrobić to prawdopodobnie jest następujący:

  1. Pobierz Excel dodatek tutaj: XlXtrFun™ Extra Functions for Microsoft Excel

  2. użyć funkcji intepolate(). = interpolować ($ A $ 1 $ a $ 3 $ B $ 1: $ B $ 3 D1 FAŁSZ FAŁSZ)

kolumny A i B, powinien zawierać dane wejściowe, a kolumna G powinny zawierać wszystkie datę wartości. Formuła trafia do kolumny E.

+0

Dziękuję. Spodziewałem się, że będzie to standardowa część programu Excel. To robi, czego potrzebuję. –

+7

Xlxtrfun nie jest już dostępny do pobrania. Zobacz [komunikat błędu 403 na stronie internetowej] (http://www.xlxtrfun.com/cgi-bin/formmail/formmail.pl). – davidbourguignon

+0

ktoś wie, gdzie można uzyskać XLxtrfun teraz, gdy strona internetowa nie obsługuje już pobierania? –

5

Istnieją dwie funkcje, LINEST i TREND, które można spróbować zobaczyć, co daje lepsze wyniki. Oba przyjmują zestawy znanych X i Y wraz z nową wartością X i obliczają nową wartość Y. Różnica polega na tym, że funkcja REGLINP wykonuje prostą regresję liniową, podczas gdy TREND najpierw spróbuje znaleźć krzywą, która pasuje do twoich danych przed wykonaniem regresji.

+0

Dzięki za wskazówki. Próbowałem tych dwóch funkcji i najwyraźniej obie te funkcje wyznaczają pojedynczą linię prostą przez wszystkie punkty danych. Nie tego szukałem. Moim głównym wymaganiem jest to, że zmierzone punkty pozostają takie, jakie są. Funkcje te "łamią" to wymaganie. –

+0

Używaj tylko dwóch punktów dla znanych wejść, aby wykonać interpolację liniową. Więc jeśli masz pomiary o 8:30, 9:00, 10:00, 10:30 ... i chcesz oszacować pomiar o 9:30, potrzebujesz tylko pomiarów 9:00 i 10:00 w funkcji REGLINP, a nie w całym zestawie. Zrób to dla każdego punktu danych, którego potrzebujesz do oszacowania, używając dwóch najbliższych punktów granicznych. –

+5

Być może źle interpretuję twoją sugestię, ale dla mnie oznacza to, że ręcznie określam "Gdzie są dziury". Jestem programistą, z natury leniwym, chcę, żeby oprogramowanie to dla mnie zrozumiało. –

2

Miła graficzny sposób, aby zobaczyć, jak dobrze dopasować twoje interpolowane wyniki:

Take datę, par wartości i wykres je za pomocą wykresu XY w programie Excel (nie wykresie linia). Kliknij wynikową linię na wykresie prawym przyciskiem myszy i kliknij "Dodaj linię trendu". Istnieje wiele różnych opcji do wyboru typu dopasowania krzywej. Następnie możesz przejść do właściwości nowo utworzonej linii trendu i wyświetlić równanie i wartość R-kwadratów.

Upewnij się, że podczas formatowania etykiety linii trendu ustawiasz format liczbowy na wysoki stopień dokładności, tak aby wszystkie cyfry znaczące stałych równań były wyświetlane.

29

Natrafiłem na to i nie chciałem używać dodatku, ponieważ utrudnia on udostępnianie arkusza osobom, które nie mają zainstalowanego dodatku.

Mój oficer zaprojektował czystą formułę, która jest stosunkowo kompaktowa (kosztem użycia odrobiny magii).

warte Uwaga:

  • formuła działa poprzez:

    • użyciu funkcji MATCH znaleźć wiersz w zakresie inputs tuż przed wartością poszukiwany (np 3 jest wartość tuż przed 3.5)
    • przy użyciu OFFSET s w celu wybrania kwadratu tego wiersza i następnego (w kolorze fioletowym)
    • użyciu FORECAST zbudować interpolacji liniowej przy użyciu tylko te dwa punkty, a uzyskanie wyniku
  • Ta formuła nie może zrobić ekstrapolacji; upewnij się, że twoja wartość wyszukiwania znajduje się pomiędzy punktami końcowymi (robię to w poniższym przykładzie, mając ekstremalne wartości).

Nie jestem pewien, czy jest to zbyt skomplikowane dla osób; ale miał tę zaletę, że był bardzo przenośny (i prostszy niż wiele alternatywnych rozwiązań).

Jeśli chcesz skopiować i wkleić formułę, to jest:

=FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1

(inputs będąc nazwany zakres)

+2

+1 Całkiem przydatny hack. Chociaż formuła, którą oferujesz do wklejania kopii, nie pasuje do tego na zrzucie ekranu. Ta druga jest właściwa; pierwsza zawiera błędy. W moim przypadku użyłem: '= PROGNOZA (W33, OFFSET (T38: T59, MATCH (W33, S38: S59) -1,0 ,2,1), PRZESUNIĘCIE (S38: S59, MATCH (W33, S38: S59) -1,0 ,2,1)) 'gdzie S38: S59 zawiera wartości x oraz T38: T59 wartości y. –

+0

Dzięki! Poprawiono formułę. – YGA

+2

Obraz jest uszkodzony. –

1

alternatywnie.

=INDEX(yVals,MATCH(J7,xVals,1))+(J7-MATCH(J7,xVals,1))*(INDEX(yVals,MATCH(J7,xVals,1)+1)-INDEX(yVals,MATCH(J7,xVals,1)))/(INDEX(xVals,MATCH(J7,xVals,1)+1)-MATCH(J7,xVals,1)) 

gdzie j7 jest wartością x.

xvals jest zakres wartości x yvals jest zakres wartości y

łatwiej umieścić to do kodu.

2

Powyższa odpowiedź YGA nie obsługuje przypadków końca zakresu, gdzie pożądana wartość X jest taka sama, jak wartość X zakresu odniesienia. Używając przykładu podanego przez YGA, formuła Excela zwróci # DIV/0! błąd, gdy zażądano interpolowanej wartości na 9999. Jest to oczywiście jeden z powodów, dla których YGA dodał ekstremalne punkty końcowe 9999 i -9999 do zakresu danych wejściowych, a następnie zakłada, że ​​wszystkie prognozowane wartości znajdują się pomiędzy tymi dwoma liczbami. Jeśli takie wypełnienie jest niepożądane lub niemożliwe, inny sposób na uniknięcie # DIV/0!Błąd jest, aby sprawdzić dokładne dopasowanie wartości wprowadzonej przy pomocy następującego wzoru:

=IF(ISNA(MATCH(F3,inputs,0)),FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1)),OFFSET(inputs,MATCH(F3,inputs)-1,1,1,1)) 

gdzie F3 jest wartość gdzie interpolowane wyniki chciał.

Uwaga: Dodałem to jako komentarz do oryginalnego posta YGA, ale nie mam jeszcze wystarczającej liczby punktów reputacji.

0

Możesz dowiedzieć się, która formuła najlepiej pasuje do Twoich danych, korzystając z funkcji "linii trendu" programu Excel. Korzystanie z tej formuły, można obliczyć y dla każdego x

  1. Tworzenie liniowy rozproszenia (XY) dla niego (Insert => Scatter);
  2. Utwórz wielomianową lub ruchomą średnią linię trendu, zaznacz "Wyświetl równanie na wykresie " (kliknij prawym przyciskiem myszy na serię => Dodaj linię trendu);
  3. kopiowania równanie do komórki i zastąpić x 'S o żądanej wartości x

Na zdjęcie poniżej A12: A16 posiada x' S, B12: B16 HOLDS y „S i C12 zawiera wzór, który oblicza y dla każdego x.

Excel Interpolation

raz pierwszy opublikował odpowiedź here, ale później okazało to pytanie

Powiązane problemy