楼主: foreseer201
8572 5

[问答] 单样本T检验的样本量影响 [推广有奖]

  • 0关注
  • 0粉丝

本科生

87%

还不是VIP/贵宾

-

威望
0
论坛币
1666 个
通用积分
5.4017
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1025 点
帖子
70
精华
0
在线时间
137 小时
注册时间
2007-4-15
最后登录
2022-3-30

楼主
foreseer201 发表于 2011-12-12 17:59:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
看到过T检验适合小样本量的说法,尤其是对30以下的样本量。
按照谢老大的一个图示例子,照猫画虎做了个图形验证这个结论。
验证单样本T检验,思路如下:
1、随机生成10000个均值为1的数据;
2、将样本量i从10到1000循环,从10000个总数据中抽取i个数据并进行均值为1的T检验,针对每个i做10次取检 验p值的平均数;
3、记录样本量i和对应平均p值的对应编写,并画散点图。
从第一个图看出,样本量对检验的结果并没有很大的影响。
而传入检验的均值参数不是1:以0.9、0.8、0.7、0.6,直到0.6时才有显著的效果。
如第二图所示,但也是在样本量较大的时候,p值都表现在0.05的拒绝线以下。小样本中很多犯了取伪错误。
多运行几次0.6的效果不一(0.05线以下的点数),但总体都是大样本好于小样本。
自己从两图得出的结论是,T检验并不是小样本量的时候效果很好。有两个问题请教大家:
1、不知道这个验证靠谱不,在思路或基本概念上有没有很大的问题。
2、程序中用到了个for循环,因为循环体内的部分用到了计数i,用不了replicate。这种显式循环能有别的办法 替代么。
谢谢 ~~
代码如下
  1. myTtest <- function(mean_t, mean_v) {
  2.   base <- rnorm(10000, mean = mean_t, sd = runif(1, 2, 5))
  3.   x <- c(0)
  4.   y <- c(0)
  5.   for (i in 10 : 1000) {
  6.     x <- append(x, i, after = length(x))
  7.     pTmp <- replicate(10, {
  8.       x1 <- sample(base, i)
  9.       t.test(x1, mu = mean_v, alternative = "two.side")$p.value
  10.     })
  11.     y <- append(y, mean(pTmp), after = length(y))
  12.   }
  13.   t_test <- data.frame(points = x, pval = y)
  14.   t_test <- subset(t_test, points > 0)
  15.   
  16.   plot(t_test, col = rgb(0, 0, 1, 0.6))
  17.   abline(h = 0.05, v = 30, col = "red")
  18. }
  19. myTtest(1, 1)
  20. myTtest(1, 0.6)
复制代码

ttest.JPG

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:单样本t检验 单样本 t检验 样本量 replicate 检验 样本 影响

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
xiaobing212 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

沙发
jacosis 发表于 2011-12-12 21:13:12
楼主的代码框是怎么弄上去的?

藤椅
foreseer201 发表于 2011-12-13 09:33:06
"[代码][/代码]"
放在这两个标签中间。使用时中文汉字“代码”用"code"代替

板凳
xiaobing212 发表于 2011-12-14 01:34:25
t_test <- subset(t_test, points > 0)
为什么要加这一句呢?x应该都是正的吧?楼主能讲解一下么

报纸
foreseer201 发表于 2011-12-15 10:02:42
t_test <- subset(t_test, points > 0)
这句是为了去掉那个(0,0)的点,就是下面这两句初始化时赋值的0.
x <- c(0)
y <- c(0)

x除了初始化的这个数之外都比零大的,去掉纯粹是为了图上少个碍眼的点。没什么大的用处,呵呵。

根据COS上益辉的回复,对t检验来说,这样纵向比较的情况下,大样本比小样本“好”几乎是肯定得。
所谓的t样本适合小样本,应该是同样小样本量的情况下,t检验跟别的什么方法横向比较才行。。。

地板
注册吧 发表于 2012-4-4 21:37:08
kankan................
纸上得来终觉浅,绝知此生要躬行

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-20 13:46