2016-04-13 19 views
0

Zaten şu data.frame hazırlanan ayrıntı düzeylerinde:farklı zaman birleştirilmiş veri setleri üzerinde {istatistikler} optim uygula

Error in optim(par = c(0, 1), min.RSS, data = DF) : 
function cannot be evaluated at initial parameters 
: nedeniyle NA değerlere

> head(DF) 
time  x  y 
33.8351 NA 952.7843 
40  1030  NA 
40.11 1031  NA 
40.22 1039  NA 
40.32 1046  NA 
40.43 1053  NA 

, optim bana aşağıdaki hatayı veriyor

Peki, burada ne yapmalıyım? Minimum sayıda doldurulmuş satır elde etmek ve kalanını bırakmak için yuvarlak değerler içeren bir veri kümesi oluşturun. Ben clueless.

DÜZENLEME: Verilerimin kalan kareleri toplamını iki parametreli bir doğrusal modele karşı en aza indirmeye çalışıyorum.

min.RSS <- function(data, par) { 
       with(data, sum((par[1] + par[2] * x - y)^2)) 
    } 

bu gibi sorun düşünün: veri noktaları, sınırlı sayı ve bir eğri (veri noktaları daha büyük grubu B), bir veri kümesi bir bulunmaktadır. Amaç, eğriyi, A veri seti ile en uygun şekilde kabul edecek şekilde yeniden ölçeklendirmektir. Yeniden ölçeklendirme, doğrusal modeldir ve ben, eğimi ve lineer denklemin y-kesişimini optimize etmeye çalışıyorum.

+0

optimize etmek çalışıyorsun? Min.RSS kendini tanımlanmış işlevi mi? – Psidom

+0

Üzgünüm, işlevi eklemedim. Güncellenmiş. –

+0

NA'yı veri çerçevenizde tutmak zorunlu mudur? NA alanları içeren satırları kaldırabilir misiniz? – Psidom

cevap

0

Verileri enterpolasyonla. Burada, sonunda Notta gösterilen DF'u kullanıyoruz. Aşağıda, hayvanat bahçesi paketinden na.locf kullanıyoruz. Ayrıca, diğer enterpolasyon şemaları için aynı paketten na.approx ve na.spline'a bakın.

library(zoo) 
lm(y ~ x, na.locf(DF)) 

vererek:

Call: 
lm(formula = y ~ x, data = na.locf(DF)) 

Coefficients: 
(Intercept)   x 
     952.8   0.0 

Not: giriş DF tekrarlanabilir biçimde olur:

Lines <- "time  x  y 
33.8351 NA 952.7843 
40  1030  NA 
40.11 1031  NA 
40.22 1039  NA 
40.32 1046  NA 
40.43 1053  NA" 
DF <- read.table(text = Lines, header = TRUE)