0

我从 R 中的标准正态分布创建了一个大小为 n=20 的 iid 随机样本。我有一个 m=10^5 场景的蒙特卡罗模拟。我试图找出样本的过度峰度介于 -1.5 和 1.5 之间的概率。到目前为止,我有这个代码:

set.seed(1234)
n<-10
m<-10^5

sample.normal<- rep(0,m)
for(i in (1:m)){
x<-rnorm(n,0,1)
sample.normal[i]<-kurtosis(x,na.rm=FALSE)-3
}

#finding p(-1.5<y2<1.5)
y<-sample.normal
Z<-ecdf(y)
Z(1.5)-Z(-1.5)

但是,现在我想将样本大小更改为 n=10 和 n=200 之间的值范围,以显示随着样本大小的增加,更多值介于 -1.5 和 1.5 之间。所以我想在 10,20,30,40....200 处计算 Z(1.5)-Z(-1.5) (记住 m=10^5)(我最终用更大的样本量证明了这一点, 过度峰态趋向于零的标准正态) 我如何使用循环或不同的方法来做到这一点?任何建议,将不胜感激。


将此处的整个代码添加到您的 php 片段插件中,感谢@kacholo,它会像魅力一样工作

/**
 * Replace add to cart button in the loop.
 */
function iconic_change_loop_add_to_cart() {
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
    add_action( 'woocommerce_after_shop_loop_item', 'iconic_template_loop_add_to_cart', 10 );
}

add_action( 'init', 'iconic_change_loop_add_to_cart', 10 );

/**
 * Use single add to cart button for variable products.
 */
function iconic_template_loop_add_to_cart() {
    global $product;

    if ( ! $product->is_type( 'variable' ) ) {
        woocommerce_template_loop_add_to_cart();
    return;
    }

remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
    add_action( 'woocommerce_single_variation', 'iconic_loop_variation_add_to_cart_button', 20 );

    woocommerce_template_single_add_to_cart();
}

/**
 * Customise variable add to cart button for loop.
 *
 * Remove qty selector and simplify.
 */
  function iconic_loop_variation_add_to_cart_button()
{
    global $product;

    ?>
    <div class="woocommerce-variation-add-to-cart variations_button">
        <button   type="submit" class="custom_add_to_cart single_add_to_cart_button button"><?php echo esc_html($product->single_add_to_cart_text()); ?></button>
        <input type="hidden" name="add-to-cart" value="<?php echo absint($product->get_id()); ?>" />
        <input type="hidden" name="product_id" value="<?php echo absint($product->get_id()); ?>" />
        <input type="hidden" name="variation_id" class="variation_id" value="0" />
    </div>
    <?php
}
function iconic_add_to_cart_form_action( $redirect ) {
    if ( ! is_archive() ) {
        return $redirect;
    }

    return '';
}
add_filter( 'woocommerce_add_to_cart_form_action', 'iconic_add_to_cart_form_action' );
add_action('wp_footer', 'myScript');

function myScript()
{
    ?>
<script>

    jQuery(document).ready(function ($) {
"use strict";

$('.custom_add_to_cart').click(function (e) {
    e.preventDefault();
    var id = $(this).next().next().next().attr('value');
    var data = {
    product_id: id,
    quantity: 1
    };
    $(this).parent().addClass('loading');
    $.post(wc_add_to_cart_params.wc_ajax_url.toString().replace('%%endpoint%%', 'add_to_cart'), data, function (response) {

    if (!response) {
        return;
    }
    if (response.error) {
        alert("Custom Massage ");
        $('.custom_add_to_cart').parent().removeClass('loading');
        return;
    }
    if (response) {

        var url = woocommerce_params.wc_ajax_url;
        url = url.replace("%%endpoint%%", "get_refreshed_fragments");
        $.post(url, function (data, status) {
        $(".woocommerce.widget_shopping_cart").html(data.fragments["div.widget_shopping_cart_content"]);
        if (data.fragments) {
            jQuery.each(data.fragments, function (key, value) {

            jQuery(key).replaceWith(value);
            });
        }
        jQuery("body").trigger("wc_fragments_refreshed");
        });
        $('.custom_add_to_cart').parent().removeClass('loading');

    }

    });

});
});
        </script>
    <?php
}

4

1 回答 1

3

如果您想将代码自动化为 的其他值n,则以下函数可简化模拟,然后在sapply循环中调用它n = 10, 20, ..., 200

请注意,其中一个参数是rdist, 带有默认值rnorm。如果要将参数传递给 RNG 函数,请rdist使用点...参数。

library(e1071)

set.seed(1234)

simKurtosis <- function(n, m = 10^5, rdist = rnorm, ...){
  y <- replicate(m, kurtosis(rdist(n, ...)) - 3)
  Z <- ecdf(y)
  Z(1.5) - Z(-1.5)
}

ex_kurt <- sapply(seq(10, 200, by = 10), simKurtosis)
于 2018-11-02T18:55:32.847 回答