回复:计算脚本中的 p 值这里有几件事:
- 该脚本正在根据批判的t 值(在第一行计算)而不是观察到的t 值。 后者是均值差除以差值的标准误差。
- t Distribution() 调用正在计算小于 t 值的分布比例,这不是您要查找的 p 值。 计算双尾 p 值需要此处的一些简单算术(参见示例)。
如果我们可以假设数据表在它们自己的列中至少具有按组样本大小、均值和标准差,那么这里有一些 JSL 可以满足您的需求。 在随附的示例表上试用。 请注意,我已经包含了计算合并标准偏差列的中间步骤,以提高 t 值列公式的可读性。
Names Default to Here( 1 );
dt = Data Table( "Example.jmp" );
dt << New Column( "Pooled stdev",
Numeric,
Continuous,
Format( "Fixed Dec", 15, 3 ),
Formula(
Sqrt( ((:Group A n - 1) * :Group A stdev ^ 2 + (:Group B n - 1) * :Group B stdev ^ 2) / (:Group A n + :Group B n - 2) )
)
);
dt << New Column( " t-Value",
Numeric,
Continuous,
Format( "Fixed Dec", 15, 3),
Formula(
(:Group A mean - :Group B mean) / (:Pooled stdev * Sqrt( 1 / :Group A n + 1 / :Group B n) )
)
);
dt << New Column( "p-Value",
Numeric,
Continuous,
Format( "Fixed Dec", 15, 3 ),
Formula(
( 1 - t Distribution( Abs( :"t-Value"n ), :Group A n + :Group B n - 2 ) ) * 2
)
);
回复:计算脚本中的 p 值嗨罗斯,
谢谢你的回复,这个怎么样
dt5 << New Column( "Difference in Mean", Numeric, Continuous, Format( "Fixed Dec", 15, 3 ), Formula( :"Mean(Data) VPP"n - :"Mean(Data) Commercial"n ) );
dt5 << New Column( "Pooled Std Dev", Numeric, Continuous, Format( "Fixed Dec", 15, 3 ), Formula( sqrt(((:"N(Data) VPP"n - 1)* :"Std Dev(Data) VPP"n ^ 2 + (:"N(Data) Commercial"n - 1) * :"Std Dev(Data) Commercial"n ^ 2 ) / (:"N(Data) VPP"n + :"N(Data) Commercial"n - 2)))) ;
dt5 << New Column( "Lower 90% Confidence Interval", Numeric, Continuous, Format( "Fixed Dec", 15, 3 ), Formula( (:"Mean(Data) VPP"n - :"Mean(Data) Commercial"n ) - t Quantile (0.95,:"N(Data) VPP"n + :"N(Data) Commercial"n -2) * (:Pooled Std Dev * sqrt(( 1/:"N(Data) VPP"n) + (1/:"N(Data) Commercial"n )) )));
dt5 << New Column( "Upper 90% Confidence Interval", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula( (:"Mean(Data) VPP"n - :"Mean(Data) Commercial"n ) + t Quantile (0.95,:"N(Data) VPP"n + :"N(Data) Commercial"n -2) * (:Pooled Std Dev * sqrt(( 1/:"N(Data) VPP"n) + (1/:"N(Data) Commercial"n )) )));
dt5 << New Column( "Pooled Variance", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula(:Pooled Std Dev ^ 2));
dt5 << New Column(" Std Error for t-Value", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula(sqrt (:Pooled Variance * ( 1/:"N(Data) VPP"n + 1/ :"N(Data) Commercial"n ) )));
dt5 << New Column(" t-stat", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula((Abs (:"Mean(Data) VPP"n - :"Mean(Data) Commercial"n - 0)) / :"Std Error for t-Value"n));
dt5 << New Column( "one tail p-Value", Numeric, Continuous, Format( "Fixed Dec", 15, 4), Formula(1 - t Distribution (:"t-stat"n,:"N(Data) VPP"n + :"N(Data) Commercial"n - 2 )));
dt5 << New Column( "two tail p-value", Numeric, Continuous, Format( "Fixed Dec", 12, 4 ),Formula( :"one tail p-Value"n * 2 ));
回复:计算脚本中的 p 值我还没有详细了解每个方程式,所以一定要自己仔细检查所有内容。 但话虽如此,我只发现一件事你可能想要改变:t 统计量的公式采用均值差异的绝对值,这意味着你的 t 统计量在它应该出现的时候总是会出现正数任何时候 VPP 均值低于商业均值时为负。 我在示例中使用 Abs() 函数只是为了确保无论 t 统计量的符号如何都能正确计算 p 值。 您可能也想这样做。
回复:计算脚本中的 p 值再次感谢罗斯,非常感谢
回复:计算脚本中的 p 值感谢您的解决方案。
在脚本中计算 p 值大家好,
我知道我在这里做错了什么,但我现在看不到它,我想要双尾 p 值来表示两种方法的差异,并且正在使用以下脚本
dt5 << New Column(" t-Value", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula( t Quantile (0.95,:"N(Data) VPP"n + :"N(Data) Commercial"n -2)));
dt5 << New Column( "p-Value", Numeric, Continuous, Format( "Fixed Dec", 15, 3), Formula( t Distribution (:"T-Value"n,:"N(Data) VPP"n + :"N(Data) Commercial"n - 1 )));谁能提供一些建议。
谢谢,
米克.
自动化和脚本编写消费者和市场研究回复:在脚本中计算 p 值计算 t 统计量时无需取均值差的绝对值。 标准 t 检验计算中不使用绝对值,因为它会丢失有关差异方向的信息,而这对于结果的解释很重要。 如果第一组的均值低于第二组的均值,则 t 统计量自然会为负,并且这在不使用绝对值的计算中得到了正确反映。