lm()の値の範囲をサブセットする方法 -- r フィールド と subset フィールド 関連 問題

How to subset a range of values in lm()












4
vote

問題

日本語

lm()のヘルプファイルは、サブセット引数の構文にはなりません。私のデータセットの一部だけに最適な行を見つけるためにそれを得る方法を確信していません。この質問は似ていますが、私はそれを使って私の特定の問題を解決することができませんでした。 lm()関数でのサブセット引数の作業方法?

これは私のコードです:

<事前> <コード> with(dat[dat$SIZE <7 & dat$SIZE > 0.8 ,], plot(SP.RICH~SIZE, log="x", xlim=c(1,9), ylim=c(60,180), ylab="plant species richness", xlab="log area (ha)", type="n")) with(dat[dat$SIZE <7 & dat$SIZE > 0.8 ,], points(SP.RICH~SIZE, pch=20, cex=1)) fit=lm(SP.RICH~SIZE, subset=c(1:7))

LEGRESS LINEが、plot()とpoints()コマンドで上記のサブセットする値のみに描画されていることを確認します。

英語

The help file for lm() doesn't go into the syntax for the subset argument. I am not sure how to get it to find the line of best fit for only a portion of my data set. This question is similar, but I wasn't able to solve my particular problem using it. How does the subset argument work in the lm() function?

Here is my code:

    with(dat[dat$SIZE <7 & dat$SIZE > 0.8 ,], plot(SP.RICH~SIZE, log="x",       xlim=c(1,9), ylim=c(60,180), ylab="plant species richness",        xlab="log area (ha)", type="n"))    with(dat[dat$SIZE <7 & dat$SIZE > 0.8 ,], points(SP.RICH~SIZE, pch=20, cex=1))    fit=lm(SP.RICH~SIZE, subset=c(1:7)) 

I would like to make sure that the regression line is drawn only for the values that I subset above in the plot() and points() commands.

</div
     
   
   

回答リスト

12
 
vote
vote
ベストアンサー
 

lm() のサブセットパラメータおよび他のモデルフィッティング関数は、その引数としてデータフレームの環境で評価されたデータフレームの長さを論理ベクトルとして取ります。だから、私が正しく理解しているならば、私は次のものを使うでしょう:

<事前> <コード> fit <- lm(SP.RICH~SIZE, data=dat, subset=(SIZE>0.8 & SIZE<7))
 

The subset parameter in lm() and other model fitting functions takes as its argument a logical vector the length of the dataframe, evaluated in the environment of the dataframe. So, if I understand you correctly, I would use the following:

fit <- lm(SP.RICH~SIZE, data=dat, subset=(SIZE>0.8 & SIZE<7)) 
</div
 
 
 
 
0
 
vote

しかし、データ内のグループごとに1つのLMを実行したい場合は、上記のソリューションが役立ちません。列とは異なる国があると言うと、各国内の豊かさとサイズの関係を理解し​​たいとします。< / P>

その関数のヘルプをr http://astrostatistics.psu.edu / su07/r/html/base/html/by.html :

<事前> <コード> require(stats) attach(warpbreaks) by(warpbreaks[, 1:2], tension, summary) by(warpbreaks[, 1], list(wool = wool, tension = tension), summary) by(warpbreaks, tension, function(x) lm(breaks ~ wool, data = x)) ## now suppose we want to extract the coefficients by group tmp <- by(warpbreaks, tension, function(x) lm(breaks ~ wool, data = x)) sapply(tmp, coef)

List tmp のように、LMパラメータを抽出できます。

 

But the above solution does not help if you want to run one lm for each group in your data - lets say that you have different countries as a column and you want to understand the relationship between richness and size within each country.

For that I recommend following the help for the function by in R http://astrostatistics.psu.edu/su07/R/html/base/html/by.html:

