タグ付けされた質問 「r」

このタグは、(a)質問の重要な部分または予想される回答として「R」が含まれる* on-topic *の質問に使用します。&(b)「R」の使い方について「*」だけではありません。

1
一般化された加法モデル(GAM)、相互作用、共変量
私は予測のための多くのツールを調査してきましたが、一般化された加算モデル(GAM)がこの目的に最も可能性があることがわかりました。GAMは素晴らしいです!複雑なモデルを非常に簡潔に指定できます。ただし、その簡潔さが、特にGAMが相互作用項と共変量をどのように考えているかという点で、混乱を招いています。 yいくつかのガウス分布に加えてノイズが加わった単調関数であるサンプルデータセット(投稿の最後に再現可能なコード)を考えてみましょう。 データセットには、いくつかの予測変数があります。 x:データのインデックス(1〜100)。 w:yガウス分布が存在するセクションをマークする2番目の機能。w値は1〜20で、11〜30 x、および51〜70です。それ以外の場合wは0です。 w2:w + 1ので、0値はありません。 Rのmgcvパッケージにより、これらのデータの多くの可能なモデルを簡単に指定できます。 モデル1および2はかなり直感的です。デフォルトの平滑度でyインデックス値のみから予測xすると、あいまいに正しいものが生成されますが、滑らかすぎます。に存在する「平均ガウス」モデルの結果yからのみ予測し、他のデータポイントは「認識」しません。すべてのデータポイントの値は0です。wyw モデル3は両方xを使用しw、1Dスムースとして使用して、ぴったりとフィットします。モデル4は、2Dスムーズを使用してxおりw、優れた適合性も提供します。これら2つのモデルは非常に似ていますが、同一ではありません。 モデル5モデルx"by" w。モデル6はその逆です。mgcvのドキュメントには、「by引数により、スムーズ関数に['by'引数で指定された共変量]が乗算されることが保証されている」と記載されています。モデル5とモデル6は同等ではありませんか? モデル7および8は、予測子の1つを線形項として使用します。GLMがこれらの予測子で行うことを単純に実行し、モデルの残りの部分に効果を追加するため、これらは直感的に理にかなっています。 最後に、モデル9はモデル5と同じですが、x「by」w2(つまり)で平滑化されw + 1ます。ここで私にとって奇妙なのは、ゼロの欠如がw2「by」相互作用に著しく異なる効果をもたらすことです。 したがって、私の質問は次のとおりです。 モデル3とモデル4の仕様の違いは何ですか?違いをより明確に引き出す他の例はありますか? ここで「by」とは正確には何ですか?私がウッドの本とこのウェブサイトで読んだことの多くは、「by」が相乗効果を生み出すことを示唆していますが、その直観をつかむのに苦労しています。 モデル5とモデル9の間に大きな違いがあるのはなぜですか? Rで書かれたReprexが続きます。 library(magrittr) library(tidyverse) library(mgcv) set.seed(1222) data.ex <- tibble( x = 1:100, w = c(rep(0, 10), 1:20, rep(0, 20), 1:20, rep(0, 30)), w2 = w + 1, y = …
12 r  modeling  gam  mgcv 

2
QQプロットは正常に見えますが、Shapiro-Wilkテストではそうではありません
Rでは、348個の測定値のサンプルがあり、将来のテストのために正規分布であると仮定できるかどうかを知りたいです。 本質的に別のスタックの答えに続いて、私は密度プロットとQQプロットを見ています: plot(density(Clinical$cancer_age)) qqnorm(Clinical$cancer_age);qqline(Clinical$cancer_age, col = 2) 私は統計に強い経験はありませんが、私が見た正規分布の例のように見えます。 次に、シャピロウィルクテストを実行しています。 shapiro.test(Clinical$cancer_age) > Shapiro-Wilk normality test data: Clinical$cancer_age W = 0.98775, p-value = 0.004952 正しく解釈すれば、帰無仮説を拒否しても安全であることがわかります。これは、分布が正規であるということです。 ただし、2つのスタックポストに遭遇しました(こちら、およびこちら)にため、このテストの有用性が大きく損なわれています。サンプルが大きい場合(348は大きいと見なされますか?)、常に正規分布ではないと表示されます。 すべてをどのように解釈すればよいですか?QQプロットに固執し、分布が正規であると仮定する必要がありますか?

1
Rで計算される多変量直交多項式とは何ですか?
点の単変量セットの直交多項式は、そのドット積とペアワイズ相関がゼロになるように、その点に値を生成する多項式です。Rは関数polyで直交多項式を生成できますます。 同じ関数には、多変量点セットで直交多項式を生成する変種polymがあります。とにかく、結果として得られる多項式は、ペアワイズゼロ相関を持つという意味で直交していません。実際、1次多項式は元の変数にすぎないため、元の変数が無相関でない限り、1次多項式は直交しません。 次に、私の質問は次のとおりです。 Rのpolymによって計算される多変量直交多項式とは何ですか?それらは単変量直交多項式の単なる積ですか?彼らは何のために使われますか? 真の多変量直交多項式は存在できますか?それらを簡単に作成する方法はありますか?Rで?実際に回帰で使用されていますか? 更新 スーパープロンカーのコメントに応えて、無相関多項式で私が意味することの一例を挙げます。 > x<-rnorm(10000) > cor(cbind(poly(x,degree=3))) 1 2 3 1 1.000000e+00 -6.809725e-17 2.253577e-18 2 -6.809725e-17 1.000000e+00 -2.765115e-17 3 2.253577e-18 -2.765115e-17 1.000000e+00 Poly関数は、ポイントx(各多項式で10,000ポイント)で評価された直交多項式を返します。異なる多項式の値間の相関はゼロです(数値エラーがあります)。 多変量多項式を使用する場合、相関はゼロとは異なります。 > x<-rnorm(1000) > y<-rnorm(1000) > cor(cbind(polym(x,y,degree=2))) 1.0 2.0 0.1 1.1 0.2 1.0 1.000000e+00 2.351107e-17 2.803716e-02 -0.02838553 3.802363e-02 2.0 2.351107e-17 1.000000e+00 -1.899282e-02 0.10336693 …

1
非線形混合モデル(nlme)の予測の信頼区間
非線形混合nlmeモデルの予測で95%の信頼区間を取得したいと思います。内nlmeでこれを行うための標準は何も提供されていないので、Ben Bolkerの本の章で説明されている「人口予測間隔」の方法を使用するのが正しいかどうか疑問に思いました。適合モデルの分散共分散行列に基づいて固定効果パラメーターをリサンプリングし、これに基づいて予測をシミュレートし、これらの予測の95%パーセンタイルを取得して95%の信頼区間を取得しますか? これを行うためのコードは次のようになります:(ここでは、nlmeヘルプファイルの「Loblolly」データを使用します) library(effects) library(nlme) library(MASS) fm1 <- nlme(height ~ SSasymp(age, Asym, R0, lrc), data = Loblolly, fixed = Asym + R0 + lrc ~ 1, random = Asym ~ 1, start = c(Asym = 103, R0 = -8.5, lrc = -3.3)) xvals=seq(min(Loblolly$age),max(Loblolly$age),length.out=100) nresamp=1000 pars.picked = mvrnorm(nresamp, mu = fixef(fm1), …

1
GBMパッケージとGBMを使用したキャレット
私はを使用してモデルのチューニングを行ってきましたがcaret、gbmパッケージを使用してモデルを再実行しています。caretパッケージが使用gbmし、出力が同じである必要があることは私の理解です。ただし、を使用した簡単なテスト実行でdata(iris)は、評価指標としてRMSEとR ^ 2を使用したモデルで約5%の不一致が示されています。を使用して最適なモデルのパフォーマンスを見つけたいが、部分的な依存関係プロットを利用するためにcaret再実行しgbmます。再現性のために以下のコード。 私の質問は次のとおりです。 1)これらの2つのパッケージは同じであっても違いがあるのはなぜですか(確率的ですが、5%がやや大きな違いであることがわかります。特に、次のような素晴らしいデータセットを使用していない場合 iris、モデリングの) 。 2)両方のパッケージを使用する利点または欠点はありますか? 3)無関係:irisデータセットを使用した場合、最適な値interaction.depthは5ですが、読み取り値が最大値floor(sqrt(ncol(iris)))である2 を超えるはずです。これは厳密な経験則ですか、それとも非常に柔軟ですか。 library(caret) library(gbm) library(hydroGOF) library(Metrics) data(iris) # Using caret caretGrid <- expand.grid(interaction.depth=c(1, 3, 5), n.trees = (0:50)*50, shrinkage=c(0.01, 0.001), n.minobsinnode=10) metric <- "RMSE" trainControl <- trainControl(method="cv", number=10) set.seed(99) gbm.caret <- train(Sepal.Length ~ ., data=iris, distribution="gaussian", method="gbm", trControl=trainControl, verbose=FALSE, tuneGrid=caretGrid, metric=metric, bag.fraction=0.75) …

