5

コードでこのエラーが発生しました

Error in t.test.default(dat$Value, x[[i]][[2]]) : 
  not enough 'y' observations

このエラーが発生した理由は、値が1つしかないデータ(平均値やsdがない)と値が20のデータに対してt.testを実行しているためだと思います。これを回避する..十分なy観測値がないデータを無視できる方法はありますか?ifループが機能するかもしれないように...plsヘルプ

したがって、t.testを実行する私のコードは

t<- lapply(1:length(x), function(i) t.test(dat$Value,x[[i]][[2]]))

ここで、xは次のようなカット形式のデータです。

cut: [3:8)
        Number   Value
3       15        8
4       16        7
5       17        6
6       19        2.3
this data goes on 
cut:[9:14)
      Number   Value
7     21        15
cut:[13:18) etc
      Number    Value
8     22        49
9     23        15
10    24        13

上記の例のように、値が1つしかない「cuts」を無視するにはどうすればよいですか。「cut [9:14)」には値が1つしかありません。

4

1 に答える 1

4

t検定のすべての標準バリアントは、式で標本分散を使用します。n-1で​​除算しているため、1つの観測値からそれを計算することはできません。ここで、nは標本サイズです。

これはおそらく最も簡単な変更ですが、サンプルデータを提供しなかったためテストできません(dputデータを質問に当てはめることができます)。

 t<- lapply(1:length(x), function(i){
     if(length(x[[i]][[2]])>1){
       t.test(dat$Value,x[[i]][[2]]) 
     } else "Only one observation in subset" #or NA or something else
     })

別のオプションは、で使用されるインデックスを変更することですlapply

ind<-which(sapply(x,function(i) length(i[[2]])>1))
t<- lapply(ind, function(i) t.test(dat$Value,x[[i]][[2]]))

人工データを使用した最初のケ​​ースの例を次に示します。

x<-list(a=cbind(1:5,rnorm(5)),b=cbind(1,rnorm(1)),c=cbind(1:3,rnorm(3)))
y<-rnorm(20)

t<- lapply(1:length(x), function(i){
     if(length(x[[i]][,2])>1){ #note the indexing x[[i]][,2]
       t.test(y,x[[i]][,2]) 
     } else "Only one observation in subset"
     })

t
[[1]]

        Welch Two Sample t-test

data:  y and x[[i]][, 2] 
t = -0.4695, df = 16.019, p-value = 0.645
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -1.2143180  0.7739393 
sample estimates:
mean of x mean of y 
0.1863028 0.4064921 


[[2]]
[1] "Only one observation in subset"

[[3]]

        Welch Two Sample t-test

data:  y and x[[i]][, 2] 
t = -0.6213, df = 3.081, p-value = 0.5774
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -3.013287  2.016666 
sample estimates:
mean of x mean of y 
0.1863028 0.6846135 


        Welch Two Sample t-test

data:  y and x[[i]][, 2] 
t = 5.2969, df = 10.261, p-value = 0.0003202
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 3.068071 7.496963 
sample estimates:
mean of x mean of y 
5.5000000 0.2174829 
于 2013-03-27T10:43:38.317 に答える