2017-12-18 15 views
2

統合しようとしたときの長さが異なる(しかし、長さが同じである):エラー - 私はデータを持っている

Date     Value 
17/12/17 8:39:45 1144.5783 
17/12/17 8:40:02 1646.5863 
17/12/17 8:40:15 1104.4177 
17/12/17 8:40:30 1244.9799 
17/12/17 8:40:45 1084.3373 
17/12/17 8:41:00 1285.1406 
17/12/17 8:41:15 1144.5783 
17/12/17 8:41:30 1124498 
17/12/17 8:41:45 1265.0602 
17/12/17 8:42:00 1124498 
17/12/17 8:42:15 1144.5783 
17/12/17 8:42:30 1164.6586 
17/12/17 8:42:45 1084.3373 
17/12/17 8:43:00 1184739 
17/12/17 8:43:15 1064257 
17/12/17 8:43:30 1164.6586 
17/12/17 8:43:45 1184739 
17/12/17 8:44:00 1244.9799 

私は日中に積分を計算します。 私の実際のデータは3124行から成っています。

Error in xy.coords(x, y, setLab= FALSE): 'x' and 'y' lengths differ 
が、長さは同じです:私はRESを実行しようとすると

library(lubridate) 
library(MESS) 

thedata <- read.csv('data.csv') 

datetime <- dmy_hms(as.character(thedata$Date)) 
time_length_data <- time_length(interval(datetime[1] , datetime[18]), "second") 
# data is gathered by almost every 15 sec 
divide_data <- 1:(time_length_data/15) 
# I am ommiting a few rows in order to have the same length as "sec" matrix below. 
divide_data <- divide_data[1:18] 

# this contains the values and has length 18 
sec <- as.numeric(as.matrix(thedata[2])) 

res <- auc(divide_data, sec, from = min(divide_data), to = max(divide_data), type = 'spline', absolutearea = TRUE) 

、それは私を与えます。

+0

小さなサブサンプルに基づいて質問を更新できますか?あなたの実際のデータは3124行で忘れてしまいます。 –

+1

あなたの 'auc'関数はどこにありますか? – kath

+0

私はあなたの 'auc'が' MESS'からのものだと仮定していますが、あなたの例にそれを含めるべきです。 – Eumenedies

答えて

2

これはabsoluteareaフラグがTRUEに設定されたMESSパッケージのバグだと思います。あなたがaucためのコードを見れば

if (absolutearea) 
    myfunction <- function(x) { abs(splinefun(x, y, method="natural")) } 
else 
    myfunction <- splinefun(x, y, method="natural") 

res <- integrate(myfunction, lower=from, upper=to)$value 

2つの問題がここに生じ、xが2回指定してsplinefunは機能ではなく、値を返しています。

absoluteareaがfalseの場合、myfunctionauc引数xyに訓練されたスプライン関数です。

absoluteareaがtrueの場合、myfunctionは無名関数の引数xauc関数の引数yに訓練された(ではない値が返されたメモ機能、)スプライン関数の絶対値です。

integrate関数は、一連の値をmyfunctionに渡しています。 absoluteareaがfalseの場合、myfunctionは、それぞれの値でスプラインの値を返します。 absoluteareaがtrueの場合、myfunctionは関数の無意味な絶対値を返します。 x(値がintegrateによって匿名関数に渡される)がyと異なる長さ(auc関数に渡されたy値)で初めてエラーが発生するため、数値エラーではありません。

+0

でインストールしてください。問題の完全な答えと説明。ユーザー(あなた?)が修正を提出し、新しいバージョンが起動していなければなりません。ありがとう! – ekstroem

関連する問題