1
ecdfが線形補間ではなくステップ関数を使用するのはなぜですか?
経験的CDF関数は通常、ステップ関数によって推定されます。これが線形補間を使用するのではなく、そのような方法で行われる理由はありますか?ステップ関数には、それを好む興味深い理論上の特性がありますか? 次に2つの例を示します。 ecdf2 <- function (x) { x <- sort(x) n <- length(x) if (n < 1) stop("'x' must have 1 or more non-missing values") vals <- unique(x) rval <- approxfun(vals, cumsum(tabulate(match(x, vals)))/n, method = "linear", yleft = 0, yright = 1, f = 0, ties = "ordered") class(rval) <- …
12 r  distributions  ecdf 

2
2サンプルの比率検定にlmを使用する
私はしばらくの間、線形モデルを使用して2サンプルの比率テストを実行していましたが、完全に正しいとは限りません。一般化線形モデルと二項族+同一性リンクを使用すると、プールされていない2サンプル比率検定結果が正確に得られるようです。ただし、線形モデル(またはガウスファミリのglm)を使用すると、わずかに異なる結果が得られます。これは、Rが2項対ガウスの家族のglmをどのように解くかによるのかもしれませんが、別の原因があるのでしょうか? ## prop.test gives pooled 2-sample proportion result ## glm w/ binomial family gives unpooled 2-sample proportion result ## lm and glm w/ gaussian family give unknown result library(dplyr) library(broom) set.seed(12345) ## set up dataframe ------------------------- n_A <- 5000 n_B <- 5000 outcome <- rbinom( n = n_A + n_B, …

1
ACF関数の信頼区間はどのように計算されますか?
たとえば、Rでacf()関数を呼び出すと、デフォルトでコレログラムがプロットされ、95%の信頼区間が描画されます。コードを見て、を呼び出すとplot(acf_object, ci.type="white")、次のように表示されます。 qnorm((1 + ci)/2)/sqrt(x$n.used) タイプホワイトノイズの上限として。誰かがこの方法の背後にある理論を説明できますか?なぜ1 + 0.95のqnormを取得してから2で割り、その後、観測数で割りますか?

4
オーディオ録音のピークの数を検出する
オーディオ録音のコーパス内の音節の数を検出する方法を見つけようとしています。良いプロキシは、Waveファイルのピークかもしれません。 英語で話す私のファイルで試してみたものがあります(私の実際の使用例は、キスワヒリ語です)。このサンプル録音のトランスクリプトは、「これはタイマー機能を使用しようとしている私です。一時停止、発声を見ています。」このパッセージには合計22音節があります。 wavファイル:https : //www.dropbox.com/s/koqyfeaqge8t9iw/test.wav? dl=0 seewaveR のパッケージは素晴らしく、いくつかの潜在的な機能があります。まず最初に、waveファイルをインポートします。 library(seewave) library(tuneR) w <- readWave("YOURPATHHERE/test.wav") w # Wave Object # Number of Samples: 278528 # Duration (seconds): 6.32 # Samplingrate (Hertz): 44100 # Channels (Mono/Stereo): Stereo # PCM (integer format): TRUE # Bit (8/16/24/32/64): 16 私が最初に試したのはtimer()関数です。返されるものの1つは、各発声の持続時間です。この関数は7つの発声を識別しますが、これは22音節に相当しません。プロットをざっと見てみると、発声は音節に等しくないことが示唆されています。 t <- timer(w, threshold=2, msmooth=c(400,90), dmin=0.1) …

2
各ポイントに
Iが行わnnn 2つの変数の測定値をxxxとyyy。どちらも不確実性が知られているσxσx\sigma_x及びσyσy\sigma_yそれらに関連します。と関係を見つけたい。どうすればできますか?xxxyyy 編集:各には異なる関連付けられており、でも同じです。xixix_iσx,iσx,i\sigma_{x,i}yiyiy_i 再現可能なRの例: ## pick some real x and y values true_x <- 1:100 true_y <- 2*true_x+1 ## pick the uncertainty on them sigma_x <- runif(length(true_x), 1, 10) # 10 sigma_y <- runif(length(true_y), 1, 15) # 15 ## perturb both x and y with noise noisy_x <- rnorm(length(true_x), true_x, …

1
比率が独立変数である場合、比率を変換する最も適切な方法は何ですか?
私はこの問題を理解したと思っていましたが、今は確信が持てず、先に進む前に他の人に確認したいと思います。 私には2つの変数がXありYます。Yは比率であり、0と1に制限されず、通常正規分布します。Xは割合であり、0と1で区切られます(0.0から0.6まで実行されます)。の線形回帰を実行するY ~ Xと、それが判明しX、Y大幅に線形に関連しています。ここまでは順調ですね。 しかし、その後、さらに調査し、多分Xand Yの関係は線形より曲線的であると考え始めます。私には、それは関係のように見えるXとYに近いかもしれないY ~ log(X)、Y ~ sqrt(X)またはY ~ X + X^2、またはそのような何か。関係が曲線的であると仮定する経験的理由がありますが、ある非線形関係が他より優れていると仮定する理由はありません。 ここから関連する質問がいくつかあります。最初に、X変数は4つの値(0、0.2、0.4、および0.6)を取ります。これらのデータを対数変換または平方根変換すると、これらの値の間隔がゆがんで、0の値が他のすべての値からはるかに離れます。より良い質問方法がないため、これは私が望むものですか?そうではないと思います。なぜなら、私が受け入れる歪みのレベルに応じて非常に異なる結果が得られるからです。これが私が望むものではない場合、どうすればそれを避けるべきですか? 第二に、これらのデータを対数変換Xするには、0の対数を取ることができないため、各値にいくらかの量を追加する必要があります。より多く、たとえば1を追加しても、歪みはほとんどありません。X変数に追加する「正しい」量はありますか?または、代替の変換(キューブルートなど)またはモデル(ロジスティック回帰など)を選択する代わりに、変数に何かを追加することは不適切Xですか? この問題に関して私が見つけられたことはほとんどないので、慎重に踏み込む必要があると感じています。仲間のRユーザーの場合、このコードは、私のものと同様の構造を持つデータを作成します。 X = rep(c(0, 0.2,0.4,0.6), each = 20) Y1 = runif(20, 6, 10) Y2 = runif(20, 6, 9.5) Y3 = runif(20, 6, 9) Y4 = runif(20, 6, 8.5) Y = c(Y4, Y3, Y2, Y1) …

1
ポアソンモデルと準ポアソンモデルで推定された同一の係数
保険環境で請求件数データをモデル化する際に、私はポアソンから始めましたが、その後、過剰分散に気付きました。準ポアソンは、基本的なポアソンよりも大きい平均分散関係をよりよくモデル化しましたが、係数はポアソンモデルと準ポアソンモデルの両方で同一であることに気付きました。 これがエラーでない場合、なぜこれが起こっているのですか?ポアソンよりも準ポアソンを使用する利点は何ですか? 注意事項: 根本的な損失は過剰ベースであり、それが(私は)Tweedieの動作を妨げました-しかし、それは私が試した最初の分布でした。また、NB、ZIP、ZINB、およびハードルモデルを調べましたが、それでもQuasi-Poissonが最適であることがわかりました。 AERパッケージのdispersiontestを使用して過分散をテストしました。私の分散パラメーターは約8.4で、p値は10 ^ -16の大きさでした。 family = poissonまたはquasipoissonでglm()を使用し、コードのログリンクを使用しています。 ポアソンコードを実行すると、「In dpois(y、mu、log = TRUE):non-integer x = ...」という警告が表示されます。 Benのガイダンスによる有用なSEスレッド: ポアソン回帰におけるオフセットの基本的な数学 係数のオフセットの影響 共変量としての露出とオフセットの使用の違い

4
glmerでのランダム効果の分散の解釈
データが二項分布である受粉に関する論文を改訂しています(果実は成熟するかしないか)。そのためglmer、1つのランダム効果(個々の植物)と1つの固定効果(治療)を使用しました。レビューアーは、植物が結実に影響を与えたかどうかを知りたいのですが、glmer結果の解釈に問題があります。 私はウェブを読んでみましたが、直接比較glmとglmerモデルに問題がある可能性があるので、私はそれをしていません。この質問に答える最も簡単な方法は、変量効果の分散(1.449、以下)を総分散、または処理によって説明される分散と比較することだと考えました。しかし、これらの他の分散をどのように計算しますか?以下の出力には含まれていないようです。二項glmer分布に含まれない残差分散について何かを読みました-ランダム効果の相対的な重要性をどのように解釈しますか? > summary(exclusionM_stem) Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) [glmerMod] Family: binomial ( logit ) Formula: cbind(Fruit_1, Fruit_0) ~ Treatment + (1 | PlantID) AIC BIC logLik deviance df.resid 125.9 131.5 -59.0 117.9 26 Scaled residuals: Min 1Q Median 3Q Max -2.0793 -0.8021 -0.0603 0.6544 …

