2017-06-29 15 views
0

首先,我使用RStudio。 我有一個數據幀(APD),我想將w.r.t放到因子Serial_number中。適合是適合的。然後我想用這個擬合來校準(校準()出investr包)。通過因子適配和校準數據幀

這裏是我的數據的示例圖片:

Data

這裏的數據:Data

目前我使用下列行通過的序列號,以適應:

Coefficients<- APD %>% 
    group_by(Serial_number) %>% 
    do(tidy(fit<- lm(log(log(Amplification)) ~ Voltage_transformed, .))) 

但在這裏,我無法應用calibrate() - 函數。校準功能需要一個從「lm」繼承的對象。整潔只適用於S3/S4對象。

你有什麼想法嗎?

+1

由於您尚未提供[可重現的示例](https://stackoverflow.com/a/5963610/5619526),因此使用'mtcars'數據集:'do.call('rbind', (mtcars,mtcars $ cyl,function(d)broom :: tidy(lm(mpg〜hp,data = d))))'。在這種情況下'cyl'將是分組變量 – bouncyball

+0

非常感謝!沒有意識到這個例子。稍後添加它並嘗試您的建議。 – Ben

+0

@bouncyball我無法應用預測功能..你能看看嗎? – Ben

回答

1

在您的發佈代碼中,您正在嘗試從每個模型,預測值,而不是係數。係數函數只是coefficients(object)

我也建議不嵌套你的代碼,因爲這會使得以後很難閱讀和更改。這裏有兩個廣義函數(每次做出假設,因此根據需要編輯):

lm_by_variable <- function(data_, formula_, byvar) { 
    by(
    data_, 
    data_[[byvar]], 
    FUN  = lm, 
    formula = formula_, 
    simplify = FALSE 
) 
} 


combine_coefficients <- function(fit_list) { 
    all_coefficients <- lapply(fit_list, coefficients) 
    do.call('rbind', all_coefficients) 
} 

lm_by_variable(...)應該是相當不言自明:集團通過byvar,使用lm對每個子集給定的公式,不簡化結果。簡化結果僅對交互式工作有用。在腳本中,最好確切知道返回的內容。在這種情況下,列表。

下一個函數combine_coefficients(...)返回擬合係數的matrix。它假定fit_list中的每個適用型號都具有相同的術語。我們可以添加邏輯來使其更健壯,但在這種情況下似乎並不需要。

+0

謝謝。恐怕這有點凌駕於我的頭上......我甚至沒有看到()。 – Ben