0

8 行、2151 列で構成される 2 つのデータ ファイルがあります。各列の各ファイル間で回帰を実行し、勾配、切片、および r 2 乗値を引き出したいと考えています。例: ファイル 1 の列 1 (8 行すべて) とファイル 2 の列 1 (8 行すべて) の回帰を実行し、関心のある 3 つの値 (切片、勾配、二乗) を取得して、次の列のセットに移動します。両方のファイル。

@thelatemail は、ほぼすべてのことを実行できる途方もないコードをくれました。

mapply(function(x,y) coef(lm(y~x)), input1, input2

線形モデルから R2 値を抽出できるように、これを少し調整したいと考えていました。そのため、成功を再現して先に進むことができるかどうかを確認するためだけに、簡単な関数を作成しました。

linear_calibration <- function(x,y) {
   co_values <- coef(lm(y~x))
   return(co_values)
}

test_output = mapply(linear_calibration(input1, input2))
write.table(test_output,file="dump.csv",sep=",")

残念ながら、このように書くと、次のようなエラーが表示されます。

Error in model.frame.default(formula = y ~ x, drop.unused.levels = TRUE) : 
invalid type (list) for variable 'y'

このように書き出すと、なぜエラーが発生するのかよくわかりません。私は何かを誤解しています。私が書いた長い形式は、元の 1 行と同じように見えます。しかし、そうではないので、コードを変更して機能させる方法を見つけようとしています。

4

1 に答える 1

0

最初のアイデアとして、マージが思いどおりに機能するようにするには、マージで by 引数を使用する必要があります。各データフレームに ID 列を作成します。これを ID と呼びます。

input_1$ID <- 1:8
input_2$ID <- 1:8

それでcombined <- merge(input_1, input2, by="ID", all.x=TRUE, all.y=TRUE)

2番目の考えに関しては、これが各データフレームから同じ列のサブセットを作成し、それに対して回帰を実行する方法です。

df <- cbind(input_1[1], input_2[1])
model <- lm(df[,1] ~ df[,2])

それが役立つことを願っています

于 2014-05-19T00:46:03.057 に答える