2
負の値を対数に変換する方法は?
Log()異分散データがあるため、負の値をに変換する方法を知りたいです。私はそれが式で動作することを読みましたLog(x+1)が、これは私のデータベースでは動作せず、結果としてNaNを取得し続けます。たとえば、この警告メッセージが表示されます(負の値のいずれかで例を示すのに十分だと思うため、完全なデータベースを配置しませんでした)。 > log(-1.27+1) [1] NaN Warning message: In log(-1.27 + 1) : NaNs produced > 前もって感謝します 更新: これが私のデータのヒストグラムです。化学測定の古生物学の時系列で作業しています。たとえば、CaとZnなどの変数の差が大きすぎる場合、何らかのタイプのデータ標準化が必要ですlog()。そのため、関数をテストしています。 これは私の生データです
12 r  logarithm 

1
すべての可能なペアを使用して正規混合分布を作成する密度推定法の名前は何ですか?
私はちょうど一次元の密度推定値を作成するきちんとした(必ずしも良いとは限りません)方法を考えました、私の質問は: この密度推定方法には名前がありますか?そうでない場合、それは文献の他の方法の特殊なケースですか? ここでの方法である:我々は、ベクターが有するX=[x1,x2,...,xn]X=[x1,x2,...,xn]X = [x_1,x_2,...,x_n]は、推定したい未知の分布から引き出されたと仮定します。これを行う方法は、すべての可能な値のペアを取得し、各ペアに対してを最尤法を使用して正規分布に適合させることです。結果の密度推定値は、結果のすべての法線で構成される混合分布になり、各法線には同じ重みが与えられます。XXX[xi,xj]i≠j[xi,xj]i≠j[x_i,x_j]_{i \neq j} 次の図は、ベクトルこのメソッドを使用する方法を示しています。ここで、円はデータポイント、色付きの法線は可能な各ペアを使用して推定された最尤分布、太い黒線は結果の密度推定(混合分布)を示しています。[−1.3,0.15,0.73,1.4][−1.3,0.15,0.73,1.4][-1.3,0.15,0.73,1.4] ところで、結果の混合分布からサンプルを引き出すRのメソッドを実装するのは本当に簡単です。 # Generating some "data" x <- rnorm(30) # Drawing from the density estimate using the method described above. density_estimate_sample <- replicate(9999, { pair <- sample(x, size = 2) rnorm(1, mean(pair), sd(pair)) }) # Plotting the density estimate compared with # the …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.