require(stats) attach(warpbreaks) by(warpbreaks[, 1:2], tension, summary) by(warpbreaks[, 1], list(wool = wool, tension = tension), summary) by(warpbreaks, tension, function(x) lm(breaks ~ wool, data = x))  ## now suppose we want to extract the coefficients by group tmp <- by(warpbreaks, tension, function(x) lm(breaks ~ wool, data = x)) sapply(tmp, coef) 

From the list tmp you can extract any lm parameters you like.

</div
 
 

関連する質問

4  配列が他の配列のサブセットであるかどうかを確認します。ジャワー  ( Checking if array is subset of other array java ) 
私は100個の数字を配列してから、最初の20をランダムにシャッフルして2つの異なるアレイを持つようにしてください。 AとB。 この割り当ての場合、アレイAからの最初の20個の数字が最初の20個の数字AF配列Bのサブセットであることを確認する必要がある。 今まで...

46  特定の値に合計するすべてのサブセットを見つけます  ( Find all subsets that sum to a particular value ) 
数字のセットを考える:{1,3,2,5,4,9}、特定の値(この例では9)に合計するサブセットの数を見つけます。 これは、セットが9に合計されたサブセットを持っているかどうかを確認するのではなく、わずかな違いがあるサブセット合計の問題と似ています。そのようなサ...

1  データフレームの各列をフィルタリングすると、比類のない値の場合はNA  ( Filtering each column of a data frame an put na for unmatched values ) 
私は以下のような表を持っています: <事前> <コード> [,1] [,2] [,3] [,4] [,5] [1,] a A 0.06 0.31 -1.5 [2,] b B -0.75 0.2 ...

160  データをフィルタリングします.RAME行の論理条件によって  ( Filter data frame rows by a logical condition ) 
論理条件に基づいて、 data.frame から行をフィルタリングしたいです。 のようなデータフレームがあるとしましょう。 <事前> <コード> expr_value cell_type 1 5.345618 bj fibroblast 2...

1  データフレームから特定の値を削除するには、どのようにして特定の値を削除できますか?  ( How can i use indeces to remove specific values from a dataframe ) 
998877611 関数を使用して、9変数データフレームの変数 lockObject2 のどの値が1024以上であるかを教えるインデックスを生成し、 variable lockObject3 は768を超えています。 template<cla...

0  線分に基づいて一連のポイントをサブセットに分割する  ( Splitting a set of points into subsets based on line segments ) 
ポイントと一連の線分を持っています。これらの線分に基づいて、一連のポイントをサブセットまたはクラスタに分割したいと思います。最終的には、各サブセット(右側の図に示すオレンジ色の多角形)ごとに凸の船体を探しています。以下の例の線分は互いに接続されていますが、これ...

0  他のテーブルから小計に基づいてフィールドを更新します  ( Update a field based on subtotal from another table ) 
Oracle(10)を使用しています。 次の2つのテーブルを持っています: <事前> <コード> Table1 (uniq rows): ID AMOUNT DATE Table2: ID AMOUNT1 AMOUNT2 ...AMO...

1  Data.tableファイルのより効率的なループを作成します  ( Make a more efficient loop in data table file ) 
現在のデータをループでサブセットしようとしています。プロセスは非常に遅いです。これがサブセット化前のデータサンプルです。 <事前> <コード> # V1 V2 V3 type #1: 1 362.25 361.75 ...

0  特定の値を含むセルのみを保持します  ( Keep only the cells that contain certain value ) 
私は、さまざまな診断コードを含む25列の16000以上の行を持つデータセット「ケース」を持っています。 56個の固有の診断コードを含むキーを持っています。キーの中のものと一致するコードを解析する必要があります。これをより簡潔なデータセットに集めることができます...

1  VECのデータをサブセット化する  ( Subsetting data with a vec ) 
データフレームをベクトルでサブセットしたいが、ベクトルの各値のサブセットを複製したい。 <事前> <コード> data = data.frame(A = c(1,2,3,1), B = c(1,2,3,4)) vec = c(1, 1, 1) subset(d...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有